大话软件工程:需求分析与软件设计
上QQ阅读APP看书,第一时间看更新

1.1 基础部分

1.1.1 三个知识体系

构建企业管理信息系统过程中,需要涉及三个大的知识体系,即业务知识体系、设计知识体系、开发知识体系,这三个知识体系提供了管理信息系统实现过程中需要的理论、方法、工具和标准等内容。三种知识的内容和关系如图1-2所示。

图1-2 三个知识体系的关系

1.业务知识体系

1)内容

业务知识体系,是指需要导入管理信息系统的客户所从事行业的业务知识。软件实现的过程是从理解客户业务和相关知识开始的,理解和掌握客户业务知识是理解客户需求和优化客户业务的基础。客户业务知识可以粗略地分为两个方面:个性化业务知识和共性化业务知识。两种业务知识的不同和关系如图1-3所示。

图1-3 主营、辅营及管理知识

(1)个性化业务知识。

个性化业务知识是指客户所从事行业特有的业务知识,如建筑行业、汽车制造行业、纺织行业、物流行业、教育行业等,它们是不同的行业,每个行业所用的业务知识是不同的,这些内容大都是该客户的经营主体。一般来说,建筑企业的主营业务是建筑,汽车企业的主营业务是汽车(当然,现在的企业可能同时具有多个主营业务),这些知识在企业中都是直接产生价值的部门所使用的,这些部门的业务工作也被称为“主营业务”。

(2)共性化业务知识。

不论主营业务从事的是什么行业,对于企业的运营来说都必须要用到以下业务知识,如财务管理知识、人资管理知识、后勤管理知识等,使用这些知识的部门在企业中主要是对主营业务进行辅助支持和管理的,这些部门的业务工作也被称为“辅营业务”。

(3)关于管理知识。

对企业资源进行组织、协调等所使用的是“管理知识”,它与业务知识不同,它是协助完成业务的知识,如项目管理、阿米巴管理等。一般站在软件企业的视角泛指客户的业务知识时,管理知识可以包含在业务知识中,但是在进入到具体的业务分析与设计工作时,需要将业务与管理的知识进行区分,它们各自使用的理论、方法和标准都是不同的,因此业务与管理的实现方法也是不同的,有关内容详见第2章。

2)作用

构建企业管理信息系统,必须要掌握客户所从事的业务知识和相关的管理知识等,这些知识是分析需求、优化业务,以及设计信息化管理方式的基础,掌握这些知识就可以让从事分析与设计的工程师成为“内行”,如果不掌握这些知识就是外行,无法用信息化手段为客户进行业务优化。掌握业务知识的工程师对客户的业务是“知其然,也知其所以然”,因此做出来分析与设计成果的质量就高。不掌握这些知识的工程师就是“知其然,不知其所以然”,他们做出来的分析与设计成果的质量一定差。因此,对客户从事行业的相关知识掌握得越全面、越深入,就越有可能给出优秀的信息化设计方案。

区分这三种知识(参见图1-3中的①、②和③)的作用在于帮助读者理解所谓的“业务”内涵,同时在学习业务知识时可以做到既有重点又兼顾全面,例如:

● 某个行业的主营知识(如建筑),它只是一个行业的个性化知识;

● 辅营业务知识在各个行业基本上都是共通的(尽管不同行业和企业之间有些差别);

● 管理知识的共性化就更加显著一些,例如,项目管理的理论和方法,不论在任何的行业它的理论和方法基本上都是一样的。

3)来源

业务知识(企业的主营知识、辅营知识)和管理知识,主要来源于学校的教育、书籍、实践、培训、咨询、调研等途径。业务知识对于从事分析与设计的读者来说是基础知识,需要自行学习掌握至少一个行业或是一个领域的业务知识,以及一定的管理知识。

2.设计知识体系

1)内容

设计知识体系,是将客户需求转变为软件陈述过程所需要的知识,软件的设计知识体系可以分为两大部分:一是业务设计/应用设计部分、二是技术设计部分。

(1)业务设计/应用设计部分知识。

这部分的知识是用来指导软件设计过程的前半部分工作,内容包括两阶段:第一阶段是业务设计(业务优化等);第二阶段是应用设计(系统的应用),这个部分的成果是将客户需求用标准化的业务和应用形式呈现出来,该形式符合技术设计部分的输入标准要求。

(2)技术设计部分知识。

技术设计部分知识,是将前面业务设计/应用设计成果转换为技术设计形式所需要的知识。技术设计成果可以直接作为后续编码开发的依据,同时技术设计部分还需要确定系统的开发语言、基础框架、部署环境、硬件以及测试等方面的设计要求。

2)作用

不论是哪个行业,好产品一定要有好设计,当然有好设计未必能出好产品(制造工艺的影响),但是没有好设计是一定不会有好产品的,所以设计水平决定了产品的价值。

(1)业务设计/应用设计部分知识。

这部分知识的作用,主要是提供了分析客户现状、获取需求、优化业务设计以及信息系统使用时的应用方法,这个部分知识掌握的优劣,决定了客户管理信息系统的最高价值。

这个部分的知识是本书的核心内容。

