- 1、本文档共113页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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:
您可能关注的文档
- 科教版六年级下科学第三单元宇宙复习ppt.ppt
- 科教版八年级物理下册第九章4,大气压强课件(19张ppt).ppt
- 科教版四年下册1.一天的食物.ppt
- 科教版小学六年级下册科学总复习资料(各单元知识点)-2.doc
- 软基换填施工方案.doc
- 科教版四年级下册科学各种各样的花.ppt
- 软件工程 超市管理系统设计说明书.docx
- 科技大学讲座冯云英.ppt
- 科教版六年级上册第一单元杠杆的科学2.ppt
- 科教版六年级下册品德与社会-春天的故事.ppt
- (4篇)XX区抓党建促基层治理培训心得体会汇编12.docx
- 汇编1154期-在培训班上的讲话汇编(3篇).doc
- 汇编1173期-专题党课讲稿汇编(3篇)112.doc
- 汇编1076期-主题党课讲稿汇编(3篇).doc
- 汇编1177期-学习心得体会汇编(3篇)112.doc
- (6篇)党和国家机构改革心得体会汇编.docx
- 汇编1166期-坚定理想信念、全面从严治党、担当作为专题党课讲稿汇编(3篇)112.doc
- 汇编1174期-专题党课讲稿汇编(3篇)112.doc
- 教育13期-主题教育学习心得体会、研讨发言材料参考汇编(3篇).doc
- 汇编1458期-心得体会研讨发言提纲参考汇编(3篇)123.doc
文档评论(0)