软件工程(导论)

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

目录

  • 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、程序的视觉组织


二、数据说明

1、数据说明的次序应该标准化。

2、当多个变量名在一个语句中说明时,应该按字母顺序排列这些变量。

3、如果设计时使用了一个复杂的数据结构,则应该用注解说明用程序设计语言实现这个数据结构的方法和特点。 


三、语句构造

1、不要为了节省空间而把多个语句写在同一行;

2、尽量避免复杂的条件测试;

3、尽量减少对“非”条件的测试;

4、避免大量使用循环嵌套和条件嵌套;

5、利用括号使逻辑表达式或算术表达式的运算次序清晰直观。 


四、输入输出

1、对所有输入数据都进行检验;

2、检查输入项重要组合的合法性;

3、保持输入格式简单;

4、使用数据结束标记,不要要求用户指定数据的数目;

5、明确提示交互式输入的请求,详细说明可用的选择或边界数值;

6、当程序设计语言对格式有严格要求时,应保持输入格式一致;

7、设计良好的输出报表;

8、给所有输出数据加标志。 


五、效率

1、效率主要指处理机时间和存储器容量两个方面。

2、效率是性能要求,因此应该在需求分析阶段确定效率方面的要求。

3、效率是靠好设计来提高的。

4、程序的效率和程序的简单程度是一致的,不要牺牲程序的清晰性和可读性来不必要地提高效率。 


效率问题:

1、程序运行时间

■写程序之前先简化算术的和逻辑的表达式;

■仔细研究嵌套的循环,以确定是否有语句可以从内层往外移;

■尽量避免使用多维数组;

■尽量避免使用指针和复杂的表;

■使用执行时间短的算术运算;

■不要混合使用不同的数据类型;

■尽量使用整数运算和布尔表达式。

■在效率是决定性因素的应用领域,尽量使用有良好优化特性的编译程序,以自动生成高效目标代码。 

2、存储器效率

■使用能保持功能域的结构化控制结构,是提高效率的好方法。

■在微处理机中如果要求使用最少的存储单元,则应选用有紧缩存储器特性的编译程序,在非常必要时可以使用汇编语言。

■提高执行效率的技术通常也能提高存储器效率。提高存储器效率的关键同样是“简单”。 

3、输入输出的效率

如果用户为了给计算机提供输入信息或为了理解计算机输出的信息,所需花费的脑力劳动是经济的,那么人和计算机之间通信的效率就高。因此,简单清晰同样是提高人机通信效率的关键。 


六、几种良好的编码习惯

1、注释


2、视觉组织——空格


3、视觉组织——移行


4、数据说明标准化


5、一行一条语句


6、强调清晰性


7、简单直接


8、避免不必要的转移


9、避免使用空ELSE和IF…THEN IF…语句


10、少用否定条件