(2)技术设计部分知识。

这部分知识的作用,主要是落实业务设计/应用设计部分的成果,将它们转换成符合开发工程师要求的形式,并加入技术部分的需求,使全部的设计结果符合软件开发的要求。这个部分知识掌握的优劣,决定了客户管理信息系统的最低价值。

本书虽然不涉及技术设计的内容,但是将技术设计中的基本理念、方法和标准等用“业务用语”的形式融入到了业务设计和应用设计中,为业务和应用设计的成果顺利地传递给技术设计奠定了基础。

3)来源

鉴于行业的发展特点,这两个部分知识的形成与来源还处于不平衡的时期。

(1)业务设计/应用设计部分知识。

目前这个部分的知识来源比较少,其中围绕着需求的获取和分析比较多,对应业务优化设计方面的比较少,缺乏从业务视角探讨设计的理论、方法和标准。目前,很多从事分析和设计工作的工程师大都是借用技术设计的理论和方法,这些理论和方法难以适应今天的业务分析与设计,特别是对企业管理类型的业务。本书的目的就是抛砖引玉,尝试着建立业务设计/应用设计的知识体系,这个体系可以在客户需求与技术设计之间建立良好的转换关系。

(2)技术设计部分知识。

目前,这个部分的知识体系已经比较完善和体系化了(如UML),这个部分的知识获取的来源也非常广泛,主要来源于学校的教育、社会培训、参考书籍、开发实践等途径。

3.开发知识体系

开发知识体系是用来指导软件实现(编程)工作的,其主要内容包括关于编码、测试等(可以理解为软件的“制造过程”)工作需要的知识。本书不涉及这个部分的内容。

4.三个知识体系的关系

三个知识体系共同构成了完成企业管理信息系统建设所需要的知识。三个知识体系之间的相互作用关系如图1-4所示,其中,②设计知识体系作为桥梁衔接了①行业知识体系和③开发知识体系,三个知识体系相互有输入和输出,共同促进,三者的相互作用如下。

图1-4 三个知识体系之间的相互作用关系

1)②与①的关系

● ②从①输入了行业知识、管理知识等(通用的知识),项目客户的企业构成、需求等(本次项目的信息)。

● ②向①输出了企业推进信息化管理需要建立的理论、方法、标准、规范等,帮助企业构建未来的信息化工作环境。

2)②与③的关系

● ②从③输入了在设计阶段必须要遵守的、符合软件开发标准和规范等的要求,符合这些要求的设计成果才能够为后续的开发所继承。

● ②向③输入了满足客户需求同时又符合软件开发标准的设计成果。

总结:这三个知识体系是相互关联和促进的,②起到了承前继后的作用,②中包含的三个阶段(需求、业务&应用和技术)之间也有前后传递、继承的关系,有了这样相互作用、继承的知识体系才能够保证信息系统可以高质量、顺利地完成实现过程。

1.1.2 三个基础原理

构建企业管理信息系统,其业务的复杂程度要比图书管理、订单管理、仪表控制、ATM机等类型的系统大得多,企业管理的业务构成不直观,且业务需求要涉及企业的决策层、管理层以及执行层,不同层的理念、思想、目标、价值以及期望也都会影响到系统的规划和设计。作为一名软件设计师,在理解客户的需求时首先要站在与客户同一视角观察和了解,而不能够仅从软件功能实现的视角机械地去拆分它们、理解它们,这样做常常会使得设计师忽略了客户业务自身的逻辑和价值,而这恰恰是造成现实中很难开发出优秀的、可以令客户满意的企业管理信息系统的主要原因。

本书提出了三个基本的原理(分离原理、组合原理与基干原理),它们不但是理解、分析和设计企业管理信息系统的方法,而且也是本书中构建业务分析与设计方法体系的理论基础。这三个原理贯穿了本书的核心思想,它们提供了从需求分析到系统复用的设计方法,让工程师可以从一个更高的层次去理解研究对象,并获得高水平的分析和设计成果。

1.分离原理

对任何研究对象的分析工作都是从“拆分对象”开始的,即把一个大的复杂的研究对象拆分为若干个相对小的且易于研究的要素。那么以什么为依据进行拆分、拆分的结果是否有利于理解对象、同时分析成果又是否能为后续设计所继承呢?分离原理提出了企业管理类研究对象的分离方法。分离原理被用于分析与设计过程中,详见第2章。

2.组合原理

业务设计要面对无数的业务场景、多样的管理方式,要想实现规范化、标准化的设计就需要有一套方法可以覆盖这些场景,或者是,无论遇到什么样的业务场景总能抽提出它们的共同形式。有了这套方法,就可以实现标准化、工程化的设计,组合原理提出了企业管理类对象的业务架构方法。组合原理主要用于对业务的架构设计,详见第3章。

3.基干原理

前面两个原理主要应用于对业务的分析与设计。基干原理主要给出了在应用设计阶段如何实现产品复用的设计依据,按照这个方法设计的系统同时也具有快速应变的能力,基干原理提出了软件如何可以像制造业一样模块化生产产品的设计方法。基干原理针对的是系统架构,主要用于应用设计,详见第5篇。