软件工程开发
第一章软件工程基本观念11软件工程的目标与常用模型
软件工程的目标是提高软件的质量与生产率,最终实现软件的工业化生产。对开发人员而言,如果非得在质量与生产率之间分个主次不可,那么应该是质量第一,生产率第二。
软件工程的主要环节如图1所示,软件开发过程一般包括可行性与需求分析、系统设计、程序设计、测试和维护。
图1软件工程环节常见的软件工程模型有:线性模型,渐增式模型,螺旋模型,快速原型模型,形式化描述模型等等。虽然线性模型比较简单,太理想化,但是每一个非线性的模型都能转化为一系列简单的线性模式,因此在其他模式中需要灵活运用线性模式。
12软件开发的基本策略
121复用
在一个新系统中,大部分的内容是成熟的,只有小部分内容是创新的。应该把大部分的时间用在小比例的创新工作上,而把小部分的时间用在大比例的成熟工作中。我们将具有一定集成度并可以重复使用的软件组成单元称为软构件。软件复用可以表述为:直接使用已有的软构件,即可组装(或加以合理修改)成新的系统。这样可以提高生产率和质量。
图2应用软构件产生应用软件
f122分而治之
我们可以把复杂的问题分解成N个简单的问题,再逐个寻求解决方法。但是最终的目的是要保证单个的简单问题可以通过程序实现,组装后能够使原本复杂的问题得到合理解决。
123优化折衷
优化是用以优化软件的各个质量因素,但不能面面俱到,应折衷,其目标就是协调各个质量因素,实现整体质量最优。而不能盲目得拆东墙,补西墙。
第二章软件开发过程各个环节介绍
21可行性分析与需求分析
211可行性分析要求
可行性分析是从经济、技术、市场与政策及人员方面分析这个项目做还是不做。
212需求分析要求
当确定做之后,我们就要与客户交流,进行需求分析,但由于客户表达不清、需求自身经常变动或分析人员理解有误,都会导致需求分析困难。因此,有必要通过请教行家或者分析同类型产品,来做进一步的分析。
22系统设计
221体系结构设计
体系结构就如同人体中的骨架,是软件系统中最本质的东西。其中层次结构和客户机服务器结构是两种非常通用的软件体系结构。每个系统均有一个体系结构,我们在没有必要地情况下不可以修改。
222模块设计
模块设计过程不仅要考虑本身提供什么样的功能,还要考虑该模块与其他模块如何交流。常用以下三个特征进行模块优劣的评价:“信息隐藏”、“内聚与耦合”和“封闭开放性”。
模块的信息隐藏可以通过接口设r