一般说来需求分析阶段的任务包括下述几方面: 1) 确定对系统的综合需求
对系统的综合需求主要有:系统功能需求、系统性能需求、可靠性和可用性需求、 错处理需求、接口需求、约束、逆向需求、将来可能提出的需求: 2) 分析系统的数据需求
就是在理解当前系统“怎样做”的基础上,抽取其“做什么”的本质,明确目标系统要“做什么”,可以导出系统的详细的逻辑模型。具体做法:首先确定目标系统与当前系统的逻辑差别;然后将变化部分看作是新的处理步骤,对功能图(一般为数据流图)及对象图进行调整;最后有外及里对变化的部分进行分析,推断其结构,获得目标系统的逻辑模型。通常用数据流图、数字字典和主要的处理算法描述这个逻辑模型。 3) 导出系统的逻辑模型 4) 修正系统开发计划
在经过需求分析阶段的工作,分析员对目标系统有了更深入更具体的认识,因此可以对系统的成本和进度做出更准确地估计,在此基础上应该对开发计划进行修正。
5)开发原型系统:使用原型系统的主要目的是,使用户通过实践获得关于未来的系统将怎样为他们工作的更直接更具体的概念,从而可以更准确地提出他们的要求。
4、需求分析的步骤:1)调查研究 2)分析与综合 3)书写文档 4)需求分析评审 5、需求分析的原则:
1)、必须能够表达和理解问题的数据域和功能域 2)、按自顶向下、逐层分解问题 3)、要给出系统的逻辑视图和物理视图 6、软件需求的验证:
需求分析阶段的工作结果是开发软件系统的重要基础,大量统计数字表明,软件系统中15%的错误起源于错误的需求。为了提高软件质量,确保软件开发成功,降低软件开发成本,一旦对目标系统提出一组要求之后,必须严格验证这些需求的正确性。一般说来,应该从下述4个方面进行验证: (1) 一致性所有需求必须是一致的,任何一条需求不能和其他需求互相矛盾。
(2) 完整性需求必须是完整的,规格说明书应该包括用户需要的每一个功能或性能。
(3) 现实性指定的需求应该是用现有的硬件技术和软件技术基本上可以实现的。对硬件技术的进步可以做些预测,对软件技术的进步则很难做出预测,只能从现有技术水平出发判断需求的现实性。 (4) 有效性必须证明需求是正确有效的,确实能解决用户面对的问题。
7、 状态转换图(!!!!!!!!!!!!!!!!!!!!):指明了作为外部事件结果的系统行为。为此,状态转换图描绘了系统
的各种行为模式(称为“状态”)和在不同状态间转换的方式。状态转换图是行为建模的基础。 思考:
利用DFD图进行需求分析:
在结构化分析方法中,用以表达系统内数据的运动情况的工具有( A )。
6
供选择的答案:
A. 数据流图 B. 数据词典 C. 结构化英语 D. 判定表与判定树
在结构化分析方法中用状态―迁移图表达系统或对象的行为。在状态―迁移图中,由一个状态和一个事件所决定的下一状态可能会有( A )个。 供选择的答案:
A. 1 B. 2 C. 多个 D. 不确定 五、总体设计(概要设计)
重点掌握的内容:概要设计的过程和方法 一般掌握的内容:概要设计的文档和评审 考核知识点: 一、总体设计:
1、总体设计的目的:总体设计的基本目的就是回答“概括地说,系统应该如何实现?”这个问题,因此,总体设计又称为概要设计或初步设计。1、面向结构设计(SD)2、面向对象设计(OOD) 2、总体设计的任务:
1)系统分析员审查软件计划、软件需求分析提供的文档、提出最佳推荐方案,用系统流程图,组成物理元素清单,成本效益分析,系统的进度计划,供专家沈顶峰,审定后进入设计
2)去顶模块结构,划分功能模块,将软件功能需求分配给所划分的最小单元模块。确定模块之间的联系,确定数据结构、文件结构、数据库模式,确定测试方法与策略。
3)编写概要设计说明书,用户手册,测试计划,选用相关的软件工具来描述软件结构,结构图是经常使用的软件描述工具。选择分解功能与划分模块的设计原则,例如模块划分独立性原则,信息隐蔽原则等
3、总体设计过程通常由两个主要阶段组成:系统设计阶段,确定系统的具体实现方案;结构设计阶段,确定软件结构。
4、典型的总体设计过程包括下述9个步骤: 1)、设想功选择的方案 2)、选取合理的方案 3)、推荐最佳方案 4)、功能分解 5)、设计软件 6)、设计数据库 7)制定测试计划
8)、书写文档:系统说明、用户手册、测试计划、详细的实现计划、数据库设计结果;
7
9)、审查和复审
二、设计原理分析(模块化,在模块化程序设计中,按功能划分模块的原则是,模块化和软件成本关系): 模块具有输入和输出(参数传递)、功能、内部数据结构(局部变量)和程序代码四个特性
1、模块化:就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求.
2、模块化的根据:把复杂的问题分解成许多容易解决的小问题,原来的问题也就容易解决了.
模块化和软件成本关系:根据总成本曲线,每个程序都相应地有一个最适当的模块数目M,,使得系统的开发成本最小.
3、模块设计的准则:
(1) 改进软件结构, 提高模块独立性:在对初步模块进行合并、分解和移动的分析、精化过程中力求提高模块的内聚,降低藕合。
(2) 模块大小要适中:大约50行语句的代码,过大的模块应分解以提高理解性和可维护性;过小的模块,合并到上级模块中。
(3) 软件结构图的深度、宽度、扇入和扇出要适当。一般模块的调用个数不要超过5个。 (4) 尽量降低模块接口的复杂程度; (5) 设计单入口、单出口的模块。 (6) 模块的作用域应在控制域之内。
4、抽象的概念:抽出事务的本质特性而暂时不考虑它们的细节.
5、 信息隐蔽:模块中所包括的信息不允许其它不需这些信息的模块调用
信息局部化:是把一些关系密切的软件元素物理地放得彼此靠近 6、 什么是模块独立性?
答:模块独立性概括了把软件划分为模块时要遵守的准则,也是判断模块构造是不是合理的标准。
7、 模块独立性:是软件系统中每个模块只涉及软件要求的具体子功能,而和软件系统中的 其它的模块接口是简
单的。模块独立的概念是模块化、抽象、信息隐蔽和局部化概念的直接结果。 8、 为什么模块的独立性很重要?
答:1)有效的模块化的软件比较容易开发出来
2)独立的模块比较容易测试和维护。总之,模块独立是好设计的关键,而设计又是决定软件质量的关键环节。 9、 衡量模块独立的两个标准是什么?它们各表示什么含义?
答:衡量模块的独立性的标准是两个定性的度量标准:耦合性和内聚性。
(1)耦合性。也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息。
8
(2)内聚性。又称块内联系。指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。若一个模块内各元素(语句之间、程序段之间)联系得越紧密,则它的内聚性就越高。
耦合性与内聚性是模块独立性的两个定性标准,将软件系统划分模块时,尽量做到高内聚低耦合,提高模块的独立性,为设计高质量的软件结构奠定基础。
模块的高内聚、低耦合的原则称为模块独立原则,也称为模块设计的原则。 10、启发规则:
1) 改进软件结构提高模块独立性 2) 模块规模应该适中
3) 深度、宽度、扇出、、和扇入都应适当
深度表示软件结构中控制的层数,它往往能粗略地标志一个系统的大小和复杂程度。
宽度是软件结构内同一个层次上的模块总数的最大值;一般来说,宽度越大系统越复杂。对宽度影响最大的因素是模块的扇出。
一个模块的扇入是指直接调用该模块的上级模块的个数。 一个模块的扇出是指该模块直接调用的下级模块的个数。 设计原则:低扇出、高扇入。
4) 模块的作用域应该在控制域内 5) 力争降低模块接口的复杂程度 6) 设计单入口和单出口的模块 7) 模块功能应该可以预测 三、概要设计的方法:
1、面向数据流的设计方法把信息流映射成软件结构,信息流的类型决定了映射的方法。面向数据流的设计要解决的任务,就是上述需求分析的基础上,将DFD图映射为软件系统的结构。 2、数据流图的类型:交换型结构和事务型结构
交换型结构:由3部分组成,传入路径,变换中心,输出路径 系统的传入流经过变换中心的处理,变换为系统的传出流。
事务型结构:有至少一条接受路径,一个事务中心与若干条动作路径组成。当外部信息沿着接受路径进入系统后,经过事务中心获得某个特定值,就能据此启动某一条动作路径的操作。
9
四、结构化设计
1、结构化设计方法:是一种面向数据流的设计方法,中心任务就是把用DFD图表示的系统分析模型转换为软件结构的设计模型,确定软件的体系结构域接口。 2、结构化方法的步骤:
1)复审DFD图,必要时刻再次进行修改或细化:
2)鉴别DFD图所表示的软件系统的结构特征,确定它所代表的软件结构是属于变换型还是事务型。 3)按照SD方法规定的一组规则,吧DFD图转换为初始的SC图。 变换型DFD图事务型DFD图3、结构设计的优化规则:
1)对模块分割、合并和变动调用关系的指导规则:以提高模块独立性为首要标准,除此之外,适当考虑模块的大小。
2)保持高扇 / 入低扇出原则 3)作用域 / 控制域规则: 作用域不要超出控制域的范围;
软件系统的判定,其位置离受它控制的模块越近越好。 六、 详细设计
初始SC图 初始SC图
重点掌握的内容:详细设计的任务和方法
一般掌握的内容:详细设计的原则和详细设计的规格与评审 考核知识点:
10