软件工程(导论)

成秀秀、杨玲、戚爱斌、苗世迪、温东新

目录

  • 1 软件与软件工程
    • 1.1 软件
    • 1.2 软件危机
    • 1.3 软件工程
    • 1.4 软件生命周期
    • 1.5 软件过程模型
    • 1.6 学生成果分享
  • 2 可行性研究与项目开发计划
    • 2.1 可行性研究的任务
    • 2.2 可行性研究过程
    • 2.3 进度计划
    • 2.4 学生成果分享
  • 3 需求分析
    • 3.1 需求分析的任务
    • 3.2 与用户沟通获取需求的方法
    • 3.3 分析建模与规格说明
    • 3.4 实体-联系图
    • 3.5 数据规范化
    • 3.6 状态转换图
    • 3.7 其它图形工具
    • 3.8 验证软件需求
  • 4 总体设计
    • 4.1 系统流程图
    • 4.2 数据流图
    • 4.3 数据字典
    • 4.4 设计过程
    • 4.5 设计原理
    • 4.6 启发规则
    • 4.7 描绘软件结构的图形工具
    • 4.8 面向数据流的设计方法
  • 5 详细设计
    • 5.1 结构程序设计
    • 5.2 人机界面设计
    • 5.3 过程设计的工具
    • 5.4 面向数据结构的设计方法
    • 5.5 程序复杂程度的定量度量
  • 6 软件编码
    • 6.1 程序设计语言
    • 6.2 编码风格
  • 7 软件测试
    • 7.1 软件测试基础
    • 7.2 单元测试
    • 7.3 集成测试
    • 7.4 确认测试
    • 7.5 白盒测试技术
    • 7.6 黑盒测试技术
    • 7.7 调试
    • 7.8 软件可靠性
  • 8 软件项目管理
    • 8.1 估算软件规模
    • 8.2 工作量估算
    • 8.3 人员组织
    • 8.4 质量保证
    • 8.5 软件配置管理
    • 8.6 能力成熟度模型
需求分析的任务

导入:需求分析

需求分析是软件定义时期的最后一个阶段,它的基本任务是准确地回答“系统必须做什么?”这个问题。

在需求分析阶段,需要确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。

系统分析员应该写出软件需求规格说明书,以书面形式准确地描述软件需求。 

需求:正在构建的系统必须符合的事务。

需求管理:是一种获取、组织并记录系统需求的系统化方案以及一个使客户与项目团队不断变更的系统需求达成并保持一致的过程。

传统需求分析:强调需求的记录,以一成不变的观点对待需求,不重视需求实现与维护。

现代需求过程:包括需求的获取、分析、处理、验证、实现和全过程的需求管理。需求管理覆盖软件工程的整个过程。


传统与现代需求方法的比较: 


需求管理存在的问题:

范围问题:系统目标、边界未被良好定义,用户和开发团队理解不一致。

理解问题:用户不能完全了解自己需要什么,对系统能力、局限更加不清楚;工程师不理解用户的问题域和应用环境。

易变问题:需求随时间发生变化。


需求工程:

20世纪80年代中期,形成了软件工程的子领域——需求工程。

进入20世纪90年代后,需求工程称为软件界研究的重点之一。

Alan Davis 把需求工程定义为“直到(但不包括)把软件分解为实际架构构件之前的所有活动”。

需求工程的阶段划分:


需求分析的任务

1、确定对系统的综合要求 

(1)功能需求

(2)性能需求

(3)可靠性和可用性需求

(4)出错处理需求

(5)接口需求

(6)约束

(7)逆向需求

(8)将来可能提出的要求


2、分析系统的数据要求 

(1)建立数据模型——ER图 

(2)描绘数据结构——层次方框图和Warnier图  

(3)数据结构规范化 


3、导出系统的逻辑模型

综合上述两项分析的结果可以导出系统的详细的逻辑模型,通常用数据流图、实体-联系图、状态转换图、数据字典和主要的处理算法描述这个逻辑模型。 


4、修正系统开发计划

根据在分析过程中获得的对系统的更深入更具体的了解,可以比较准确地估计系统的成本和进度,修正以前制定的开发计划。