软件设计基础课件.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)
《软件设计基础课件.ppt》由会员分享,可在线阅读,更多相关《软件设计基础课件.ppt(82页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、软件件设计基基础第1页,此课件共82页哦 是后续开发步骤及软件维护工作的基础。是后续开发步骤及软件维护工作的基础。如果没有设计,只能建立一个不稳定的系统结如果没有设计,只能建立一个不稳定的系统结构构 软软 件件 设设 计:计:第2页,此课件共82页哦软软 件件 工工 程程第第第第 7 7 7 7 章章章章 软软软软 件件件件 设设设设 计计计计 基基基基 础础础础概概 念念基本概念基本概念基本概念基本概念设计设计设计设计过程过程过程过程设计设计设计设计工具工具工具工具说明说明与评审与评审第3页,此课件共82页哦7.1.1 7.1.1 软件设计过程软件设计过程TextText技技术术角角度度与与
2、管管理理角角度度详细设计详细设计概要设计概要设计过程设计过程设计数据设计数据设计结构设计结构设计概要设计概要设计概要设计概要设计根据需求确定软件和数据的总体根据需求确定软件和数据的总体框架框架详细设计详细设计详细设计详细设计将将“概设概设”结果进一步精化成结果进一步精化成算法表示和数据结构算法表示和数据结构结构设计结构设计结构设计结构设计确定程序各主要部件之间的关系确定程序各主要部件之间的关系数据设计数据设计数据设计数据设计把信息描述转换为实现软件所把信息描述转换为实现软件所要求的数据结构要求的数据结构过程设计过程设计过程设计过程设计完成每一部件的过程化描述完成每一部件的过程化描述第4页,此课
3、件共82页哦7.1.2 7.1.2 抽象与逐步求精抽象与逐步求精抽抽抽抽 象象象象抽出事务的本质特性而暂时不考虑它们抽出事务的本质特性而暂时不考虑它们的细节。是控制复杂性的基本策略的细节。是控制复杂性的基本策略。定义定义需求需求设计设计实现实现软件系统软件系统被描述为被描述为基于计算基于计算机的大系机的大系统的一个统的一个组成部分组成部分软件用问软件用问题域约定题域约定的习惯用的习惯用语表达语表达概要设计概要设计过渡到详过渡到详细设计时,细设计时,抽象级再抽象级再一次降低一次降低编码完成编码完成后达到了后达到了抽象的最抽象的最低级低级过程抽象过程抽象过程抽象过程抽象把完成一个特定功能的动作序列
4、抽象为把完成一个特定功能的动作序列抽象为一个过程名和参数表一个过程名和参数表数据抽象数据抽象数据抽象数据抽象把一个数据对象的定义(或描述)抽象把一个数据对象的定义(或描述)抽象为一个数据类型名为一个数据类型名第5页,此课件共82页哦抽象1:该CAD软件系统配有与绘图员进行可视化通信的图形界面,能用鼠标代替绘图工具画各种直线和曲线;能完成所有几何计算以及所有截面视图和辅助视图的设计。图形设计的结果保存在图形文件中,图形文件可以包含几何的、正文的和其他各种补充设计信息。例例7.1 7.1 考虑适用于低级考虑适用于低级CADCAD的图形软件包的图形软件包CAD软软件任务件任务创建二维创建二维图形图形
5、管理图形管理图形文件文件用户界用户界面面显示图形显示图形任务任务抽象抽象2:CAD软件任务;软件任务;用户界面子任务;用户界面子任务;创建二维图形子任务;创建二维图形子任务;显示图形子任务;显示图形子任务;管理图形文件子任务;管理图形文件子任务;end CAD.抽象抽象3(仅以(仅以“创建二维图形任务创建二维图形任务”为例)为例)PROCEDURE创建二维图形 REPEAT UNTIL END REPETITION;END PROCEDURE.;DO WHILE 数字仪接口任务;数字仪接口任务;判断作图请求;判断作图请求;线:画线任务;线:画线任务;圆:画圆任务;圆:画圆任务;END;DO W
6、HILE 键盘接口任务;键盘接口任务;选择分析或计算;选择分析或计算;辅助视图:辅助视图任务;辅助视图:辅助视图任务;截面视图:截面视图任务;截面视图:截面视图任务;END;第6页,此课件共82页哦数据对象:TYPE drawing IS STRUCTURE DEFINED number IS STRING LENTH(12);geometry DEFINED notes IS STRING LENTH(256);bom DEFINED END drawing TYPE;数据抽象数据抽象 blueprint IS INSTANCE OF drawing;或或 schematic IS INST
7、ANCE OF drawing;第7页,此课件共82页哦 逐步求精逐步求精逐步求精逐步求精逐步求精逐步求精为了能集中精力解决主要问题主要问题而尽量推迟对问题细节问题细节的考虑抽象求精第8页,此课件共82页哦7.1.3 7.1.3 模块化与信息隐藏模块化与信息隐藏模块模块理论理论依据依据理想的理想的属性属性大小大小I/O、功能,程序、数据、功能,程序、数据程序、程序段、子程序程序、程序段、子程序程序、程序段、子程序程序、程序段、子程序一个功能、易理解、独立一个功能、易理解、独立一个功能、易理解、独立一个功能、易理解、独立例:库存管理系统的模块划分例:库存管理系统的模块划分事务接收模块事务接收模块
8、事务接收模块事务接收模块更新库存清单更新库存清单订货处理订货处理生成报表生成报表生成报表生成报表例:人事管理系统例:人事管理系统输入职工档案职工档案管理系统生成职工档案报表系统最小成本最小成本区域区域MO软件总成本软件总成本用于接口的成本用于接口的成本每个模块成本之和每个模块成本之和模块总数模块总数成本或成本或工作量工作量信息隐藏信息隐藏内聚度内聚度耦合度耦合度分分 治治 法法:C(P1+P2)C(P1)+C(P2)C(P1+P2)C(P1)+C(P2)E(P1+P2)E(P1)+E(P2E(P1+P2)E(P1)+E(P2第9页,此课件共82页哦有人说,模块化是为了使一个复杂的大型程序能被人
9、的智力所管理,软件应该具备的唯一属性。如果一个大型程序仅由一个模块组成,它将很难被入所理解。下面根据人类解决问题的一般规律,论证上面的结论。设函数C(x)定义问题x的复杂程度,函数E(x)确定解决问题x需要的工作量(时间)。对于两个问题Pl和P2,如果 C(P1)C(P2)即P1比P2复杂,显然 E(PI)E(P2)即问题越复杂,所需的工作量越大。根据人类解决一般问题的经验,另一个有趣的规律是 C(P1十P2)C(PI)十C(P2)也就是说,如果一个问题由Pl和P2两个问题组合而成那么它的复杂程序大于分别考虑每个问题时的复杂程度之和。综上所述,得到下面的不等式 E(Pl十P2)E(PI)十E(
10、P2)第10页,此课件共82页哦这个不等式导致“各个击破”的结论把复杂的问题分解成许多容易解决的小问题,原来的问题也就容易解决了。这就是模块化的根据。由上面的不等式似乎还能得出下述结论:如果无限地分割软件,最后为了开发软件而需要的工作量也就小得可以忽略了。事实上,还有另一个因素在起作用,从而使得上述结论不能成立。参看上图,当模块数目增加时每个模块的规模将减小,开发单个模块需要的成本(工作量)确实减少了;但是,随着模块数目增加,设计模块问接口所需要的工作量也将增加。根据这两个因素,得出了图中的总成本曲线。每个程序都相应地有一个最适当的模块数目M,使得系统的开发成本最小。虽然目前我们还不能精确地决
11、定M的数值,但是在考虑模块化的时候总成本曲线确实是有用的指南。第11页,此课件共82页哦信息隐藏信息隐藏模块内所含信息对那些不需要这些信息的模块模块内所含信息对那些不需要这些信息的模块不可访问不可访问,每个模块只完成每个模块只完成一个一个相对相对独立独立的特定的特定功能功能。应用模块化原理时,自然会产生的一个问题是:“为了得到最好的一组模块,应该怎样分解软件呢?”信息隐蔽原理指出:应该这样设计和确定模块,使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。局部化的概念和信息隐蔽概念是密切相关的。所谓局部化是指把一些关系密切的软件元素物理地放得彼此靠近。在模块中使用
12、局部数据元素是局部他的一个例子。显然,局部化有助于实现信息隐蔽。“隐蔽”意味着有效的模块化可以通过定义一组独立的模块而实现,这些独立的模块彼此间仅仅交换那些为了完成系统功能而必须交换的信息。第12页,此课件共82页哦信息隐藏信息隐藏如果在测试期间和以后约软件维护期间需要修改软件,那么使用信息隐蔽原理作为模块化系统设计的标准就会带来极大好处。因为绝大多数数据和过程对于软件的其他部分而言是隐蔽的(也就是“看”不见的),在修改期间由于疏忽而引入的错误就很少可能传播到软件的其他部分。第13页,此课件共82页哦模块独立性模块独立性(Module independence)好设计的关键:每个模块完成一个相
13、对独立的子功能,一个相对独立的子功能,并且与其它模块间的接口简单模块间的接口简单。模块独立的概念是模块化、抽象、信息隐蔽和局部化概念的直接结果。开发具有独立功能而且和其他模块之间没有过多的相互作用的模块,就可以做到模块独立。换句话说,希望这样设计软件结构,使得每个模块完成一个相对独立的特定子功能,并且和其他模块之间的关系很简单。模块独立性模块独立性 第14页,此课件共82页哦为什么模块的独立性很重要呢?主要有两条理由:第一,有效的模块化(即具有独立的模块)的软件比较容易开发出来。这是由于能够分割功能而且接口可以简化,当许多人分工合作开发同一个软件时,这个优点尤其重要。第二,独立的模块比较容易测
14、试相维护。这是因为相对说来,修改设计和程序需要的工作量比较小,错误传播范围小,需要扩充功能时能够“插入”模块。总之,模块独立是好设计的关键,而设计又是决定软件质量的关键环节。模块独立性模块独立性 第15页,此课件共82页哦独立性的度量:独立性的度量:耦合耦合(Coupling)&(Coupling)&内聚内聚(Cohesion)(Cohesion)模块的独立程度可以由两个定性标准度量,这两个标准分别称为内聚和耦合。耦合衡量不同模块彼此间互相依赖(连接)的紧密程度;内聚衡量一个模块内部各个元素彼此结合的紧密程度。以下分别详细阐述。第16页,此课件共82页哦内聚标志一个模块内各个元素被此结合的紧密
15、程度,它是信息隐蔽和局部化概念的自然扩展。简单地说,理想内聚的模块只做一件事情。设计时应该力求做到高内聚,通常中等程度的内聚也是可以采用的,而且效果和高内聚相差不多;但是,低内聚很坏,不要使用。第17页,此课件共82页哦低级内聚度(低级内聚度(3个)个)一个模块内各成分为完成一组功能而组合在一一个模块内各成分为完成一组功能而组合在一起,它们相互之间即使有关系,也很松散起,它们相互之间即使有关系,也很松散。1偶然偶然有时在写完一个程序之后,发现一组语句在两处或多处出现,于是把这些语句作为一个模块以节省内存,这样就出现了偶然内聚的模块 第18页,此课件共82页哦一个模块完成的诸任务逻辑上相关一个模
16、块完成的诸任务逻辑上相关 2逻辑逻辑读入分数平均/最高?计算平均分计算最高分输出结果例如一个计算全部同学平均分和最高分的模块。无论计算哪种分数,都要经过读入全班学生分数,进行计算,输出计算结果等步骤。实际上除中间的一步须按不同的方法计算外,前、后这两步都是相同的。把这两种在逻辑上相似的功能放在一个模块中,就可以省去程序中的重复部分。缺点是执行中要从模块外引入用作判断的开关键,从而增加了块间的耦合 第19页,此课件共82页哦如果一个模块包含的诸任务必须在同一时间段如果一个模块包含的诸任务必须在同一时间段内执行。内执行。例如一个初始化模块3时间时间A:Read inputsfrom diskfro
17、m tapefrom 第20页,此课件共82页哦在偶然内聚的模块中,各种元素之间没有实质性联系,很可能在一种应用场合需要修改这个模块,在另一种应用场合又不允许这种修改,从而陷入困境。事实上,偶然内聚的模块出现修改错误的概率比其他类型的模块高得多。在逻辑内聚的模块中,不同功能混在一起,合用部分程序代码,即使局部功能的修改有时也会影响全局。因此这类模块的修改也比较困难。时间关系在一定程度上反映了程序的某些实质,所以时间内聚比逻辑内聚好一些。这三种内聚为低内聚。第21页,此课件共82页哦中级内聚度(中级内聚度(2个)个)模块内成分彼此相关,并且必须模块内成分彼此相关,并且必须按特定的次序执行按特定的
18、次序执行4过程过程enter datacheck datamanipulate data循环体计算累积事务记录累积销售额累积订货量循环传送事务记录给计算累积模块,得到累积订货量之后,也得到了累积销售量。第22页,此课件共82页哦模块中各成分都将对数据结构的同一区域进行操作,即如果模块中各成分都将对数据结构的同一区域进行操作,即如果模块中所有元素都使用同一个输入数据和(或)产生同一个模块中所有元素都使用同一个输入数据和(或)产生同一个输出数据,则称为通信内聚。输出数据,则称为通信内聚。5通信通信模块模块A从文件从文件FILE读出数据读出数据1.由数据产生报表一由数据产生报表一2.由数据产生报表二
19、由数据产生报表二开领书单登记售书售书登记表领书单发票修改删除文件第23页,此课件共82页哦高级级内聚度(高级级内聚度(2个)个)模块内的各处理成分均与同一功能相关,且这些模块内的各处理成分均与同一功能相关,且这些处理必须顺序执行处理必须顺序执行6顺序顺序这类模块中的各组成部分是顺序执行的。在通常情况下,上一个处理框的输出就是下一个处理框的输入。建立方程组系数矩阵高斯消除法回代第24页,此课件共82页哦模块内所有成分形成一个整体,模块内所有成分形成一个整体,完成单个功能完成单个功能7功能功能1.输入系数输入系数2.求方程的根求方程的根3.打印方程的根打印方程的根求一元二次方程求一元二次方程根的模
20、块根的模块第25页,此课件共82页哦七种七种“内聚内聚模块模块”的性能比较的性能比较形式形式评价评价可修改可修改性性可读性可读性黑箱程度黑箱程度通用性通用性偶然偶然最坏最坏最坏最坏最坏最坏黑箱黑箱好好逻辑逻辑最坏最坏最坏最坏不好不好不完全黑不完全黑好好时间时间不好不好不好不好中中不完全黑不完全黑中中过程过程中中中中中中半透明半透明不好不好通信通信中中中中中中半透明半透明不好不好顺序顺序好好好好好好透明透明最坏最坏功能功能好好好好好好透明透明最坏最坏第26页,此课件共82页哦 耦合是对一个软件结构内不同模块之间互连程度的度量。耦合强弱取决于模块间接口的复杂程度,进入或访问一个模块的点,以及通过接
21、口的数据。在软件设计中应该追求尽可能松散耦合的系统。在这样的系统中可以研究、测试或维护任何一个模块,而不需要对系统的其他模块有很多了解。此外,由于模块间联系简单,发生在一处的错误传播到整个系统的可能性就很小。因此,模块间的耦合程度强烈影响系统的可理解性、可测试性、可靠性和可维护性。Great deal of dependenceIndependentHighly coupled Loosely coupledUncoupled 第27页,此课件共82页哦模块间的耦合模块间的耦合 耦合:耦合:表示一个软件结构内各个模块之间的互连程度,尽量选用松散耦合的系统1.非直接耦合:非直接耦合:两个模块中任
22、一个,都不依赖于对方能独立工作。如果两个模块中的两个模块中任一个,都不依赖于对方能独立工作。如果两个模块中的每一个都能独立地工作而不需要另一个模块的存在,那么它们彼此每一个都能独立地工作而不需要另一个模块的存在,那么它们彼此完全独立,这意味着模块间无任何连接,耦合程度最低,模块的独完全独立,这意味着模块间无任何连接,耦合程度最低,模块的独立性最高。见图中的模块立性最高。见图中的模块1和模块和模块2的关系。它们之间是同级模块,的关系。它们之间是同级模块,互相之间没有信息的传统。但是,在一个软件系统中不可能所有互相之间没有信息的传统。但是,在一个软件系统中不可能所有模块之间都没有任何连接。模块之间
23、都没有任何连接。1.1.非直接耦合非直接耦合 -2.-2.数据耦合数据耦合模块1模块2非直接耦合模块3第28页,此课件共82页哦模块间的耦合模块间的耦合1.1.非直接耦合非直接耦合 -2.-2.数据耦合数据耦合2.数据耦合数据耦合两个模块间通过参数交换信息,两个模块间通过参数交换信息,而信息仅限于数据而信息仅限于数据开发货单开发货单开发货单开发货单计算金额计算金额计算金额计算金额单价单价单价单价数量数量数量数量金额金额金额金额第29页,此课件共82页哦3.3.特征耦合特征耦合计算水费和电费计算水费和电费计算水费计算水费计算电费计算电费住户详情住户详情水费水费住户详情住户详情电费电费计算水量和电
24、费计算水量和电费计算水费计算水费计算电费计算电费水费水费电费电费电费电费本月用水量本月用水量本月用电量本月用电量 住户详情数据结构中包括:住户详情数据结构中包括:“本月用水量本月用水量”、“本月用电量本月用电量”。“特征特征耦合耦合”图可改进图可改进“数据数据耦合耦合”图图如果两个模块都与同一个数据结构有关,则为特征耦合。第30页,此课件共82页哦4.当模块当模块A向模块向模块B所传递的信息控制了所传递的信息控制了B的内部的内部逻辑。逻辑。4 4.控制控制耦合耦合读入分数平均/最高?计算平均分计算最高分输出结果当调用这一模块时,调用模块必须先把一个控制信号(平均分/最高分)传递给它,以便选择所
25、需操作。因此必须知道被控模块的的内部结构,从而增加了模块间的相互依赖。第31页,此课件共82页哦5.5.外部耦合外部耦合5.若干模块均与同一个外部环境关联。若干模块均与同一个外部环境关联。如:I/O、格式、通信协议。一组模块都访问同一全局变量而不是同一全局数据结构就是外部耦合。第32页,此课件共82页哦 6.6.公共公共耦合耦合-7.-7.内容内容耦合耦合(病态病态耦合耦合)6.如果两个模块都和同一个公共数据域有关,即如果两个模块都和同一个公共数据域有关,即一组模块都访问同一全局数据结构就是公共耦合ABC公用数据第33页,此课件共82页哦7.7.一个模块和另一个模块的内部属性有一个模块和另一个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件设计 基础 课件
![提示](https://www.deliwenku.com/images/bang_tan.gif)
限制150内