软件设计基础_第1页
软件设计基础_第2页
软件设计基础_第3页
软件设计基础_第4页
软件设计基础_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 1第五章第五章软件设计基础软件设计基础软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 25.1软件开发的逐步求精l 基本概念l抽象是控制复杂性的基本策略。“抽象” 要求人们将注意力集中在某一层次上考虑问题,而忽略那些低层次的细节。l求精也称细化、精华、具体化,就是降解抽象。l逐步求精是自定向下、逐层分解、分而治之来解决复杂问题的思想方法。求精的每一步都是用更为详细的描述替代上一

2、层次的抽象描述。l细化(具体化)与抽象互补,因为分级抽象的过程也是逐步求精的过程,细化降低抽象,抽象降低细化;软件设计过程是在不同抽象级别上考虑和处理问题的过程软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 35.1软件开发的逐步求精l软件开发的细化求精过程l面向企业级的应用软件开发就是将“客观世界”表达在“计算机世界”里的处理过程,这个过程就是由“抽象”到“具体”的求精过程。l软件开发就是通过对模型的逐步细化,模型从“分析模型”到“设计模型”再到“编码模型”。 客观世界客观世界计算机世界计算机世界逐步细化逐

3、步细化(映射映射)需求获取(自然语言)需求分析(分析模型)结构设计(结构模型)过程设计(算法描述)编码(计算机语言)开发起点开发起点开发终点开发终点软件需求阶段软件设计阶段软件实现阶段抽象抽象具体具体建模语言建模语言软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 45.1软件开发的逐步求精l在软件规划和需求分析阶段,问题定义、需求获取是用问题域约定的习惯用语(行业术语)表达对客观系统的最高层抽象,分析建模就是向具体化迈进的最初一步,是对最高层抽象的第一次降解 。l进入软件设计,将分析模型细化成设计模型,而设计

4、模型先从结构设计再过渡到详细设计,抽象级别在逐次降低,逐步向具体化即计算机语言靠近 。l实现就是用形式化语言(编程语言/计算机语言)表达的计算模型,也称实现模型(编码模型/程序)。编码完成后达到了抽象的最低级,也是具体化的最高级 。l高级抽象到低级抽象(抽象高级抽象到低级抽象(抽象具体)的转换过程中主要指一系具体)的转换过程中主要指一系列的过程抽象和数据抽象。列的过程抽象和数据抽象。软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 55.1软件开发的逐步求精l 过程抽象与数据抽象l过程抽象:把用文字形成的功能描

5、述演变成代码。l 例:用户到储蓄所提取存款。l 抽象l用户手工填写用户名及提取金额,由操作员输入用户名和金额,系统进行身份验证和余额验证,两个条件通过执行提取现金操作,否则提示错误信息,操作成功账户余额被更新,并显示和打印本次提款的结果。软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 65.1软件开发的逐步求精l 抽象l 取款业务的后台操作Drawing_Operation :l beginl响应前台页面请求,获取前台数据;l连接数据资源;l验证用户身份l验证储户余额;l更新储户余额;l导航到下个页面显示更新

6、的数据;l end软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 75.1软件开发的逐步求精软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 85.1软件开发的逐步求精l数据抽象l 数据抽象:文字表达的数据结构演变成数据库表和存储过程。数据抽象数据抽象:文字表达的数据结构演变成数据库表和存储过程。数据抽象与过程抽象一样,能使设计者按不同的详细程度表示数据对象。与过程抽象一样,能使设计者按不同的详细程度表示数据对象。 l 如定义

