实用软件工程
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.5 软件工程实践论

1.5.1 软件工程实践论的提出

软件工程方法论中的4 种软件开发方法,究竟哪一种方法最好呢?在开发一个大型软件系统时,到底怎样选取合适的软件开发方法呢?这就是软件工程实践论中需要详细讨论的问题。

本章的重点之二,就是详细讨论“五个面向”的软件工程实践论。它源于大型信息系统的开发实践,所以首先给出信息系统的定义。

利用计算机网络技术、数字通信技术与数据库技术实现信息采集和处理的系统,称为信息系统。

“五个面向”实践论是指“面向流程分析、面向元数据设计、面向对象实现、面向功能测试、面向过程管理”。

“五个面向”实践论,综合了软件工程方法论中各种开发方法的优点,是人们在软件开发实践中经验的结晶,是软件工程方法论在软件工程实践中的具体运用。

在论述“五个面向”实践论时,我们首先从信息系统出发,然后再推广到非信息系统。

1.5.2 面向流程分析

面向流程分析(Flow-Oriented Analysis),就是面向流程进行需求分析。

任何软件系统,都要满足用户的需求,这往往表现在用户的工作流程上,无论是系统的功能、性能、接口、界面,通过系统流程这条主线,都会全部暴露出来。因此,在信息系统需求分析时,系统分析员要面向业务流程、资金流程、信息流程进行分析。只有将这“三个流程”分析透了,才能建立有效的系统业务模型和功能模型(包括性能模型和接口模型)。因为计算机网络在本质上只识别数据及数据流(严格地讲,它只识别二进制数据和二进制数据流),而且这“三个流程”,可以用“数据流”这一个流程来代替,或者说“三个流程”是“数据流”在三个不同方向的投影。

由此可见,在需求分析时,抓住了软件系统的流程,就掌握了需求分析的钥匙,就能取得需求分析的成功。

1.5.3 面向元数据设计

面向元数据设计(Meta-data Oriented Design),就是面向元数据进行概要设计。

例如,在信息系统设计时,设计师要采用面向元数据的方法进行概要设计。其主要任务是建立系统的数据模型,包括概念数据模型CDM和物理数据模型PDM,以及体现业务规则的存储过程和触发器,然后以数据模型为支撑,去实现信息系统的业务模型和功能模型。为此,要对元数据进行分析、识别、提取,只有将元数据分析透了,才能建立由元数据所构成的数据模型。

信息系统设计的重中之重,是数据库服务器上数据层的设计,而数据层的设计是面向元数据的,不是面向过程或对象的。当然,其他层上的设计是面向对象的。

1.5.4 面向对象实现

面向对象实现(Object-Oriented Implementation),就是面向对象进行详细设计和编程实现。

表示层和中间层上进行详细设计和编程实现时,要采用面向对象的方法。目前流行的编程语言大多数是面向对象的语言。成熟的软件企业已经利用面向对象语言建设了本企业的商业类库,积累了大量的商业软构件,甚至建造好了自己的业务基础平台,为面向对象详细设计和编程实现创造了良好的开发环境。当然,在数据层上的详细设计和编程实现,仍然要采用面向元数据的方法,因为主要是设计和编写存储过程与触发器,它们是面向元数据的,不是面向对象的。必须指出:详细设计与编程实现的绝大部分工作量,是在表示层与中间层上进行的,是面向对象的,所以叫做面向对象实现。

详细设计和编程实现,实质上是用构件加上程序来实现系统的业务模型和功能模型(包括性能模型和接口模型)。只有对系统的三个模型思想(业务模型、功能模型、数据模型)吃透了,才能设计和编写出规范的程序。

因为类的实例化就是对象,所以面向对象实现,实质上是面向类实现。面向对象方法的软件分析师与程序员时刻要牢记:分析设计时由对象抽象出类,程序运行时由类还原到对象。

1.5.5 面向功能测试

面向功能测试(Functional-Oriented Test),就是面向功能进行模块测试、集成测试、Alpha测试和Beta测试。

面向功能测试的方法就是黑盒测试方法,随着第4 代程序设计语言和构件技术的发展,该测试方法的应用将越来越广泛。今后采用白盒测试方法(面向程序执行路径测试)的人,只是从事软件构件生产的底层人员。因此,测试部门的专职测试人员,主要是掌握面向功能的黑盒测试方法。

黑盒测试方法的测试思路是:针对需求分析时建立的系统功能模型,将每一个需求功能点,分解为多个测试功能点。再将每一个测试功能点,分解并设计为多个测试用例。对每一个测试用例,都执行测试过程,产生测试记录数据。最后,汇总并分类整理所有的测试记录数据,形成测试报告。

一般而言,面向功能的黑盒测试报告,就是软件系统的内部验收测试报告,即Alpha测试报告。而Beta测试报告,是用户验收测试报告。

1.5.6 面向过程管理

面向过程管理(Procedure-Oriented Management),就是面向软件生命周期过程,对软件生命周期各个阶段进行过程管理与过程改进。

因为软件产品质量及软件服务质量的提高与改进,完全取决于软件企业软件过程的改善。无论是CMMI,还是ISO 9001,都是站在软件生命周期的层面上,去提高软件企业的过程管理素质。

软件组织的软件过程管理与改进,是面向过程的,它既面向开发过程,又面向管理过程。可视、可控、优化的白箱操作过程,能保证软件工作产品的高质量。

质量源于过程,过程需要改进,改进需要模型,改进永无止境,这就是CMMI精神和软件工程实践论中的面向过程管理。

1.5.7 软件工程实践论小结

由上可知,“五个面向”实践论,构成了一个完整的软件工程实践论体系。它源于软件企业对软件工程方法论的长期实践,指导软件企业对信息系统的开发建设,它是软件工程方法论在软件实践活动中的活学活用。

现在的问题是,“五个面向”实践论是否具有片面性,是否只适合于信息系统建设,不太适合于其他软件系统建设?为了回答这个问题,我们需要仔细分析“五个面向”的具体内涵:面向流程分析、面向对象实现、面向功能测试、面向过程管理,这4 个面向应该是没有问题的,对任何软件系统都是适用的。剩下的只是“面向元数据设计”了,难道它只适合于信息系统、不适合其他系统?其实不然。

如前所述,只要将“元数据”的概念稍加扩充,即元数据是所有软件系统中组织数据的数据,那么,对于信息系统之外的其他领域,面向元数据方法也是适用的。同理,对于信息系统之外的其他软件系统,“五个面向”实践论也是完全适用的。

若将一切组织数据的数据都定义为元数据,那么“五个面向”实践论就在软件工程中具有普遍意义。事实上,由于网络上的软件等于程序、数据和文档的集合,而数据包括两部分内容:组织数据的数据(元数据)和被组织的数据。从这一观点看,任何软件设计都应该是面向元数据设计,而不是面向被元数据所组织的数据设计。例如,在面向对象方法中,面向对象设计本质上是面向类(Class)的设计,不是面向对象(Object)的设计,因为类由元数据组成(类名、属性名、方法名都是元数据),所以类是组织数据的数据,而对象是被元数据(类)组织的具体数据。这既是事实,也是常识。

在“五个面向”的实践中,都要制定并遵守相应的规程、标准和规范,因为软件工程的质量,源于这“五个面向”实践的质量。实践是检验真理的唯一标准,“五个面向”实践论,还将在软件工程的长期实践中接受检验。