精品文档
数据存储、处理。
由数据元素组成数据的方式的三种基本类型:顺序、选择、重复。+可选 用以下符号描述由数据元素组成数据的关系:=意思是等价于(或定义为)、+意思是和(即连接两个分量)、[ }意思是或(通常用“|”号隔开供选择的分量)、{ }意思是重复、( )意思是可选。
数据字典最重要的用途是作为分析阶段的工具。
2.6成本/效益分析
成本/效益分析的目的:从经济角度分析开发一个特定的新系统是否划算,从而帮助客户组织的负责人正确地作出是否投资于这项开发工程的决定。 软件开发成本:主要表现为人力消耗。
成本估算技术:代码行技术、任务分解技术、自动估计成本技术。 货币的时间价值:用利率的形式。
假设年利率为i,如果现在存入P元,则n年后的价值:F=P(1+i)^n 衡量一项开发工程的价值:投资回收期。 纯收入
投资回收率
2.7小结
三 需求分析
需求分析是软件定义时期的最后一个阶段。
基本任务:准确地回答“系统必须做什么?”这个问题。 用于需求分析的结构化分析方法必须遵守下述准则: (1)、必须理解并描述问题的信息域,根据这条准则应该应该建立数据模型。E-R图 (2)、必须定义软件应完成的功能,这条准则要求建立功能模型。数据流图 (3)、必须描述作为外部事件结果的软件行为,这条准则要求建立行为模型。状态图 (4)、必须对描述信息、功能和行为的模型进行分解,用层次的方式展开细节。
3.1需求分析的任务
对软件系统的综合要求:功能需求、性能需求、可靠性和可用性需求、出错处理需求、接口需求、约束、逆向需求、将来可能提出的要求。 需求分析的任务:确定对系统的综合要求 分析系统的数据要求 导出系统的逻辑模型 修正系统开发计划
3.2与用户沟通获取需求的方法
访谈、面向数据流自顶向下求精、简易地应用规格说明技术,快速建立软件原型。 结构化分析方法就是面向数据流自顶向下求精进行需求分析的方法。
.
精品文档
快速建立软件原型是最准确、最有效、最强大的需求分析技术。
3.3分析建模与规格说明
需求分析过程应建立3种模型:数据模型、功能模型、行为模型。 数据流图是建立功能模型的基础。 状态转换图是行为建模的基础。
3.4实体-联系图(E-R)
E-R图中包含着实体(即数据对象)、关系和属性3种基本成分。
3.5数据规范化
第一范式:每个属性值都必须是原子值,即仅仅是一个简单值而不含内部结构。 第二范式:满足第一范式的条件,而且每个非关键字都由整个关键字决定(而不是由关键字的一部分来决定)。
第三范式:符合第二范式的条件,每个非关键字属性都仅由关键字决定,而且一个非关键字属性不能仅仅是对另一个非关键字属性的进一步描述(即一个非关键字属性值不依赖于另一个非关键字属性值)。
3.6状态转换图
状态转换图(简称状态图):通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。
在状态图中定义的状态主要有:初态(即初始状态)、终态(即最终状态)和中间状态。在状态图中只能有一个初态,而终态则可以有0至多个。 事件就是引起系统做动作或(和)转换状态的控制信息。
在状态图中,初态用一对同心圆(内圆为实心圆)表示。中间状态用圆角矩形表示。如图: 状态名 状态变量的 名字和值 活动表
活动表的语法格式:事件名(参数表)/动作表达式 在活动表中通常使用的3种标准事件: Entry事件指定进入该状态的动作 Exit事件指定退出该状态的动作 Do事件制定在该状态下的动作 状态转换:箭头指明的转换方向。
事件表达式的语法:事件说明【守卫条件】/动作表达式 事件说明与守卫条件同时使用时,则当且仅当事件发生且布尔表达式为真时,状态转换才发生;如果只有守卫条件没有事件说明则只要守卫条件为真,状态转换就发生。
守卫条件是一个布尔表达式。
.
精品文档
动作表达式是一个过程表达式,当状态表达式开始时执行该表达式。
3.7其他图形
层次方框图、warnier图、IPO图(输入、处理、输出图的简称)
3.8验证软件需求
从四个方面进行验证:一致性、完整新、现实性、有效性
3.9小结
五 总体设计
5.1设计过程
总体设计过程通常有两个主要阶段组成:系统设计阶段,确定系统的具体实现方案;结构设计阶段,确定软件的结构。 典型的总体设计过程包括下述9个步骤: 1)、设想宫选择的方案
需求分析阶段得出的数据流程图是总体设计的极好的出发点。 2)、选择合理的方案
对每个合理的方案,分析员都应准备下列四份材料: A.系统流程图
B.组成系统的物理元素清单 C.成本/效益分析
D.实现各个系统的进度计划 3)、推荐最佳方案 4)、功能分解 5)、设计软件结构
软件结构可以用层次图或结构图来描绘。 6)、设计数据库 7)、制定测试计划 8)、书写文档
这个阶段完成的文档有:系统说明、用户手册、测试计划、详细的实现计划、数据库设计结果。 9)、审查和复查
5.2设计原理
模块化、抽象、逐步求精、信息隐藏和局部化、模块独立
模块是由边界元素限定的相邻程序元素的序列,而且有一个总体标识符代表它。 模块是构成程序的基本构件。
模块化就是把程序分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。 抽象:把相似的方面集中和概括起来,暂时忽略它们之间的差异,或者说,抽出事物的本质特性而暂时不考虑它们之间的细节。
.
精品文档
逐步求精是人类解决复杂问题时采用的基本方法,也是许多软件工程技术的基础。定义:为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。
信息隐藏原理指出:应该这样设计和确定模块,使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。 局部化:把一些关系密切的软件元素物理地放得彼此靠近。
模块独立的概念是模块化,抽象,信息隐藏和局部化概念的直接结果。 模块独立化重要性的原因:第一,有效地模块化的软件比较容易开发出来;第二,独立的模块化比较容易测试和维护。
模块的独立程度可以由两个定性标准度量,这两个标准分别称为内聚和耦合。 耦合是对一个软件结构内不同模块之间互连程度的度量。
耦合的强弱取决于模块间接口的复杂程度,进入或访问一个模块的点,以及通过接口的数据。
如果两个模块彼此间通过参数交换信息,而且交换的信息仅仅是数据,那么这种耦合称为数据耦合。
如果传递的信息中有控制信息(尽管有时这种控制信息以数据的形式出现),则这种耦合称为控制耦合。 数据耦合是低耦合。 公共环境耦合、
最高程度的耦合式内容耦合。
内聚标志着一个模块内各个元素彼此结合的紧密程度,它是信息隐藏和局部化概念的自然扩展。
偶然内聚、逻辑内聚、时间内聚 低内聚、中内聚、高内聚的分类。
5.3启发规则
/软件结构提高模块独立性 模块规模应该适中
深度、宽度、扇出和扇入都应适当 模块的应用域应该在控制域之内 力争降低模块接口的复杂程度 设计单入口单出口的模块 模块功能应该可以预测
5.4描绘软件结构的图形工具
层次图和HIPO图 结构图
5.5面向数据流的设计方法
面向数据流的设计方法把信息流映射成软件结构,信息流的类型决定了映射的方法。
信息流分成两种类型:变化流、事物流(概念) 变换分析是一系列设计步骤的总称,经过这些步骤吧具有变换流特点的数据流图按预先确定的模式映射成软件结构。 变换分析的设计步骤。
.
精品文档
5.6小结
第6章 详细设计
目标:1.确定应该怎样具体的实现所要求的系统
2.设计出程序的“蓝图”
3.详细设计的结果基本决定了最终的程序代码的质量
6.1 结构程序设计
1.概念:结果程序设计是一种设计程序的技术,它采用自顶向
下逐步求精的的设计方法和单入口但出口的控制结构。
2.三种基本控制结构:
1)顺序结构:相当于“A、B”
2)选择结构:相当于“If exp then A else B endif;” 3) 循环结构:相当于“While exp do A” 3.扩充的两种控制结构:
1)多分支结构:相当于“Case I of I=1:C1;……I=n:Cn;” 2)UNTIL循环结构:相当于“Repeat A until exp;” 4.结构程序设计的种类:
1)经典的结构程序设计:只允许使用顺序、IF_THEN
_ELSE型分支和DO_WHILE型循环;
.
2)扩展的结构程序设计:除了三种基本控制结构,还使用