软件工程

感谢您阅读此文,如果您发现任何错误,请发邮件至 zrg1390556487@gmail.com,谢谢!

1. 第一部分 软件工程导论

对软件工程做一般性的介绍。

1.1. 概述

  1. 软件工程是关于软件生产的工程学科。
  2. 软件产品有分类:
    • 通用软件产品,如数据库软件、字处理软件。
    • 定制软件产品。
    • 目前,这两类产品之间的界线变得模糊,因为现在更多的公司从一个通用软件产品开始进行定制处理,以满足特别客户的具体要求。
  3. 好软件的重要属性:
    • 可维护性
    • 可依赖性和安全性
    • 有效性
    • 可用性
  4. 软件过程是指制作软件产品的一组活动及其结果。所有的软件过程都包含4项基本活动:软件描述、软件开发、软件有效性验证、软件进化。
  5. 有很多软件的基本方法适用于所有类型的软件系统:
    • 应使用有管理的和理解了的开发过程进行开发。
    • 可依赖性和性能对所有类型的系统来说都很重要。
    • 理解和管理系统描述和需求很重要。
    • 尽可能高效地使用当前存在的资源。
  6. 软件工程的职业道德
    • 保密
    • 工作能力
    • 知识产权
    • 计算机滥用
  7. 案例简介
    • 胰岛素泵控制系统(嵌入式系统)
    • 用于心理健康治疗的患者信息系统
    • 野外气象站(基于传感器的信息采集系统)
  8. 要点归纳
    • 软件工程是一门涉及软件生产的各方面的一门工程学科。
    • 软件产品不仅是程序,还包括文档。软件产品的基本属性是可维护性、可靠性、信息安全性、效率以及可接受性。
    • 软件过程包括开发软件产品过程中的所有活动。软件过程中的活动主要有:软件描述、软件开发、软件有效性验证、软件进化。
    • 软件工程的基本概念普遍适用于所有类型的系统开发。这些基本概念包括软件过程、可靠性、信息安全性、需求以及复用。
    • 世界上存在着很多类型的系统。每一种类型的系统的开发都需要一种与之相适应的软件工程工具和技术。几乎不存在普适的神奇的软件设计和实现技术。
    • 软件工程的基本思想适用于所有的软件系统。这些基本思想包括有管理的软件过程、软件的可依赖性和安全性、需求工程和软件复用。
    • 软件工程人员对软件工程行业和整个社会负有责任,不应该只关心技术问题。
  9. 职业协会颁布的行为准则则规定了一系列协会成员应该遵守的行为准则。

1.2. 软件过程

  1. 软件过程模型

    Table 1: 软件过程模型
    瀑布模型基本开发活动: 需求分析和定义
      系统和软件设计
      实现和单元测试
      集成和系统测试
      运行和维护
    增量式开发 思想:先开发出一个初始版本,给用户使用并听取用户的意见和建议,通过对多个版本的不断修改知道产生一个充分的系统。
      从管理角度上看,存在着两个问题:过程不可见;伴随着新的增量的增加,系统结构在逐步退化。
    面向复用的软件工程 开发阶段:组件分析; 需求修改; 使用复用的系统设计; 开发和集成
    • 瀑布模型:该模型将基本的过程活动、描述、开发、有效性验证和进化,看成是一些界限分明的过程阶段。如,需求描述阶段、软件设计阶段、实现阶段、测试阶段,等等。
    • 增量式开发
    • 面向复用的软件工程:基于大量可复用的组件开发。
  2. 过程活动
    • 软件描述:软件描述或需求工程是理解和定义系统需要提供哪些服务,以及找出开发和运行中收到哪些约束。需求工程4个主要的阶段:
      • 可行性研究
      • 需求导出和分析
      • 需求描述
      • 需求有效性验证
    • 软件设计和实现

      软件设计是对实现软件的结构、系统的数据、系统组件间的接口以及所用的算法的描述。
      
      Table 2: 软件设计和实现
      设计输入 平台信息、需求描述、数据描述
      设计活动 体系结构设计、接口设计、组件设计、数据库设计
      设计输出 系统提醒结构、数据库描述、接口描述、组件描述
    • 软件有效性验证:软件有效性验证,通常也称为检验和有效性验证(V&V),是要看系统是否符合他的描述和客户的预期。程序测试,即用模拟测试数据运行系统,是最基本的有效性验证技术。
      • 测试过程中的阶段:
        • 组件(或单元)测试
        • 系统测试
        • 接收测试
    • 软件进化(软件维护)
  3. 应对变更
    • 两个方法用于降低返工成本:
      • 变更避免
      • 变更容忍
    • 两种应对变更系统需求的方法:
      • 系统原型(原型构造)
      • 增量交付
    • Boehm的螺旋模型
  4. Rational统计过程

    Rational统计过程是新式基本过程模型,其特点是由阶段(开端、细化、构造和转换)所构成,但是它把活动(需求、分析和设计等)和阶段相区别。
    
  5. 要点归纳
    • 软件过程是产生一个软件系统的一系列活动。软件过程模型是这些过程的抽象表示。
    • 一般过程模型描述软件过程的组成。一般过程模型实例包括瀑布模型、增量式开发、面向复用的开发。
    • 需求工程是开发软件描述的过程。描述的目的是向开发者传达客户方对系统的需要。
    • 设计和实现过程是对需求描述转换为一个可运行的软件系统的过程。系统话的设计方法用来完成这个转换。
    • 软件有效性验证是检查系统是否与它的描述相一致,以及是否符合系统用户的真正需要的过程。
    • 软件进化是修改已存在的软件系统以适应用户新的需求的过程。变更是一个持续的过程,软件必须在变更过程中保持可用。
    • 过程应包含应对变更的活动。这可能包含一个原型构造阶段,以帮助避免在需求和设计上的错误决定。过程也应该适应迭代和交付,这样变更时就不会对整个系统带来干扰。
    • Rational统一过程是新式基本过程模型,其特点是由阶段(开端、细化、构造和转换)所构成可,但是它把活动(需求、分析和设计等)和阶段相区别。

1.3. 敏捷开发

1.4. 需求工程

1.5. UML语言对系统建模

1.6. 体系结构设计

1.7. 面向对象的设计和设计模式的使用

1.8. 软件测试

1.9. 软件进化

2. 第二部分 可依赖性和信息安全性

2.1. 社会技术系统

2.2. 可依赖性与信息安全性

2.3. 可依赖性与信息安全性描述

2.4. 可依赖性工程

2.5. 信息安全工程

2.6. 可依赖性与信息安全保证 

3. 第三部分 高级软件工程

3.1. 软件复用

3.2. 基于组件的软件工程

3.3. 分布式软件工程

3.4. 面向服务的体系结构

3.5. 嵌入式软件

3.6. 面向对象的软件工程

4. 第四部分 软件管理

4.1. 项目管理

4.2. 项目规划

4.3. 质量管理

4.4. 配置管理

4.5. 过程改善