软件工程 --面向过程的软件设计方法

设计阶段

软件设计的目标和任务

根据用信息域表示的软件的需求以及功能和性能需求进行 1数据设计,2系统结构设计,3程序设计

软件工程 --面向过程的软件设计方法

软件设计的过程

1.规定规范2.软件系统结构的总体设计3.处理方式设计4.数据结构设计5.可靠性色痕迹6.编写概要设计阶段的文档7.概要设计评审

软件设计基础

自顶向下,逐步细化

模块 每个名名字都不相同

模块的调用关系和接口

模块建的信息传递

表示模块A有条件地调用另一个模块B

抽象化

数据抽象

模块的独立性   功能,实现什么功能  逻辑,模块内部怎么做  状态,使用时的环境和条件

一般采用两个准则度量模块独立性  即 模块耦合和模块内聚

高内聚低耦合

软件工程 --面向过程的软件设计方法

软件工程 --面向过程的软件设计方法

结构化设计方法

在系统结构图中的模块   传入,传出,变换,协调模块

软件工程 --面向过程的软件设计方法

变换型系统结构图        单个

事务型系统结构图   多个事务

变换分析  步骤 4步   第一重画数据流图,第二有效输入,有效输出,中心变换部分

第三,级分解,设计上层模块,   第四,进行二级分解,设计输入,输出和中心变换部分的中、下层模块

软件模块结构的改进

模块功能的完善化, 1,执行规定的功能的部分2出错处理的部分3.给他的调用者返回一个结束状态标识

消除重复功能,改善软件结构, 完全相似,局部相似

过程设计

程序流程图

软件工程 --面向过程的软件设计方法

N-S图盒图

软件工程 --面向过程的软件设计方法

PAD 问题分析图

软件工程 --面向过程的软件设计方法

PDL 结构化语言

一种用于描述功能模块的算法设计和加工需要的语言。成为设计程序用的语言

概要设计的过程

1设计系统方案2选取一组合理的方案3推荐最佳实施方案4功能分解5软件结构设计

6数据库设计、文档结构的设计7制定测试计划8编写概要设计文档9审查与复审概要设计文档

模块独立性的重要性1 具有独立的模块的软件比较容易开发出来2 比较容易测试和维护

结构设计原则

1显著改进软件结构提高模块独立性2模块规模应该适中3适当选择深度、宽度、扇出和扇入4模块的作用域应该在控制域之内5力争降低模块接口的复杂程度6设计单入口单出口的模块7模块功能应该可以预测

程序设计-语言

1机器语言、汇编2高级语言

 语言选择总原则1先求正确后求快2先求清晰后求快3求快不忘保持程序正确4保持程序整洁以求快5不要因效率而牺牲清晰

结构化程序设计 主要包括,1在编写程序时候,使用几种基本控制结构2在程序设计过程中,尽量采用自顶向下和逐步细化的原则,由粗到细,一步步展开

程序设计风格

源程序文档化   1标识符的命名2 安排注释3 程序的视觉组织

数据说明   1次序规范化2 语句变量安排有序化3使用注释说明复杂数据结构4.除非对效率由特殊的要求,程序编写要做到清晰第一,效率第二5.首先要宝泽和那个正确然后速度6.避免是应用临时变量而使用可读性下降7.让编译程序简单的优化8尽可能使用库函数9避免不必要的转移 10.尽量只采用三种基本的控制结构 循环,选择和顺序结构11避免使用空的ELSE语句和IF。。。Then if 。。。语句 12 避免采用过于复杂的条件测试13 尽量减少使用“否定”条件的语句 14 尽可能用通俗易懂的伪代码来描述程序的流程,然后再翻译成必须使用的语言 15 数据结构要有利于程序的简化16要模块化17 利用信息隐蔽,确保每个模块的独立性 18 从数据出去去构造程序19 不要修补不好的程序,要重新编写20 对太大的程序,要分块编写、测试,然后再集成

计算环路复杂性方法 v(G)=m-n+p

M是弧数 n 是节点数 p 是强连通分量个数  v(G) 是有向图G中环路个数

Halstead 程序长度  程序编完后测量

H=n1*log2n1+n2*log2n2

程序员工作量  E=V /L