网站大量收购独家精品文档,联系QQ:2885784924

软件工程导论课件之第5章_总体设计(第五版)(张海潘编著).ppt

软件工程导论课件之第5章_总体设计(第五版)(张海潘编著).ppt

  1. 1、本文档共113页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
软件工程导论课件之第5章_总体设计(第五版)(张海潘编著)解读

软件设计宣言:Mitch Kapor “什么是设计?设计是你站在两个世界——技术世界和人类的目标世界——而你尝试将这两个世界结合在一起……”。 罗马建筑批评家Vitruvius提出的观念: “设计良好的建筑应该展示出坚固、适用和令人赏心悦目”。 设计阶段: 从工程管理的角度,可以将软件设计分为概要设计阶段和详细设计阶段。 从技术的角度,传统的结构化方法将软件设计划分为体系结构设计、数据设计、接口设计和过程设计4部分。 面向对象方法则将软件设计划分为体系结构设计、类设计/数据设计、接口设计和构件级设计4部分。 结构化设计和结构化分析的关系: 例:用筛选法求100以内的素数。所谓的筛选法,就是从2到100中去掉2,3,5,7的倍数,剩下的就是100以内的素数。 首先按程序功能写出一个框架 main() { 建立2到100的数组A[ ],其中A[i]=i;..........................1 建立2到10的素数表B[ ],存放2到10以内的素数;......2 若A[i]=i是B[ ]中任一数的倍数,则剔除A[i];............3 输出A[ ]中所有没有被剔除的数;…..………………....4 } 上述框架中每一个加工语句都可进一步细化 main() { /*建立2到100的数组A[ ],其中A[i]=i*/ ………..………1 for (i = 2;i = 100;i++)A[i] = i; /* 建立2到10的素数表B[ ],存放2到10以内的素数*/ ….2 B[1] =2; B[2] = 3; B[3] = 5; B[4] = 7; /*若A[i]=i是B[ ]中任一数的倍数,则剔除A[i]*/ .…..….3 for (j = 1; j = 4; j++) 检查A[]所有数能否被B[j]整除并将其从A[]剔除;.....3.1 /*输出A[ ]中所有没有被剔除的数*/ …………………….4 for (i = 2; i = 100; i++) 若A[i]没有被剔除,则输出之……………………..…..4.1 } 继续对3.1和4.1细化,直到每个语句都能用程序设计语言来表示 评价: 系统中至少必须存在这种耦合。一般说来,一个系统内可以只包含数据耦合。 数据耦合是理想的目标。 维护更容易,对一个模块的修改不会是另一个模块产生退化错误。 评价: 控制耦合往往是多余的,把模块适当分解之后通常可以用数据耦合代替它。 被调用的模块需知道调用模块的内部结构和逻辑,降低了重用的可能性 。 例: while(global_bariable==0) { if (argument_xyz25) module_3(); else module_4(); } 评价: 与结构化编程矛盾,生成的代码完全不可读。 如果在一个模块中对一个全局变量的声明进行修改,必须修改能够访问该全局变量的每一个模块。 公共环境耦合的模块难于重用,必须提供一个全局变量的清单。 即使模块本身不改变,它和产品中其他模块之间公共环境耦合的实例数也会变化非常大。 潜在危险很大。模块暴露出必需要更多的数据,难以控制数据存取,而且会导致计算机犯罪。 有些情况下公共环境耦合更好。 评价: 模块内各元素之间没有实质性联系,很可能在一种应用场合需要修改这个模块,在另一种应用场合又不允许这种修改,从而陷入困境; 可理解性差,可维护性产生退化; 模块是不可重用的。 解决方案: 将模块分成更小的模块,每个小模块执行一个操作。 评价: 接口难以理解,造成整体上不易理解; 完成多个操作的代码互相纠缠在一起,即使局部功能的修改有时也会影响全局,导致严重的维护问题; 难以重用。 解决方案: 模块分解。 评价: 时间关系在一定程度上反映了程序某些实质,所以时间内聚比逻辑内聚好一些。 模块内操作之间的关系很弱,与其他模块的操作却有很强的关联。 时间内聚的模块不太可能重用。 评价: 比时间内聚好,至少操作之间是过程关联的。 仍是弱连接,不太可能重用模块。 解决方案: 分割为单独的模块,每个模块执行一个操作。 例4:一个公司的销售管理系统 例1: 设计一个产品,它将一个文件名作为输入,并返回文件中的字数。 第一级分解 第二级分解 精化 例2:汽车数字仪表板 通过模数转换实现传感器和微处理机接口; 在发光二极管面板上显示数据; 指示每小时英里数(mph),行驶的里程,每加仑油行驶的英里数(mpg)等等; 指示加速或减速; 超速警告:如果车速超过55英里/小时,则发出超速警告铃声。 第一级分解 第二级分解 精化 例3:

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档