结构化开发方法.ppt
《结构化开发方法.ppt》由会员分享,可在线阅读,更多相关《结构化开发方法.ppt(130页珍藏版)》请在三一办公上搜索。
1、第3章 结构化开发方法,结构化开发方法,20世纪70年代发展起来的最早的开发方法典型的结构化开发方法美国的Coad/Yourdon的面向数据流的开发方法欧洲的Jackson/Warnier-Orr的面向数据结构的开发方法日本小村良彦的PAD(问题分析图)开发方法,本章内容安排,需求与需求分析结构化分析软件设计面向数据流的设计面向数据结构的设计PAD图的设计原型开发,需求与需求分析,需求分析的意义完全弄清用户软件需求是任何一项软件开发工作成功的前提和基础需求分析的作用是系统层软件配置与软件设计之间的桥梁能够刻画软件的功能和性能确定软件与其他系统元素(硬/软件和人)的接口建立软件必须满足的约束需求
2、分析的产品为软件设计提供可用的数据、体系结构、人-机界面和过程设计模型为开发者和用户提供对软件质量进行最后验收的准则,分析过程,软件需求分析过程1.问题识别2.评价和综合3.建模4.规格说明5.评审,1.问题识别,问题识别(Problem Recognition)研究系统规格说明和软件项目计划必须为分析建立各种沟通(communication)关系 目标是弄清用户已经理解的基本问题元素,2.评价和综合,评价和综合(Evaluation and Synthesis)必须评价信息流和信息内容定义和详细描述全部软件功能熟悉影响系统事件前后关系的软件行为建立系统界面的特征揭示设计限制综合出一个或多个解
3、,3.建模(Modeling),系统建立模型的目的主要是说明系统必须做什么,而不是怎么做建模的方法问题域划分-必须把大且复杂的问题划分为小且较简单的问题划分的方法-可以按垂直方向对功能逐层细化或按水平方向对功能进行分解,也可两者兼有软件需求是给出要完成的功能和处理信息上,而不应该把实现观点作为给出要完成功能和要处理数据的出发点模型的表达式(representation)图形表格专用语言和自然语言,模型的重要作用,用辅助分析员更好地了解系统的信息、功能和行为,从而使分析更容易和更系统化是评审系统完整性、一致性和规格说明准确性的关键元素是设计的基础,能给设计人员提供一种软件的基本表达式,它可以影射
4、为实现文档,4.规格说明(Specification),Balyer和Goldman提出了获得良好的规格说明的8条原则(1)从现实中抽象功能性(2)要求一个面向过程的系统规格说明的语言(3)必须围绕整个系统,而软件只是它的一个部分(4)必须围绕系统的操作环境(5)必须是一个可以认知的模型(6)必须是可操作的(7)必须允许它是不完整的和可扩展的(8)必须是局部化和松散耦合的,软件需求规格说明,软件需求规格说明 是在对用户需求分析的基础上,把用户的需求规范化、形式化而写成的,其目的:为软件开发提出总体要求作为用户和开发人员之间相互了解和共同开发的基础具有合同的性质初步用户手册初步用户手册作为软件需
5、求规格说明的附件这是为了使开发人员与用户之间更好的沟通必须开发 的。其重点放在用户的功能和I/O上,主要用来发现系统 功能和人-机界面上存在的各种问题 一,软件需求规格说明(GB 8567-88),1.引言1.1编写说明1.2背景1.3定义1.4参考资料2.任务概述2.1目标2.2用户的特点2.3假定与约束,3.需求规定3.1对功能的规定3.2对性能的规定精度时间特性要求灵活性3.3 I/O需求3.4数据管理能力要求3.5故障处理要求3.6其它专门需求4.运行环境规定,5.评审,软件需求规格说明的评审是由软件开发者和用户共同完成在宏观高层上评审者要保证规格说明的完整、一致和准确,评审时需要考虑
6、14个方面的问题(教材3637页)在详细低层上为了得到对上述各种问题的回答。评审者可以集中在规格说明的用词上,这样做能够发现隐藏在规格说明内容中的问题。详细评审建议大纲可以从10个方面的用词考虑(教材37页)评审一旦完成,用户和开发者要双方签字,成为软件开发的合同原型开发是解决软件需求规格说明确定中各种问题的可选方法,分析员,有许多叫法系统分析员、系统工程师、程序员、分析员分析员必须具备的条件有掌握抽象概念,并能把其整理为逻辑划分和根据每一个逻辑划分综合为解的能力有从冲突或混惑中吸取恰当事实的能力有弄清用户环境的能力有把硬件和软件系统用于用户环境的能力有较好的用书面和口头形式进行沟通的能力有“
7、从树木见森林”的能力。这是区分一位真正杰出的分析员与一般分析员的标准。只有懂得软件工程的分析员才做一能做到这一点,结构化分析(structured analysis,SA),是一种信息流内容和结构的建模技术是基于计算机系统的一种信息变换,DFD基本符号,实例:一个简化的机票销售系统,需求 售票员根据旅客需要的航班,首先查询有无该航班机票。若有,则负责录入旅客的基本信息(姓名、身份证号码、航班号、票价和到达港);保险公司的服务员负责录入保险金额;售票部经理可随时查询每一个航班的售票情况(航班号、售出机票的数量及营业额),并在当日结算时能计算出日营业额 给出该系统的DFD和DD,DFD(Data
8、Flow Diagram),本系统DFD(一种方案)顶层DFD(0层)二层DFD(1层)三层DFD-1(2层-1)三层DFD-2(2层-2),顶层DFD(0层),二层DFD(1层),三层DFD-1(2层-1),三层DFD-2(2层-2),DD(Data Dictionary),本系统DD(一种方案)文件(File)数据流(Data Flow)数据项(Data Item)最小处理(Minimum Process)这里只给出一个简化了的机票销售系统DFD图中的部分条目定义。在实际应用中,应给出全部必须说明条目的定义,数据字典-文件,1.文件1)文件名:旅客基本信息 组成:姓名+身份证号码+航班号+
9、票价+到达港+保险金额 组织:按售票先后顺序2)文件名:机票销售信息 组成:航班号+座位数+售出机票数 组织:按航班号、离港时间的先后顺序排序,数据字典-数据流,2.数据流1)数据流名:旅客基本信息 组成:姓名+身份证号码+航班号+票价+到达港+保险金额2)数据流名:各航班售票信息 组成:航班号+座位数+售出机票数,数据字典-数据项,3.数据项1)数据项名:姓名 值:字符串2)数据项名:身份证 值:1-17位为数字,18位为校验位,值为0-9、X3)数据项名:航班号 值:前两位为汉语拼音字母后四位方数字4)数据项名:保险金额 值:204060200,数据字典-最小处理,4.处理名1)处理名:录
10、入保险金额 编号:1.4 输入:保险级别 输出:保险金额 过程:保险服务员根据每位旅客的要求,输入保险级别,系统按照保险金额规定的标准,录入旅客保险金额 触发条件:接到服务员输入旅客姓名和保险金额级别,DFD图中信息流的细化,分析方法-DFD分解规则,在求解DFD的过程中应有以下规则0层数据流图,应当把系统或软件作为一个单一的圆圈来描绘应当格外注意原始输入和原始输出过程的下层细化,一般应控制在3-4个分过程,最多不应超过7个过程(圆圈)和数据流(箭头)应用有意义的名称标注。在同一DFD中,一个名称标注只能出现一次,分析方法-DFD分解规则(续),必须保持层到层之间I/O信息流的连续性最好一次只
11、对一个过程细化;一个过程的细化,一般应细化到最小处理为止一个系统给出DFD的同时,还应开发一个与之对应的DD在开发DFD和DD中,有时还需要给出辅助说明,软件设计,是软件工程过程的技术核心是一个把软件需求转换为软件表达式的过程首先,这种表达式只描绘一个软件的概貌然后,将其细化为一个非常接近于源代码的设计表达式是决定软件质量的重要步骤,它给我们提供了可以进行质量评价的软件表达式软件设计的发展是一个持续的过程早期着重于开发模块化所需要的准则,以及按自顶向下的方式逐步细化软件体系结构接着设计定义的过程逐渐发展成结构化编程原则之后提出了把数据流和数据结构翻译为设计定义的方法近年则建议采用OO设计方法和
12、形式化方法,软件设计准则,为了评价设计表达式的质量,必须建立良好的设计准则:有分层的组织结构应模块化(软件应被逻辑地划分为能完成特定的功能和子功能的构件)有性质不同可区分的数据和过程表达式形成具有独立功能特征的子过程减小子过程间和与外部环境间接口的复杂性应利用需求分析中得到的信息和可重复的方法,设计的基本原理,1.抽象(abstraction)2.细化(refinement)3.模块化(modularization)4.软件体系结构5.控制层次6.数据结构7.软件过程8.信息隐藏,抽象,抽象是强调所注意的方面,而忽略与当前目标无关方面的原理软件工程过程中的每一步都是对软件解的抽象层次一次细化在
13、抽象的最高层可以使用问题环境语言以概括的方式叙述问题的解;在抽象的较低层采用更为过程化的方法;在抽象的最低层则用直接实现的方式来说明抽象的应用对理解各种形式的计算机系统和进行系统开发都是十分重要的,示例:二维绘图系统,第一层抽象该软件包括一个计算机图形接口,它能在 绘图员和鼠标之间进行可视化通信,鼠标代替了绘图板和丁字尺。所有的直线和曲线描绘、所有的几何计算、所有的剖面图和辅助视图都可以由CAD软件来完成。画法存储在一个绘图文件中,它包括所有几何、文本和辅助设计信息 由此可见,其解是使用问题环境语言来概括的,示例:二维绘图系统,第二层抽象CAD软件的任务:用户交互任务;二维图形绘制任务;图形显
14、示任务;绘图文件管理任务;结束 应当注意:应把与CAD软件有关的每一个软件任务都列出来。所用术语已离开问题所处环境,但仍不是实现说明,示例:二维绘图系统,第三层抽象procedure:二维图形绘制 repeat until绘图任务终止 do while与绘图机进行交互 绘图机接口任务;终止绘图请求;直线:直线绘制任务;曲线:曲线绘制任务;卜 end;do while与键盘进行交互 键盘交互任务;分析/计算选择;视图:辅助视图任务;剖面图:横剖面任务;end;end repetitionend procedure.在这个层次上一个初步的过程表示已经产生。其所用术语已经是面向程序(使用了do wh
15、ile等结构),并开始显一出楼模块化的意义,细化,细化是一种自顶向下的设计策略程序的体系结构开发是由过程的细节层次不断细化而成分层开发则是逐步分解一个宏功能(一个过程抽象)直到获得编程语言语句每一步细化都隐含着一定的设计决策随着任务的细化,数据也要细化、分解或结构化,模块化,模块(module)是单独命名和可编址的构件模块化是软件的一个重要属性模块化使得一个程序易于为人们所理解、设计、测试和维护模块化过程中,必须减少接口的复杂性,提高模块的独立性,才能有效地降低软件总的复杂性,模块化原则,软件体系结构,软件体系结构包含了过程构件(模块)的层次结构和数据结构结构决定于软件设计方法。由于各种设计方
16、法的原理不同,因而同一个软件需求也会导出不同的软件件系结构到底哪一种设计方法最好?可以通过分析的方法来确定它们的整体质量,需求分析到设计的转换,可供选择的结构,控制层次,常用的为树形结构深度表示控制的层次,宽度表示同一个层次上控制的最大数扇出(fan out)是对一个模块直接控制其他模块数目的量度,扇入(fan in)则是一个给定模块被多少个模块直接控制的量度,树形控制结构图,数据结构,数据结构是一种数据各元素之间逻辑关系的表达式数据结构与程序结构同样重要。因为数据结构影响最后的过程设计数据结构决定信息的组织、存取方法和结合程度,以及可选的处理方法,软件过程,软件过程则着重于每一个单独模块的处
17、理细节,而软件体系结构中模块只表明它们所处的位置、应完成的功能,以及I/O关系过程必须提供精确的处理规格说明,包括事件的顺序、确切的抉择点、重复的操作,以及数据的组织与结构每个模块的处理中必须说明该模块的所有从属模块软件过程的表示也是分层的,一个模块内的过程,过程的分层,信息隐藏,模块设计决策的特征彼此是隐藏的。即包含在模块内的信息(过程和数据)对其他不需要这些信息的模块是不可访问的有效的模块化应该通过一组独立的模块来达到这样做的结果,对模块的设计、编码测试和维护带来极大的好处,模块化设计:模块的独立性,模块的独立性是模块化、抽象和信息隐藏概念的产物模块的独立性是通过开发具有单一功能和与其他模
18、块没有过多交互作用的模块来达到的可用聚合(Cohesion)和耦合(Coupling)两个定量准则来度量(measurement)聚合是模块功能相对强度的量度(metrics)耦合是模块之间相对独立性的量度两者相互关联。在一个系统中一个高,另一个就低,聚合的7个等级,偶然聚合逻辑聚合时间聚合过程聚合通信聚合顺序聚合功能聚合,聚合度最低,最差,聚合度最高,最好,耦合的7个等级,非直接耦合数据耦合标记耦合控制耦合外部耦合公共耦合内容耦合,耦合度最低,最好,耦合度最高,最差,降低耦合度,为了减少模块间的耦合,可以采取下列措施在耦合方式上可通过CALL语句调用(非直接耦合),而不采用直接引用(内容耦合
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 结构 开发 方法
链接地址:https://www.31ppt.com/p-6015492.html