- 大话软件工程:需求分析与软件设计
- 李鸿君
- 3133字
- 2021-09-16 18:26:43
1.2 软件工程
对软件工程的描述主要以软件工程框架为载体展开,这个框架对前述分析和设计的知识进行梳理、呈现,有利于理解、学习和交流有关分析和设计的内容。
1.2.1 定义与框架
1.软件工程的定义
对软件工程的定义有很多种版本,这里选取两种定义作为参考。
1)IEEE对软件工程的定义
(1)将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件。
(2)(1)中所述方法的研究。
2)《计算机科学技术百科全书》对软件工程的定义
软件工程是应用计算机科学、数学、逻辑学及管理科学等原理,开发软件的工程。软件工程借鉴传统工程的原则、方法,以提高质量、降低成本和改进算法。
2.软件工程的框架
由于关注的视角不同,所以构成软件工程的框架内容也有多个版本,除去可行性调研、配置管理、质量管理、工程管理等内容外,不论哪一种版本都有如图1-5所示的5个领域,这5个领域的工作内容与软件的实现与改进具有直接关系,是构成软件工程的核心内容。
图1-5 软件工程与本书的范围
由于本书重点是面向从事需求和设计的读者,因此主要涉及软件工程的两个部分,即:需求工程(除管理咨询),设计工程(除技术设计部分)。本书是以设计工程中的“业务设计和应用设计”部分为核心,以需求工程中的“需求调研和需求分析”为辅构成的。以下如无特殊说明,“设计工程”仅指“业务设计和应用设计”两个部分。
1)需求工程(需求调研、需求分析)
选取需求工程中“需求调研”和“需求分析”这两个部分,它们是需求工程中产生需求的主要实操部分,这两个部分的交付成果与后续设计工程是继承关系,它们是后续设计工程的输入,设计工程是依据它们进行的,它们的交付物必须是定性和定量的,必须是采用可以传递、继承的标准模板进行。
注1:关于管理咨询(见图1-5)
需求工程中“管理咨询”的内容不同于需求调研和分析的内容,“管理咨询”往往指的是高级咨询师与客户企业中的高层(经营者、信息化推进主管以及对信息化导入具有重要影响的部门主管等)的交流,管理咨询的结果决定了导入信息系统的目标、方向、价值和主要内容等,属于需求分类中的“目标需求”。但由于管理咨询的方法无法工程化,所以在此省略。关于“目标需求”的分析与用途参见第7章。
注2:关于需求管理
由于需求工程中的需求管理部分(包括:确认、跟踪、维护、变更、版本等)是对分析与设计成果的管理和维护,与分析设计没有直接关系,所以不作为本书的内容。
2)设计工程(业务设计、应用设计)
因书中以软件工程为框架,所以在以后的描述中用“设计工程”代替“软件设计”。设计工程以业务设计与应用设计为核心,这两个部分的设计重点讲述了以下的内容。
(1)业务设计。
明确地给出业务设计的定义、在软件工程中的位置和作用,它既不等于“需求设计”,也不是“技术设计”,它是站在客户视角对客户业务的优化和完善,由概要设计和详细设计两部分构成。业务设计的最终目标是提升客户的业务价值。
(2)应用设计。
明确地给出应用设计的定义、在软件工程中的位置和作用,它既不等于“UI设计”,也不是简单的“客户体验设计”,它是对信息化环境下企业管理方式的提案和设计,应用设计的最终目标是提升客户的应用价值。
应用设计与业务设计是技术设计的输入。
本书涉及的需求工程与设计工程部分的内容展开如图1-6的结构所示。
这个图起了什么作用呢?想象一下,当一个新人走进了一个巨大的建筑工程施工现场,有成百上千的人同时在工作,这个新人可能不知道自己面对的是什么、自己处在什么位置、现场的每个人都在做什么等,此时,如果有一个如图1-7所示的建筑结构图,那么这个新人就知道了正在建造的是什么建筑,自己处在什么位置,现场的每个人都在做什么工作等,这个可以帮助读者理解“建筑的结构图”,就相当于“软件工程的结构图”。有了这个结构图之后,相关人在讨论时就可以很容易地掌握软件工程的整体、自己的位置、每个设计阶段的角色和具体的工作内容等信息。本书就是按照这个结构进行展开说明的。
图1-6 软件工程结构
图1-6的软件工程结构图有两个方向的分解:工程分解和工作分解,这两个分解构成了软件工程的结构,下面就这两个方向的分解内容分别进行说明。
图1-7 建筑结构图
1.2.2 工程分解(横轴)
对软件工程在横向(横轴)的划分称为工程分解。本书只涉及工程分解的两个部分:需求工程、设计工程,见图1-6。
1.需求工程
需求工程内部由两个阶段构成:需求调研阶段和需求分析阶段。
1)需求调研
收集客户对构建信息系统的具体需求(高端需求已在管理咨询中获取),需求主要来自于企业的决策层、管理层、执行层,最终形成需求调研资料汇总。
2)需求分析
对管理咨询和需求调研收集到的需求进行梳理、分析,确定未来必须要实现的功能需求,最终形成需求规格说明书,它是后续设计、开发、测试以及客户验收等的依据。
2.设计工程
设计工程由两大部分构成:业务设计和应用设计。其中,业务设计又可以再分为概要设计和详细设计,也可以说设计工程是由三个阶段构成的:概要设计、详细设计和应用设计。
1)业务设计——概要设计
基于需求分析的成果,对未来业务的整体进行规划,并制定设计的理念、主线、原则、标准等,概要设计的成果形成概要设计规格书。
2)业务设计——详细设计
基于概要设计的成果,对概要设计规格书中的内容进行逐一的细节层面的定义、设计,到此,与业务相关的设计内容全部确定,详细设计的成果形成详细设计规格书。
3)应用设计
将前面的业务设计成果转换为用系统形式表达,并确定开发完成后的使用效果,至此,完成了全部的应用设计内容,应用设计的成果形成应用设计规格书。
1.2.3 工作分解(纵轴)
对软件工程在纵向(纵轴)的划分称为工作分解。其中,需求工程没有工作分解(有交付物分解),设计工程的工作分解为3层:架构、功能和数据,参见图1-6。
1.需求工程
需求工程由于调研和分析难以进行工程化的分解,所以没有对调研和分析的过程进行分解,而是对调研和分析的结果进行了划分。需求调研和需求分析的主要成果分类如下。
● 需求调研结果:现状构成(图)、访谈记录(文)、既存表单(表)。
● 需求分析结果:目标需求、业务需求、功能需求。
2.设计工程
从需求工程进入到设计工程后,每个设计阶段(概要、详细、应用)的内容都包含三个层,即:架构层、功能层和数据层,所有设计工作都是围绕着这三层进行的。
1)架构层
架构层,是对研究对象进行粗粒度的设计,架构层的工作包括对业务整体的顶层规划,确定范围、边界、静态和动态的构成,以及向系统架构的转换,参见图1-6中的①架构层。
2)功能层
功能层,是对用户操作界面的设计,基于架构的设计成果,规划界面、定义数据、确定操作方式、制定规则,以及功能在系统中的操作机制,参见图1-6中的②功能层。
3)数据层
数据层,对企业的数据进行整体的规划、架构和详细设计,确定业务编号规则、主数据构成、数据逻辑,以及在系统中数据的复用、共享机制等,参见图1-6中的③数据层。
从图1-6的分层可以看出来,每一层都被设计了3次(概要、详细、应用)。
1.2.4 工程与工作的分解区别
在设计工程部分,三个阶段(概要、详细和应用)与三个层(架构、功能和数据)形成了3×3的矩阵,横向是工程分解,纵向是工作分解,两者的区别如下。
1.工程分解(横轴)
工程分解的三个阶段负责将客户的原始需求转换为最终的软件开发依据,每个阶段对需求都进行了不同目的的“加工”,例如,业务设计阶段通过粗加工(概要设计)和细加工(详细设计)完成了对业务层面的设计;最后再将业务设计成果转为系统的形式(应用设计),至此,就完成了从客户的原始需求到系统应用形式的设计全过程。
2.工作分解(纵轴)
在工程分解的每个阶段内都要对设计对象进行同样的三个层面的“加工”,工作分解从架构层、功能层到数据层,这也是从粗到细的设计过程。