3第3章需求分析电子教案.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《3第3章需求分析电子教案.ppt》由会员分享,可在线阅读,更多相关《3第3章需求分析电子教案.ppt(77页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第3章章 软件设计软件设计 学习目标:u掌握软件设计的任务 u掌握模块划分的评价准则模块独立性的判别u掌握结构化设计方法 u掌握一些常用的详细设计工具 1第第3章章 软件设计软件设计 教学内容 3.1 软件设计的任务 3.2 软件设计的基本概念 3.3 结构化设计方法 3.4 设计优化 3.5 详细设计 本章小结 返回总目录23.1 软件设计的任务软件设计的任务 需求分析阶段的结果是需求规格说明书,它明确地描述了用户对系统的需求,解决了软件“做什么”的问题。在明确了要做的“问题”之后,现在应该着手寻求问题的“解答”,即解决软件“怎么做”的问题。软件设计是一个把软件需求转换成软件表示的过程,软
2、件设计分为两个阶段:u概要设计,将软件需求转换为软件结构和数据结构,并编写概要设计说明书;u详细设计,通过对软件结构的细化,得到软件的详细的算法和数据结构,产生描述软件的详细设计文档。33.1 软件设计的任务软件设计的任务 概要设计的基本任务有:制定规范软件系统结构的总体设计处理方式设计数据结构设计可靠性设计编写概要设计阶段的文档概要设计评审43.2 3.2 软件设计的基本概念软件设计的基本概念 返回目录主要教学内容:3.2.1 软件设计的概念 3.2.2 模块化与模块独立性 3.2.3 抽象与信息隐蔽 3.2.4 软件设计原则 53.2 软件设计的基本概念软件设计的基本概念 3.2.1 软件
3、设计的概念1逐步求精 逐步求精是把问题的求解过程分成若干步骤或阶段,每个步骤或阶段都比上一个步骤更精化,更接近问题的解法。逐步求精是与抽象化紧密相关的概念,是一个由抽象到具体的过程。软件工程的每一个阶段都是对软件解法的一次求精。可行性研究阶段是对软件设计的最高层次抽象。而在编码阶段,用源程序写出了问题的解法,这是软件设计的最低层次抽象。63.2 3.2 软件设计的基本概念软件设计的基本概念 2程序结构 程序结构最常用的是树状结构,它蕴涵了程序控制上的层次关系。位于最上层根部的是顶层模块,它是程序的主模块。与其联系的有若干下属模块,受其控制和调用。程序结构可以按水平方向或垂直方向进行划分。水平划
4、分按主要的程序功能来定义模块结构的各个分支。顶层模块是控制模块,用来协调程序各个功能之间的通信和运行。其下级模块的最简单的水平划分方法是建立3个分支:输入、处理(数据变换)和输出。这种划分的优点是:由于主要的功能相互分离,易于修改、易于扩充,且没有副作用。缺点是:需要通过模块接口传递更多的数据,使程序流的整体控制复杂化。73.2 3.2 软件设计的基本概念软件设计的基本概念 垂直划分也叫作因子划分,主要用在程序的体系结构中,划分时自顶向下逐层分布:顶层模块执行控制功能,极少涉及实际处理工作;而低层模块是实际输入、计算和输出的具体执行者。这种划分的优点是:对低层模块的修改不太可能引起副作用的传播
5、,而恰恰对计算机程序的修改常常发生在低层的输入、计算或输出模块中。因此,程序的整体控制结构不太可能被修改,便于将来的维护。83.2 3.2 软件设计的基本概念软件设计的基本概念 3数据结构 数据结构是数据的各个元素之间的逻辑关系的一种表示。数据结构设计应确定数据的组织、存取方式、相关程度,以及信息的不同处理方法。数据结构的组织方法和复杂程度可以灵活多样,但典型的数据结构种类是有限的,它们是构成一些更复杂结构的基本构件块。常用的数据结构类型有标量、数组、链表、自定义类型等。4局部化 局部化是指把一些关系密切的软件元素物理地放得彼此靠近。在模块中使用局部数据元素就是局部化的一个例子。显然局部化有利
6、于实现信息隐蔽。返回目录93.2 3.2 软件设计的基本概念软件设计的基本概念 3.2.2 模块化与模块独立性 1模块化 模块是数据说明、语句等程序对象的集合,单独命名而且可通过名字来访问,如过程、函数、子程序、宏等都可以作为模块。模块具有3个基本属性:(1)功能:模块实现的功能(含子模块的功能)。(2)逻辑:描述模块内部怎么做。(3)状态:模块使用时的环境和条件。模块具有内部和外部两个特性:(1)外部特性:模块的名字、参数表等。(2)内部特性:完成模块功能的程序代码和模块内部数据。103.2 3.2 软件设计的基本概念软件设计的基本概念 2模块的独立性 是指软件系统中每个模块只涉及软件要求的
7、具体的子功能,而和软件系统中其他的模块的接口是简单的。例如,若一个模块只具有单一的功能且与其他模块没有太多的联系,那么,则称此模块具有模块独立性。它的重要性在于:u模块独立性好的软件比较容易开发,便于多人合作开发同一个软件。u独立的模块比较容易测试和维护。u一般采用两个准则度量模块独立性,即模块与模块间的耦合性和模块内部的内聚性。113.2 3.2 软件设计的基本概念软件设计的基本概念 3藕合性 藕合是程序结构内不同模块之间相互关联程度的度量。它是由模块间接口的复杂程度、调用模块的方式及通过接口传递的信息类型决定的。模块之间的连接越紧密,联系越多,耦合性就越高,而其模块独立性就越弱。(1)非直
8、接耦合 如果两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用实现的,这就是非直接耦合,其模块独立性最强。123.2 3.2 软件设计的基本概念软件设计的基本概念 (2)数据耦合如果一个模块访问另一个模块时,彼此之间是通过数据参数(不是控制参数、公共数据结构或外部变量)来交换输入、输出信息的,则称这种耦合为数据耦合。由于限制了只通过参数表传送数据,所以按数据耦合开发的程序接口简单,安全可靠。数据耦合是松散的耦合,模块之间的独立性比较强。在软件设计中就多使用这类耦合。133.2 3.2 软件设计的基本概念软件设计的基本概念(3)特征耦合 如果一组模块通过参数表传递记录信息,就是
9、特征耦合。事实上,这组模块共享了某一数据结构的子结构,而不是简单变量。这就要求这些模块都必须清楚该记录的结构,并按结构要求对记录进行操作。143.2 3.2 软件设计的基本概念软件设计的基本概念 (4)控制耦合如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择被调用模块的功能,则称这种耦合为控制耦合。这种耦合的实质是在单一接口上选择多功能模块中的某项功能。因此,对被控制模块的任何修改,都会影响控制模块。另外,控制耦合也意味着控制模块必须知道被控制模块内部的一些逻辑关系,这些会降低模块的独立性。153.2 3.2 软件设计的基本概念软件设计的基本概念(5)外部耦合一组模块都访问同一全
10、局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。外部耦合引起的问题类似于公共耦合,区别在于在外部耦合中不存在依赖于一个数据结构内部各项的程序逻辑。(6)公共耦合若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。163.2 3.2 软件设计的基本概念软件设计的基本概念(7)内容耦合 如果一个模块直接访问另一个模块的内部数据;或者一个模块不通过正常入口转到另一模块内部;或者两个模块有一部分程序代码重迭;或者一个模块有多个入口,则两个模块之间就发生了内容耦合。在内容耦合的
11、情况下,被访问模块的任何变更,或者用不同的编译器对它再编译,都会造成程序出错。这种耦合是模块独立性最弱的耦合。173.2 3.2 软件设计的基本概念软件设计的基本概念4内聚性 内聚性标志一个模块内部各元素彼此结合的紧密程度。(1)偶然内聚 当几个模块内凑巧有一些程序段代码相同,又没有明确表现出独立的功能,把这些代码独立出来建立的模块称为偶然内聚。偶然内聚的缺点有:模块的内容不易理解、不易修改和维护,模块common的意义不明确。偶然内聚的目的主要是节约空间,在空间足够的情况下,应避免开发偶然内聚的模块。183.2 3.2 软件设计的基本概念软件设计的基本概念(2)逻辑内聚如果一个模块把几种相关
12、的功能组合在一起,每次被调用时,由传送给模块的控制参数来确定该模块应执行哪一种功能,称为逻辑内聚。逻辑内聚导致模块间的控制耦合。(3)时间内聚时间内聚模块大多为多功能模块,要求模块的各个功能必须在同一时间段内执行。如初始化模块或结束模块等。在一般情形下,各部分可按任意的顺序执行,所以它的内部逻辑更简单。193.2 3.2 软件设计的基本概念软件设计的基本概念(4)过程内聚 如果模块内的处理是相关的,而且必须以特定顺序执行,则称为过程内聚。在使用流程图作为工具设计程序时,常常通过流程图来确定模块划分。把流程图中的某一部分划出组成模块,就得到过程内聚模块。(5)通信内聚 如果一个模块内各功能部分都
13、使用了相同的输入数据,或产生了相同的输出数据,则称之为通信内聚模块。通常,通信内聚模块是通过数据流图来定义的。203.2 3.2 软件设计的基本概念软件设计的基本概念(6)信息内聚 模块完成多个功能,各个功能都在同一数据结构上操作,每一项功能有一个惟一的入口点。信息内聚模块可以看成是多个功能内聚模块的组合,并且实现信息的隐蔽。即把某个数据结构、资源或设备隐蔽在一个模块内,不为别的模块所知晓。这种封装增加了模块的独立性。(7)功能内聚 一个模块的各个成分都是完成某个具体任务必不可少的,这些成分协同工作,紧密联系,不可分割,则称为功能内聚。功能内聚的内聚度最高。满足功能内聚的模块执行一个功能,这是
14、判断模块是否是功能内聚的一个方法。返回目录213.2 3.2 软件设计的基本概念软件设计的基本概念3.2.3 抽象与信息隐蔽 1抽象 抽象(Abstraction)就是提取出事物的本质特征而暂时不考虑它们的细节。在软件设计中,涉及到众多的物理元素。如果一开始就考虑细节问题,就不可能做到精确思维。所以抽象化对于软件设计十分重要。在软件设计中,可以有不同的抽象层次。在最高的抽象层次上,用问题所处环境的语言概括描述问题的解答。在最低层次,用直接实现的方式来描述问题的解答。而在中间层次,则采用过程化的方法。223.2 3.2 软件设计的基本概念软件设计的基本概念(1)过程抽象 在软件生存期中,从问题定
15、义到程序的实现(源代码),每进展一步都可以看作是对软件解决方法的抽象化过程的一次细化。如在软件计划阶段,可以将整个软件系统当作一个简化的整体元素来看待;在需求分析阶段,用问题所处环境的术语来描述软件的解决方法;而在软件设计阶段,随着从概要设计到详细设计的进行,抽象的层次逐渐降低;当产生源代码时达到最低的抽象层次。233.2 3.2 软件设计的基本概念软件设计的基本概念(2)数据抽象 数据抽象允许设计人员在不同的抽象层次上描述数据对象的细节。数据抽象把一个数据对象的定义抽象为一个数据类型名,用此类型名可定义多个具有相同性质的数据对象。在抽象数据类型的定义中还可以加入一组操作的定义,用以确定在此数
16、据对象上可以进行的操作。(3)控制抽象 与过程抽象和数据抽象一样,控制抽象可以包含一个程序控制机制而无须规定其内部细节。关于控制抽象的一个例子就是在操作系统中用以协调某些活动的同步信号。243.2 3.2 软件设计的基本概念软件设计的基本概念2信息隐蔽 这一指导思想的目的是为了提高模块的独立性,当修改或维护模块时减小把一个模块的错误扩散到其他模块中去的机会。在这一思想的指导下,在软件开发中先后出现了“数据封装”(Data Encapsulation,指在一个模块中包含一个数据结构和在此数据结构上执行的操作),“抽象数据类型”(Abstract Datatype,指一种数据类型,其中可包含在该类
17、型的实例上执行的操作)等设计方法。返回目录253.2 3.2 软件设计的基本概念软件设计的基本概念3.2.4 软件设计原则 软件的设计原则应遵循以下几个方面:(1)功能分解。功能分解是非常朴素、普通的思想,是人们处理复杂问题常用的方法。然而,也是非常容易遗忘的思想。很多设计人员总是雄心勃勃,试图设计出非常复杂的算法,非常完美的结构,不是将问题简化,而是将问题复杂化。而实践证明,这些出发点就是有偏差的。软件领域以外的很多实践和经验,都证明了分工、分解是处理复杂系统的基本前提。263.2 3.2 软件设计的基本概念软件设计的基本概念(2)设计对于分析模型应该是可跟踪的(软件的模块可能被映射到多个需
18、求上)。(3)设计结构应该尽可能地模拟实际问题。(4)设计应该表现出一致性。(5)不要把设计当成编写代码。(6)在创建设计时就应该能够评估质量。(7)在设计阶段就要注重软件的重用。(8)评审设计以减少语义性的错误。返回目录273.3 结构化设计方法结构化设计方法 主要教学内容:3.3.1 系统结构图 3.3.2 变换分析 3.3.3 事务分析 返回目录 283.3 结构化设计方法结构化设计方法结构化设计方法(StructuredDesign,SD)是20世纪70年代中期由StevensMyers与Constantine等人率先倡导的,它是一种面向数据流的设计方法,是基于模块化、自顶向下逐层细化
19、、结构化程序设计等程序设计技术基础上发展起来的。使用该方法时应注意以下几点:(1)首先研究、分析和审查数据流图。从软件的需求规格说明中弄清数据流加工的过程。293.3 结构化设计方法结构化设计方法(2)然后根据数据流图决定问题的类型。数据处理问题典型的类型有两种:变换型和事务型。针对两种不同的类型分别进行分析处理。(3)由数据流图推导出系统的初始结构图。(4)利用一些试探性原则来改进系统的初始结构图,直到得到符合要求的结构图为止。(5)修改和补充数据词典。(6)制定测试计划。303.3 结构化设计方法结构化设计方法3.3.1 系统结构图 系统结构图(Structure Chart,SC)是SD
20、方法使用的主要描述工具,用来描述软件的组成模块及其调用关系。1SC图的组成 一般地,在系统结构图中有4种类型的模块:u传入模块:从下属模块取得数据,经过某些处理,再将其传送给上级模块。u传出模块:从上级模块获得数据,进行某些处理,再将其传送给下属模块。313.3 结构化设计方法结构化设计方法u变换模块:即加工模块。它从上级模块取得数据,进行特定的处理,转换成其他形式,再回传给上级模块。大多数计算模块(原子模块)属于这一类。u协调模块:对所有下属模块进行协调和管理的模块。在系统的输入输出部分或数据加工部分可以找到这样的模块。在一个好的系统结构图中,协调模块应在较高层出现 323.3 结构化设计方
21、法结构化设计方法2SC图中的模块调用 (1)简单调用 (2)选择调用 (3)循环调用3SC的结构形式 所有系统的DFD结构可分为两种典型形式:即变换型结构和事务型结构。相应地,由数据流图转换成的软件结构图也有变换型和事务型两种结构。(1)变换型结构变换型数据流图中数据的处理过程大致可分为3步,即输入数据、变换数据和输出数据。333.3 结构化设计方法结构化设计方法将变换型数据流图映射为软件结构图的方法是:首先将数据流图的输入、变换和输出部分分别转换为输入、变换和输出模块;然后在输入、变换和输出模块之上增加总控模块,以调度这3个模块,协调完成任务。总控模块的工作过程如下:u调用输入模块,获取输入
22、数据;u调用加工模块,将获取的输入数据传给加工模块,获取加工模块加工好的数据;u调用输出模块,将获取的加工好的数据传给输出模块,由输出模块输出该数据。343.3 结构化设计方法结构化设计方法(2)事务型结构事务型数据流图有一个明显的事务中心,它接受一项事务,根据该事务的特点和性质,选择分配一个适当的处理单元,然后输出结果。所以,事务型数据流图由接受事务、事务中心和若干处理单元输出结果部分组成。将事务型数据流图映射为软件结构图的方法是:首先将数据流图中的各个部分转换成软件结构图中的相应模块;然后增加调度模块,让它调度n个处理单元,最后让事务中心模块调度接受事务、调度和输出结果模块。353.3 结
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 需求 分析 电子 教案
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内