第一章 软件工程介绍

        软件是指令的集合;软件是数据结构;软件是程序操作和使用的文档;软件是逻辑的系统元素而非物理的系统元素。

        软件具有的特性:(1)软件是设计开发的,而不是传统意义上生产制造的。(2)软件不会“磨损”但是软件会退化。(3)虽然整个工业向着基于构件的构造模式发展,然而大多数软件仍是根据实际顾客的需求定制的。

 

第二章 过程综述

        软件工程是一种层次化的技术,其根基在于质量关注点,然后自下而上分别为过程、方法、工具。其中基础是过程。

        通用过程框架包括5个部分:沟通、策划、建模、构建、部署。建模通常包括分析和设计。分析包括需求获取、细化、协商、规格说明和确认;设计包括数据设计、体系结构设计、接口设计和构件层设计。最终产生需求规格说明和设计规格说明。

        CMMI——能力成熟度模型集成,当软开发组织达到不同的过程能力和成熟度水平时,该模型可用来预测其所开发的系统和软件工程能力。其能力评定等级有:第0级:不完全级(Incomplete);第一级:已执行级(Performed);第二级:已管理级(Managed);第三级:已定义级(Defined);第四级:已定量管理级(Quantitatively Managed);第五级:优化级(Optimized)。

        个人软件过程(PSP)强调对产品以及产品质量的个人测量。它定义了5个框架活动:策划、高层设计、高层设计评审、开发、后验。PSP没有被业界广泛采纳。团队软件过程(TSP)有着一个整体的目标,定义了项目启动、高层设计、实现、集成、测试以及后验6个框架活动。两者都强调了成功软件过程的关键因素:测量、计划和自我管理。

 

第三章 过程模型

        瀑布模型又被成为经典生命周期,是系统的、顺序的软件开发方法,包括通用过程模型的5个部分。沟通——项目启动、需求获取;策划——项目估算、进度计划、项目跟踪;建模——分析、设计;构建——编码、测试;部署——交付、支持、反馈。使用瀑布模型遇到的问题有:(1)实际的项目很少遵守瀑布模型提出的顺序。(2)客户通常难以清楚地描述所有的需求。(3)客户必须有耐心因为只有到项目接近尾声的时候才能有个可执行程序。

        增量过程模型以迭代的方式运用瀑布模型,它为用户迅速提供一套功能有限的软件产品,第一个增量往往是核心产品。如果在项目既定的商业要求期限之前不可能找到足够的开发人员,这种情况下增量模型显得特别有用。

        RAD模型,即快速应用程序开发是一用侧重于短暂的开发周期的增量软件过程模型。其每个功能分配给一个独立的RAD团队,然后再集成为一个整体。当然,RAD模型也有不足:(1)对于大型的可伸缩的项目,RAD需要大量的人力资源来创建多个相对独立的RAD团队。(2)如果开发者和客户没有为短时间内急速完成整个系统做好准备,RAD项目将会失败。(3)如果一个系统不能合理地模块化,RAD构件建立会有很多问题。(4)如果系统需求是高性能,并且需要通过调整构件接口的方式来提高性能,不能采用RAD模型。(5)技术风险很高的情况下,例如,一个新的应用开发,大量使用新技术,不宜采用RAD。

        演化过程模型是迭代的过程模型。原型开发——摸着石头过河,在需求不明确,难度大的情况下使用。存在一些问题:(1)软件开发管理往往陷入失效。(2)系统性能不好,不完美。

        螺旋模型是一种演进式软件过程模型。它结合了原型的迭代性质和瀑布模型的系统性和可控性特点。使用范围:大型负责系统。特点:循环迭代,每次迭代不一定是可用的,同时降低了风险;确定一系列里程碑,确保共利益者都支持可行的和令人满意的系统解决方案。螺旋的第一圈一般开发出产品的规格说明,接下来开发产品的原型系统,并在每次迭代中逐步完善,开发不同的软件版本。螺旋的每圈都会跨过策划区域,此时,需调整项目计划,并根据交付后的反馈调整预算和进度。另外,项目经理还调整完成软件开发需要迭代的次数。它的缺点是很难说服客户(特别是以合同的形式)演进的方法是可控的。他依赖大量的风险评估专家来保证成功。如果有较大的风险没被发现和管理,肯定会发生问题。

        协同开发模型可以表示为一系列框架活动、软件工程动作和任务以及相应的状态。它可以用于所有类型的软件开发。基于构件的开发本质上是演化模型,需要以迭代的方式构件模型。它特点是采用预先打包的软件构件开发程序。它能够使软件复用。

        面向方面的软件开发AOP。

        统一过程UP以及UML建模技术。UP的开始阶段包括客户沟通和策划活动。在该阶段,初步用“用例”描述每一类用户所需要的主要特征和功能。策划活动识别各种资源,评估主要风险,定义进度计划等。细化阶段包括用户沟通和通用过程模型的建模活动,完成软件的五种视图——用例模型、分析模型、设计模型、实现模型和部署模型。UP的构建阶段和通用的差不多,产生了不俗模型。UP的转换阶段包括通用构建阶段的后期阶段以及第一部分通用部署活动。此阶段,软件增量成为可用的发布版本。UP的生产阶段与通用阶段的部署活动一致,持续地监控软件的允许并提供技术支持。五个UP阶段并不是顺序地进行,而是阶段性的并发进行。一个软件工程的工作流分布在所有UP阶段。

 

第五章 软件工程实践综述