软件工程(导论)

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

目录

  • 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 能力成熟度模型
过程设计的工具

一、程序流程图

程序流程图又称为程序框图,它是历史最悠久、使用最广泛的描述过程设计的方法。

它的主要优点是对控制流程的描绘很直观,便于初学者掌握。

程序流程图历史悠久,至今仍在广泛使用着。

程序流程图的主要缺点:

1、程序流程图本质上不是逐步求精的好工具,它诱使程序员过早地考虑程序的控制流程,而不去考虑程序的全局结构。

2、程序流程图中用箭头代表控制流,因此程序员不受任何约束,可以完全不顾结构程序设计的精神,随意转移控制。

3、程序流程图不易表示数据结构。 


二、盒图(N-S图)

盒图具有下述特点:

1、功能域明确。

2、不可能任意转移控制。

3、很容易确定局部和全程数据的作用域。

4、很容易表现嵌套关系,也可以表示模块的层次结构。


三、PAD图

PAD是问题分析图(problem analysis diagram)的英文缩写,自1973年由日本日立公司发明以后,已得到一定程度的推广。

它用二维树形结构的图来表示程序的控制流,将这种图翻译成程序代码比较容易。 

PAD图的主要优点如下:

■使用表示结构化控制结构的PAD符号设计出来的程序必然是结构化程序。

■PAD图所描绘的程序结构十分清晰。

■PAD图表现程序逻辑易读、易懂、易记。 

■容易将PAD图转换成高级语言源程序,这种转换可用软件工具自动完成。

■即可表示程序逻辑,也可描绘数据结构。

■PAD图的符号支持自顶向下、逐步求精方法的使用。


例题:某程序流程图如下图所示,请分别用N-S图和PAD图表示。 

流程图:

PAD图:

N-S图:


四、判定表

当算法中包含多重嵌套的条件选择时,用程序流程图、盒图、PAD图或后面即将介绍的过程设计语言(PDL)都不易清楚地描述。

判定表却能够清晰地表示复杂的条件组合与应做的动作之间的对应关系。 


一张判定表由4部分组成:

1、左上部列出所有条件;

2、左下部是所有可能做的动作;

3、右上部是表示各种条件组合的一个矩阵;

4、右下部是和每种条件组合相对应的动作。 

判定表的优点:

能清晰地表示复杂的条件组合与应做的动作之间的对应关系。

判定表的缺点:          

判定表的含义不是一眼就能看出来的,初次接触这种工具的人理解它需要有一个简短的学习过程。

当数据元素的值多于两个时,判定表的简洁程度也将下降。


五、判定树

判定树是判定表的变种,也能清晰地表示复杂的条件组合与应做的动作之间的对应关系。

多年来判定树一直受到人们的重视,是一种比较常用的系统分析和设计的工具。

判定树的优点:

它的形式简单,一眼就可以看出其含义,因此易于掌握和使用。

判定树的缺点:

简洁性不如判定表,数据元素的同一个值往往要重复写多遍,而且越接近树的叶端重复次数越多。

画判定树时分枝的次序可能对最终画出的判定树的简洁程度有较大影响。 


六、过程设计语言

过程设计语言(PDL)也称为伪码,它是用正文形式表示数据和处理过程的设计工具。

PDL具有严格的关键字外部语法,用于定义控制结构和数据结构;另一方面,PDL表示实际操作和条件的内部语法通常又是灵活自由的,可以适应各种工程项目的需要。

PDL是一种“混杂”语言,它使用一种语言的词汇,同时却使用另一种语言的语法。 


伪代码的基本控制结构:

■简单陈述句结构:避免复合语句。

■判定结构:IF_THEN_ELSE或CASE_OF结构。

■选择结构:WHILE_DO或REPEAT_UNTIL结构。


PDL的特点:

■关键字的固定语法,它提供了结构化控制结构、数据说明和模块化的特点。

■自然语言的自由语法,它描述处理特点。

■数据说明的手段。应该既包括简单的数据结构,又包括复杂的数据结构。

■模块定义和调用的技术,应该提供各种接口描述模式。 


PDL的优点:

可以作为注释直接插在源程序中间。有助于保持文档和程序的一致性,提高了文档的质量。

可以使用普通的正文编辑程序或文字处理系统,很方便地完成PDL的书写和编辑工作。

已经有自动处理程序存在,而且可以自动由PDL生成程序代码。

PDL的缺点:

不如图形工具形象直观,描述复杂的条件组合与动作间的对应关系时,不如判定表清晰简单。