第一篇 基础概念
第一章 知识体系概述
1.1基础部分
上图为各章涉及的核心内容,用于快速地了解本书知识体系的结构、内容、用途以及使用方法。
1.1.1 三个知识体系(3个体系)
构建企业管理信息系统过程中,需要涉及三个大的知识体系,即业务知识体系、设计知识体系、开发知识体系,这三个知识体系提供了管理信息系统实现过程中需要的理论、方法、工具和标准等内容。
1、业务知识体系
业务知识体系,是指需要导入管理信息系统的客户所从事行业的业务知识。软件实现的过程是从理解客户业务和相关知识开始的,理解和掌握客户业务知识是理解客户需求和优化客户业务的基础。客户业务知识可以粗略地分为两个方面:个性化业务知识和共性化业务知识。
2.设计知识体系
设计知识体系,是将客户需求转变为软件陈述过程所需要的知识,软件的设计知识体系可以分为两大部分:一是业务设计/应用设计部分、二是技术设计部分。
第一阶段是业务设计(业务优化等);第二阶段是应用设计(系统的应用),这个部分的成果是将客户需求用标准化的业务和应用形式呈现出来,技术设计部分知识,是将前面业务设计/应用设计成果转换为技术设计形式所需要的知识。
3.开发知识体系
开发知识体系是用来指导软件实现(编程)工作的,其主要内容包括关于编码、测试等(可以理解为软件的“制造过程”)工作需要的知识。
4.三个知识体系的关系
这三个知识体系是相互关联和促进的,设计知识体系起到了承前继后的作用,设计知识体系中包含的三个阶段(需求、业务&应用和技术)之间也有前后传递、继承的关系,有了这样相互作用、继承的知识体系才能够保证信息系统可以高质量、顺利地完成实现过程。
1.1.2 三个基础原理(3个原理)
三个基本的原理(分离原理、组合原理与基干原理),它们是理解、分析和设计企业管理信息系统的方法,也是从一个更高的层次去理解研究对象,并获得高水平的分析和设计成果的底层逻辑思想。
1.分离原理
分离原理即把一个大的复杂的研究对象拆分为若干个相对小的且易于研究的要素。
2.组合原理
组合原理主要用于对业务的架构设计。
3.基干原理
基干原理主要给出了在应用设计阶段如何实现产品复用的设计依据。
1.2 软件工程
1.2.1 定义与框架
1.软件工程的定义
将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件。
2.软件工程的框架
1)需求工程(需求调研、需求分析)
选取需求工程中“需求调研”和“需求分析”这两个部分,它们是需求工程中产生需求的主要实操部分,这两个部分的交付成果与后续设计工程是继承关系,它们是后续设计工程的输入,设计工程是依据它们进行的,它们的交付物必须是定性和定量的,必须是采用可以传递、继承的标准模板进行。
2)设计工程(业务设计、应用设计)
设计工程以业务设计与应用设计为核心。
(1)业务设计。
明确地给出业务设计的定义、在软件工程中的位置和作用,它既不等于“需求设计”,也不是“技术设计”,它是站在客户视角对客户业务的优化和完善,由概要设计和详细设计两部分构成。业务设计的最终目标是提升客户的业务价值。
(2)应用设计。
明确地给出应用设计的定义、在软件工程中的位置和作用,它既不等于“UI设计”,也不是简单的“客户体验设计”,它是对信息化环境下企业管理方式的提案和设计,应用设计的最终目标是提升客户的应用价值。
1.2.2 工程分解(横轴)
1.需求工程
需求工程内部由两个阶段构成:需求调研阶段和需求分析阶段。
1)需求调研收集客户对构建信息系统的具体需求(高端需求已在管理咨询中获取),需求主要来自于企业的决策层、管理层、执行层,最终形成需求调研资料汇总。
2)需求分析对管理咨询和需求调研收集到的需求进行梳理、分析,确定未来必须要实现的功能需求,最终形成需求规格说明书,它是后续设计、开发、测试以及客户验收等的依据。
2.设计工程
设计工程由两大部分构成:业务设计和应用设计。
1)业务设计——概要设计
基于需求分析的成果,对未来业务的整体进行规划,并制定设计的理念、主线、原则、标准等,概要设计的成果形成概要设计规格书。
2)业务设计——详细设计
基于概要设计的成果,对概要设计规格书中的内容进行逐一的细节层面的定义、设计,到此,与业务相关的设计内容全部确定,详细设计的成果形成详细设计规格书。
3)应用设计
将前面的业务设计成果转换为用系统形式表达,并确定开发完成后的使用效果,至此,完成了全部的应用设计内容,应用设计的成果形成应用设计规格书。
1.2.3 工作分解(纵轴)
1.需求工程
需求工程由于调研和分析难以进行工程化的分解,所以没有对调研和分析的过程进行分解,而是对调研和分析的结果进行了划分。需求调研和需求分析的主要成果分类如下。
● 需求调研结果:现状构成(图)、访谈记录(文)、既存表单(表)。
● 需求分析结果:目标需求、业务需求、功能需求。
2.设计工程
从需求工程进入到设计工程后,每个设计阶段(概要、详细、应用)的内容都包含三个层,即:架构层、功能层和数据层,所有设计工作都是围绕着这三层进行的。
1)架构层
架构层,是对研究对象进行粗粒度的设计,架构层的工作包括对业务整体的顶层规划,确定范围、边界、静态和动态的构成,以及向系统架构的转换。
2)功能层
功能层,是对用户操作界面的设计,基于架构的设计成果,规划界面、定义数据、确定操作方式、制定规则,以及功能在系统中的操作机制。
3)数据层
数据层,对企业的数据进行整体的规划、架构和详细设计,确定业务编号规则、主数据构成、数据逻辑,以及在系统中数据的复用、共享机制等。
1.2.4 工程与工作的分解区别
在设计工程部分,三个阶段(概要、详细和应用)与三个层(架构、功能和数据)形成了3×3的矩阵,横向是工程分解,纵向是工作分解
1.工程分解(横轴)
工程分解的三个阶段负责将客户的原始需求转换为最终的软件开发依据,每个阶段对需求都进行了不同目的的“加工”,例如,业务设计阶段通过粗加工(概要设计)和细加工(详细设计)完成了对业务层面的设计;最后再将业务设计成果转为系统的形式(应用设计),至此,就完成了从客户的原始需求到系统应用形式的设计全过程。
2.工作分解(纵轴)
在工程分解的每个阶段内都要对设计对象进行同样的三个层面的“加工”,工作分解从架构层、功能层到数据层,这也是从粗到细的设计过程。
1.2.5 面向过程与面向对象
在业务设计部分中(概要、详细)使用的方法接近于面向过程的方法,在应用设计部分中使用的方法接近于面向对象的方法。
参考1:面向过程的方法
面对企业管理类的课题,通常对于一个业务设计师来说是很难开始就从功能或是数据层面进行分析的,对他而言,初期与客户讨论时,讨论对象的粒度是经营、销售、采购、合同、投标、销售等,这样的一个词本身可能就代表一个系统,对这个词需要进行拆分若干层后才会出现数据,因此不能开始就从最细的数据粒度开始做数据流图,因为第一搞不清楚数据,第二容易从开始就陷入到细节中去,而是要以经营、销售等粗粒度的对象为节点,绘制业务逻辑图(业务架构图),这样的从粗到细易于与客户的高层进行交流、确认。面对企业管理类型的信息系统,采用以业务逻辑关系表达为主的方法首先理清楚现状、业务逻辑、变化规律、范围、边界之后,再采用面向对象的方法进行细节的建模、分析、设计,不但可以降低初期研究的难度,而且可以有效地避免发生研究偏离目标的问题。
参考2:面向对象的方法
由于通过对业务过程的分析充分地理解了业务构成、业务逻辑以及变化规律,这样就可以设计出稳定的面向对象的模型。如组合原理(黑/白盒、高内聚/低耦合等)、功能的业务设计和应用设计(模块化、组件化、构件等)。
1.3 知识框架的构成
1.3.1 知识体系框架
1.结构化表格形式
结构化的知识体系一定可以用表格来呈现,知识体系采用的是一个二维表。
● 列的名称(一):软件工程的工程分解(需求工程、设计工程)。
● 行的名称(二):软件工程的工作分解(架构、功能、数据),以及综合设计内容。
● 中间内容(三):主要知识提要。
2.分解图形式
结构化的知识体系同样也可以用分解图形式来(横向结构图)呈现,分解图可以用线将各个阶段之间、分层之间的作业内容,交付物之间的关联关系表达出来,相对于结构化表格形式的静态而言,分解图更容易找出它们之间内容的传递关系。
小结
● 三个知识体系:业务、设计、开发(设计是重点)。
● 三个基础原理:分离原理、组合原理、基干原理。
● 两个软件工程:需求工程、设计工程。
● 设计工程——工程分解(3阶段):概要设计、详细设计、应用设计。
● 设计工程——工作分解(3分层):架构层、功能层、数据层。
1.需求工程
客户的需求来源于不同的行业、不同的企业、不同的领域以及不同的工作岗位,所以可以认为行业的范围是无限多的。
2.设计工程(业务、应用)
通过分析、设计,将业务形态进行抽提、归集,在完成了分析与设计工作后,无论有多少业务形式,其结果都被归集为架构、功能和数据的三层内容,此部分是从行业的原始需求到软件开发过程中收敛贡献幅度最大的部分,不但要解决业务优化的问题,它同时也是决定功能是否能够复用的重要设计一环。
3.设计工程(技术)
将设计工程(业务、应用)的设计成果进一步地进行抽提、收敛后,全部转换为技术的表达形式,如控件、接口、数据库等,可以看出,此部分相对于设计工程(业务、应用)又进行了进一步的收敛,但是收敛幅度已经减少,此部分的收敛幅度越小,说明设计工程(业务、应用)的作用越大,将来在实现功能的复用、提升系统的应变能力方面的效果就越好。此部分的工作使得设计成果完全符合开发编码的标准要求。
4.开发工程(技术)
由于前述分析设计的收敛效果,开发工程就相对地比较容易了,因为不论什么样的业务都被归纳为有限的形态。特别是在使用开发平台技术进行开发时,设计工程(业务、应用)和设计工程(技术)起的作用越大,变化就越少,用有限的开发功能就可以完成开发工作,开发效率提高、成本降低。