7、一个储户的账户信息的数据对象。 l 抽象l 账户信息储户身份号+姓名+余额+更新纪录(类型+日期+数额+操作员软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 95.1软件开发的逐步求精l 抽象lTYPE account IS STRUCTURE DEFINEDlidentity IS INTEGER LENTH(12);lname IS STRING LENTH(12);lbalance IS FLOAT LENTH(12);lupdate_type IS STRING LENTH(8);lupdate_da

8、te IS DATE;lupdate_ amount IS STRING LENTH(10);loperator IS INTEGER LENTH(12);lEND account TYPE;l 抽象l 具体的数据库表设计和定义此类数据对象的一组操作。l 对“开门”的抽象?软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 105.2软件设计过程和任务l软件设计的输入和输出l软件设计可看作将需求规格说明逐步转换为软件源代码的中间过渡过程。l软件设计阶段的工作是以需求分析阶段的成果为前提和基础的,即经过系统分析小组

9、签字认可的需求规格说明书及有关技术文档作为设计阶段的输入,由软件设计师完成该阶段工作 。l 活动输入:需求规格说明书;l 活动输出:设计规格说明书;l 活动目标:需求模型转换成设计模型;l 活动过程:层层分解,逐步求精;需求规格说明(需求模型)设计规格说明(设计模型)层层分解、逐步求精软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 115.2软件设计过程和任务结构设计详细设计体系结构设计:是软件运行的环境,也称高层设计;领域问题结构设计:对分析模型进行细化的结果,也称底层设计;业务逻辑设计;接口设计(人机、软

10、件、网络);数据设计(数据的逻辑设计);数据库和表(数据的物理设计);模块内部逻辑与数据结构设计;界面设计;算法+数据结构软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 125.2软件设计过程和任务l 软件设计的任务l软件设计包括两大部分,l 一个是结构设计,另一个是详细设计。l系统结构设计(architectural design)也叫总体(general)设计或概要(preliminary)设计。l 程序构件(模块)的结构和组织,这些构件的交互形式以及这些勾结所有数据的结构。l 属性l结构特点:构件被封装

11、的方式以及交互的方式l外部功能:体系结构的描述应指出如何满足需求l相关系统族:相似系统开发中经常遇到的重复性模式l系统的过程设计(procedural design)也叫详细(detail)设计 l概要设计是根据需求确定软件和数据的总体框架,详细设计是将其进一步精化成软件的算法表示和数据结构。 软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 135.2软件设计过程和任务l 体系结构风格的简单分类l以数据为中心的体系结构l数据流体系结构(管道-过滤器)l调用和返回体系结构l面向对象体系结构l层次体系结构l事件驱

12、动体系结构l基于解释器的体系结构软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 145.2软件设计过程和任务l 软件设计的文档l设计阶段产生的文档称为设计说明DD(Design Description),DD可以有多个,如:l软件(结构)设计说明(SDD)l接口设计说明(IDD)l数据库(顶层)设计说明(DBDD)l系统/子系统设计(结构设计)说明(SSDD)l详细设计说明(PDD) l其中SDD是必须的,SDD可用接口设计说明IDD和数据库(顶层)设计说明DBDD加以补充。SDD连同相关的IDD和DBDD是

13、实现该软件的基础,但是IDD和DBDD等其他设计说明是否单独成册或与SDD合为一份资料视情况繁简而定。软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 155.3 模块化与信息隐藏l 模块和模块化l模块l 模块是数据说明、可执行语句等程序对象的集合。l 模块是完成特定功能的程序实体,可以单独命名且可通过名字来访问。模块是构成程序的基本构件。l 模块具有输入和输出(参数传递)、功能、内部数据结构(局部变量)和程序代码四个特性。输入、输出和功能是模块的外部特性;内部数据结构和程序代码是模块的内部特性。l 软件结构设

14、计仅需要了解该模块的外部特性。l模块化l 指解决一个复杂问题时自顶向下逐层分解成若干模块的过程。每个模块完成一个特定的子功能,所有模块按系统结构组装起来,完成整个系统所要求的功能。软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 165.3 模块化与信息隐藏l模块化设计l 按规定的原则将一个大型软件划分为一个个较小的、相对独立但又相关的模块。l 模块化设计的优点:l将问题简化,划分模块可使每一个模块完成单一功能;l可以独立地进行模块的编码测试,便于软件开发工作的组织;l把每一个模块要解决的问题局限在有限的范围,

15、减少出错机会;l便于纠错;l便于对特定的模块进行优化处理;l一个模块可被重复使用,提高软件产品的复用率;l程序易于理解;l利于估计工作量和开发成本。软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 175.3 模块化与信息隐藏l 模块分解l假设: 函数C(X)问题X的复杂性;函数E(X)求解问题X需要花费的工作量(时间);对于问题P1和P2,如果 C(P1)C(P2) 则有 E(P1)E(P2) 关系表明:解决一个复杂问题总比解决一个简单问题耗费更多的工作量。 并且有:C(P1+P2)C(P1)+C(P2) 上

16、式表明:由P1、P2组合而成的问题复杂性往往比单个问题复杂性之和更大。 于是有:E(P1+P2)E(P1)+E(P2)得出模块分解原理:把P1、P2分开解决比组合在一起解决所花费的工作量要小。软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 185.3 模块化与信息隐藏l 分解要适度模块总数模块总数最小成本最小成本区域区域MO软件总成本软件总成本用于接口的成本用于接口的成本每个模块成本之和每个模块成本之和成本或成本或工作量工作量软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院

17、沈阳工业大学信息科学与工程学院 魏东 Slide 195.3 模块化与信息隐藏l 信息隐藏l信息隐藏原理告诉我们,模块应该设计得使其所含信息(过程和数据)对于那些不需要这些信息的模块不可访问;每个模块只完成一个相对独立的特定功能;模块之间仅仅交换那些为完成系统功能必须交换的信息,即模块应该独立。l显然,模块独立的概念是模块化、抽象、信息隐藏和局部化等诸多概念的直接结果。 l信息隐藏不仅支持模块的并行开发,而且还可减少测试和后期维护的工作量。软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 205.3 模块化与信

18、息隐藏l 模块独立性度量l模块独立的含义:l 模块完成独立的功能l 符合信息隐藏和信息局部化原则l 模块间关连和依赖程度尽量小l衡量软件独立性的度量标准:l 内聚度:一个模块内部各个元素间(语句和程序段)彼此的紧密程度的度量。l 耦合度:指软件结构中各模块之间相互联系紧密程度的一种度量。软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 215.3 模块化与信息隐藏l模块的内聚l 内聚度是标志一个模块内部各成分彼此结合的紧密程度。内聚度按其高低程度可分为七级,高内聚度模块独立性强,设计尽可能提高模块内聚度。 l

19、偶然性内聚l 逻辑性内聚l 时间性内聚l 过程性内聚l 通讯性内聚l 顺序性内聚l 功能性内聚软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 225.3 模块化与信息隐藏l 偶然内聚l是指一个模块内各成分为完成一组功能而组合在一起,它们相互之间即使有关系,也很松散。常见的偶然性内聚情形是,当程序员写完一个程序后发现有一组语句多处出现,于是为节省内存便将这组语句单独组成一个模块。模块C为偶然性内聚。语句语句1 1语句语句2 2 模块模块A A语句语句1 1语句语句2 2 模块模块B B模块模块A A模块模块B

20、B函数函数1 1函数函数2 2 模块模块C C软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 235.3 模块化与信息隐藏l 逻辑内聚l 模块内完成的诸任务逻辑上相关。如模块A:“计算全班学生平均分”与模块B:“计算全班学生最高”两个模块,都要经过读入全班学生分数,进行计算,输出结果等相同步骤(如下图),把这些相似的功能放在一个模块AB中,省去程序中的重复部分。模块AB内部的成分组合 称为逻辑内聚。l 该类内聚的缺点是执 行中要从模块外引入用 作判断的开关量,从而 增加了块间偶合(控制偶合)。XYSABXYS

21、AB读入分数读入分数计算平均分计算平均分输出结果输出结果计算最高分计算最高分平均平均/ /最高最高? ?软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 245.3 模块化与信息隐藏l 时间内聚l如果一个模块包含的诸任务必须在同一时间段内执行(例如一个初始化模块为变量赋处置,开辟公用内存),则称之为时间性内聚为变量为变量N 赋初值赋初值打开文件打开文件A A 软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 255.3 模块化与

22、信息隐藏l 过程内聚l模块的过程性内聚度是指模块内成份彼此相关,并且必须按特定的次序在本模块内执行;l过程内聚模块的各组成功能由控制流联结在一起。l如会员注册,需要按顺序输入名字、密码、地址、电话号码。这个子程序是过程内聚性,因为是由一个特定顺序而不是其它任何原因把这些操作组合在一起的。软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 265.3 模块化与信息隐藏l 通信内聚l是指模块中各成分都将对数据结构的同一区域进行操作,以达到通信的目的。l例 :模块内部的成分:“开领书单”与“登记售书”都使用同一个输入数

23、据“发票”;右下图模块内部的成分:“删除”与“修改”产生同一个输出数据“文件”,它们都是借公用数据联系在一起,称为通讯内聚.开领书单开领书单登记售书登记售书删除删除修改修改文文 件件售书登记表售书登记表发发票票 领书单领书单软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 275.3 模块化与信息隐藏l 顺序内聚.l一个模块内的各处理成分均与同一功能相关,且这些处理必须顺序执行,通常,一个处理成分的输出是另一个处理成分的输入。例如:l例:“求解线性方程组”的解法流程中,将三个任务组成一个模块,即是 一个顺序内聚

24、.软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 285.3 模块化与信息隐藏l 功能内聚l模块内所有成分形成一个整体,完成单个功能,则称功能内聚,功能内聚是最高程度的内聚形式。l例:“求解线性方程组”的解法流程中,将每个任务编成一个模块,每一个模块都是功能内聚。l高内聚度模块独立性强。设计尽可能提高模块内聚度。l功能内聚是原子级的。功能内聚是不可再分的。l按功能内聚划分模块,模块数量将大幅增加,将增加接口的工作量。软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大

25、学信息科学与工程学院 魏东 Slide 295.3 模块化与信息隐藏l模块的耦合l 耦合度是模块独立性最显著特征。耦合度按其高低程度可分为七级,松耦合是软件设计一直追求的目标。 l 非直接耦合 l 数据耦合 l 特征耦合l 控制耦合 l 外部耦合 l 公共耦合l 内容耦合 软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 305.3 模块化与信息隐藏l 非直接耦合l模块不依赖另一个模块能独立工作,这是最松的耦合。X、Y、A、B各自毫无关系,独立工作。l这样的模块如何构成系统?XYAB无关系无关系无关系无关系软件

26、工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 315.3 模块化与信息隐藏l 数据耦合l两模块间通过参数交换数据信息,则称这两模块为数据耦合。由模块构成系统达到功能要求通常存在着大量的数据耦合。AB通过参数通过参数传递数据传递数据软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 325.3 模块化与信息隐藏l 数据耦合与非直接耦合的使用情景l模块“计算应扣款”把“用水量”和“用电量”分别传递给“计算水费”与“计算电费”两个模块(

27、传递基本类型的数据),然后从它们取得“水费”与“电费”,这种上下层之间存在的偶合称为数据偶合。l“计算水费”与“计算电费”俩模块处于同一级,相互之间没有信息传递,属于非直接偶合。用水量用水量用电量用电量水费水费电费电费计算水费计算水费计算电费计算电费非直接偶合非直接偶合数据偶合数据偶合软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 335.3 模块化与信息隐藏l 特征耦合l模块之间除传递关键数据外还附加公共数据。例:若事先定义数据结构:房租水电=房租+用水量+用电量,将其传递给“计算水费”和“计算电费”两个模

28、块(传递数据结构),该两个模块之间存在特征耦合也称标记偶合房租水电计算水费计算电费房租水电电费水费计算应扣款标记偶合软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 345.3 模块化与信息隐藏l 控制耦合l如果两模块间通过参数交换信息,此时若传递的信息中含有控制信息,则耦合度上升为控制耦合。如传递标志flag。控制耦合通常会增加系统的复杂性,须了解被控模块的内部逻辑,有时适当分解模块可消除控制耦合。 例:float Calculate (int flag) if (flag=1) if (flag=2) 软件

29、工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 355.3 模块化与信息隐藏A A计算平均分或最高分计算平均分或最高分B B平均平均/ /最高最高( (控制信号控制信号) )成绩成绩读入分数读入分数输出结果输出结果计算平均分计算平均分计算最高分计算最高分平均平均/ /最高最高? ?B B软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 365.3 模块化与信息隐藏l控制耦合增加了理解和编程的复杂性,调用模块必须知道被调模块的内部逻

30、辑,增加了相互依赖。去除模块间控制耦合的方法:l将被调用模块内的判定上移到调用模块中进行l被调用模块分解成若干单一功能模块A A计算平均分计算平均分B1B1平均成绩最高成绩计算最高分计算最高分B2B2软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 375.3 模块化与信息隐藏l外部耦合l当若干模块均与同一个外部环境关联(任何存储介质上的文件、物理设备等。如,I/O处理使所有I/O模块与特定的设备、格式和通信协议相关联),它们之间便存在外部耦合。外部耦合尽管需要,但应限制在少数几个模块上。ABC外部设备驱动外部

31、设备驱动软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 385.3 模块化与信息隐藏l 公共耦合l 当若干模块通过全局的数据环境相互作用时,它们之间存在公共耦合。全局数据环境中可能含有全局变量等内存公共覆盖区。l 公共耦合属于较严重的耦合,引起的问题是:l (1)软件可理解性降低l (2)诊断错误困难l (3)软件可维护性差,l (4)软件可靠性差l (公共数据区及全程变量无保护措施)l 慎用公共数据区和全程变量!区域区域1 1s sC CG GF FE ED DB BA A软件工程(Software Eng

32、ineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 395.3 模块化与信息隐藏l 内容耦合l 内容耦合是最高耦合度,内容耦合的情形:当一个模块使用另一个模块内部的数据或控制信息;一个模块直接转移到另一个模块内部,等等。l 例:模块L直接转到模块K(或模块L操作模块K中的数据。K K A L L GO TO A 软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 405.3 模块化与信息隐藏l模块之间的松耦合l 耦合度是对软件结构中模块间关联程度的一种度量。l 耦合

33、的强弱取决于模块间接口的复杂性、进入或调用模块的位置以及通过接口界面传送数据的多少等。l 在设计软件时应追求尽可能松散耦合的系统。因为对这类系统中任一模块的设计、测试和维护相对独立。由于模块间联系较少,错误在模块间传播的可能性也随之变小。l 模块间的耦合程度直接影响系统的可理解性、可测试性、可靠性和可维护性。l 耦合的使用原则:提倡数据耦合;少用控制耦合;限制公共耦合;禁止内容耦合。软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 415.3 模块化与信息隐藏l 模块优化l模块的作用域与控制域l模块的作用域:

34、受该模块内一个判定影响的所有模块的集合(从功能方面考虑);l模块的控制域:包括它自己及其所有下属模块的集合(从结构方面考虑)。l原则是:模块的作用域应在控制域之内。软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 425.3 模块化与信息隐藏MHAIGCBFEDMHAIGCBFED作用域在控制域之内调整后a a 作用域的作用域的G G不在控制域内不在控制域内b b 调整调整G G使作用域在控制域内使作用域在控制域内软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信

35、息科学与工程学院 魏东 Slide 435.3 模块化与信息隐藏l模块的深度、广度、扇出、扇入 l 一个软件结构的深度(depth) 表示控制的层数;l一个软件结构的宽度(width) 表示控制的跨度;l一个模块的“扇出数”(fan out) 指该模块直接控制的其他模块数(依赖性);l一个模块的“扇入数”(fan in) 指能直接控制该模块的上级模块数(复用性);Mabcdemfgihopqrntjks扇出扇出扇入扇入宽度宽度深度深度软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 445.3 模块化与信息隐藏

36、l主从模块l 一个模块控制另一些模块,称前者为“主控”模块,后者为“从属”模块。在图5-6中模块M是主控模块,a、b、c是M的从属模块。模块d、e从属于模块a,因此也从属M。软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 455.3 模块化与信息隐藏l启发性提示l改进软件结构,提高模块独立性:在对初步模块进行合并、分解和移动的优化过程中力求提高模块的内聚,降低耦合。l模块大小要适中:过大的模块应分解以提高理解性和可维护性;过小的模块会使模块之间关系复杂,可合并到上级模块中。l软件结构图的深度、宽度、扇入和扇出

37、要适当。如扇出大容易使结构扁平宽度过宽,若扇出小可能造成深度过深。l模块的作用域应该在控制域之内。l设计单入口单出口的模块。l降低模块接口的复杂程度:接口间的信息传递尽量要简单,为执行模块的功能所用。避免传递相互间没有联系的数据。软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 465.4 详细设计 l详细设计的作用l详细设计是建模的最后一步,相当建筑工程的施工设计;“详细设计说明书”是程序员的编程依据,相当于施工图纸,程序员编程相当施工队依照图纸进行施工。 l到底什么是详细设计?问题本身似乎幼稚,但初学者对详

38、细设计往往混淆不清,不知道如何详细、详细到什么程度?T开始错误次数3输入身份号码和口令通过否错误次数+1提示错误原因结束F验证身份和口令TF详细设计看似简单却很容易走入误区,图就是一种常见的表达错误,这是把业务流程当作详细设计软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 475.4 详细设计l 详细设计的内容l进入详细设计,对界面设计来说一般以原型法表达;对数据库设计来说进入到表结构、表关联、完整性、建索引等工作;而对于运算逻辑来说是提供可实现的算法。l接口设计l 接口设计主要是人机交互,也包括与其它应用系

39、统的接口。人机接口要完成每个界面的具体交互内容,如界面的布局、可视组件的属性、数据格式及校验规则,菜单及命令的形式等。l数据设计l 按着数据库经过概念设计、逻辑设计和物理设计的三段式设计,数据的详细设计就是进入到物理设计阶段,将逻辑设计阶段的数据结构转换为某个DBMS所支持的数据模型,并对其进行优化,包括对关系模型的规范化。l 具体工作就是在选定的DBMS设计数据库的表,建立表的主键/外键及关联关系,建立索引,完整性约束等方面。 软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 485.4 详细设计l逻辑设计l

40、 对于结构化方法,是完成每个模块内部的算法分析和数据结构;l 对于面向对象方法是完成每个类模块里面属性和行为的封装,当然也必然包括算法分析和数据结构。l 这部分内容是计算机教学当中最经典的基础课程“算法分析与程序设计”。算法分析用符号表达计算模型,程序设计用具体语言实现这个计算模型。算法表达的几种方式:软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 495.4 详细设计l 程序的三种基本控制结构软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院

41、魏东 Slide 505.4 详细设计l 结构程序设计l如果一个程序的代码块仅仅通过顺序、选择和循环这三种控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的l结构程序设计本质上并不是无GO TO语句的编程方法,而是一种使程序代码容易阅读、容易理解的编程方法。l根据实际情况灵活掌握goto的使用 l结构程序设计是尽可能少用GO TO语句的程序设计方法。最好仅在检测出错误时才使用GO TO语句,而且应该总是使用前向GO TO语句。l如果只允许使用顺序、IF-THEN-ELSE型分支和DO-WHILE型循环这三种基本控制结构,则称为经典的结构程序设计;软件工程(Softw

42、are Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 515.4 详细设计l 如果除了上述三种基本控制结构之外,还允许使用DO-CASE型多分支结构和DO-UNTIL型循环结构,则称为扩展的结构程序设计;如果再加上允许使用LEAVE(或BREAK)结构,则称为修正的结构程序设计。软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 525.4 详细设计l设计原则设计原则l清晰第一、效率第二清晰第一、效率第二l结构化的控制结构结构化的控制结构l控制结构应一个

43、入口、一个出口控制结构应一个入口、一个出口l允许使用允许使用 DO-UNTILDO-UNTIL和和DO-CASEDO-CASEl允许循环跳出允许循环跳出l逐步细化的实现方法逐步细化的实现方法l在一组数中找出其中的最大数在一组数中找出其中的最大数1 1,输入一组数,输入一组数2 2,找出其中最大的,找出其中最大的数数3 3,输出最大数,输出最大数2.12.1,任取一数,假设它就是最大,任取一数,假设它就是最大数数2.22.2,将该数与其余各数逐一比较,将该数与其余各数逐一比较2.32.3,若发现有任意数大于该假设,若发现有任意数大于该假设最大数,则取而代之最大数,则取而代之1 1,输入一个数组,

44、输入一个数组2.12.1,令最大数,令最大数= =数组中第一个数数组中第一个数2.22.2,从第二个数到最后一个数依,从第二个数到最后一个数依次做次做2.32.3,如果,如果 最大数,则最大数最大数,则最大数= =新数新数3 3,输出最大数,输出最大数软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 535.4 详细设计l 程序流程图:l 用图形符号表达算法,直观表达循环、分支等复杂结构软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Sl

45、ide 545.4 详细设计程序流程图中使用的符号程序流程图中使用的符号(a) (a) 选择选择( (分支分支) );(b) (b) 注释;注释;(c) (c) 预先定义的处理;预先定义的处理;(d) (d) 多分支;多分支;(e) (e) 开始或停开始或停止;止;(f) (f) 准备;准备;(g)(g)循环上界限;循环上界限;(h) (h) 循环下界限;循环下界限;(i) (i) 虚线;虚线;(j) (j) 省略符;省略符;(k) (k) 并行方式;并行方式;(l) (l) 处理;处理;(m) (m) 输入输入/ /输出;输出;(n) (n) 连接;连接;(o) (o) 换页连接;换页连接;

46、(p) (p) 控制流控制流软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 555.4 详细设计l 详细设计的表达方式l 伪代码(Pseudocode):l 是一种算法描述语言,也称PDL语言(Program Design Language)。伪代码介于自然语言与编程语言之间,用伪代码描述的算法可以容易用任何一种编程语言实现。伪代码表达算法必须结构清晰、代码简单、可读性好。l 组成:英语命令动词、数据字典中定义的名字、有限的自定义词、控制结构关键词(IF_THEN_ELSE、WHILE_DO、REPEAT_UNTIL、CASE_OF等)l 结构化语言的特点:无确定语法、可分层、嵌套软件工程(Software Engineering) 沈阳工业大学信息科学与工程学院沈阳工业大学信息科学与工程学院 魏东 Slide 565.4

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论