软件工程管理包括:软件管理学、软件工程经济学、软件心理学等内容。
软件管理学包括人员组织、进度安排、质量保证、配置管理、项目计划等。
软件工程原则包括抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性和可验证性。
3.2结构化分析方法
结构化方法的核心和基础是结构化程序设计理论。
需求分析方法有(1)结构化需求分析方法;(2)面向对象的分析的方法。
从需求分析建立的模型的特性来分:静态分析和动态分析。
结构化分析方法的实质:着眼于数据流,自顶向下,逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。
结构化分析的常用工具
(1)数据流图;(2)数据字典;(3)判定树;(4)判定表。
数据流图:描述数据处理过程的工具,是需求理解的逻辑模型的图形表示,它直接支持系统功能建模。
数据字典:对所有与系统相关的数据元素的一个有组织的列表,以及精确的、严格的定义,使得用户和系统分析员对于输入、输出、存储成分和中间计算结果有共同的理解。
判定树:从问题定义的文字描述中分清哪些是判定的条件,哪些是判定的结论,根据描述材料中的连接词找出判定条件之间的从属关系、并列关系、选择关系,根据它们构造判定树。
判定表:与判定树相似,当数据流图中的加工要依赖于多个逻辑条件的取值,即完成该加工的一组动作是由于某一组条件取值的组合而引发的,使用判定表描述比较适宜。
数据字典是结构化分析的核心。
软件需求规格说明书的特点:
(1)正确性;
(2)无岐义性;
(3)完整性;
(4)可验证性;
(5)一致性;
(6)可理解性;
(7)可追踪性。
3.3结构化设计方法
软件设计的基本目标是用比较抽象概括的方式确定目标系统如何完成预定的任务,软件设计是确定系统的物理模型。
软件设计是开发阶段最重要的步骤,是将需求准确地转化为完整的软件产品或系统的唯一途径。
从技术观点来看,软件设计包括软件结构设计、数据设计、接口设计、过程设计。
结构设计:定义软件系统各主要部件之间的关系。
数据设计:将分析时创建的模型转化为数据结构的定义。
接口设计:描述软件内部、软件和协作系统之间以及软件与人之间如何通信。
过程设计:把系统结构部件转换成软件的过程描述。
从工程管理角度来看:概要设计和详细设计。
软件设计的一般过程:软件设计是一个迭代的过程;先进行高层次的结构设计;后进行低层次的过程设计;穿插进行数据设计和接口设计。
衡量软件模块独立性使用耦合性和内聚性两个定性的度量标准。
在程序结构中各模块的内聚性越强,则耦合性越弱。优秀软件应高内聚,低耦合。
软件概要设计的基本任务是:
(1)设计软件系统结构;(2)数据结构及数据库设计;
(3)编写概要设计文档;(4)概要设计文档评审。
模块用一个矩形表示,箭头表示模块间的调用关系。
在结构图中还可以用带注释的箭头表示模块调用过程中来回传递的信息。还可用带实心圆的箭头表示传递的是控制信息,空心圆箭心表示传递的是数据。