软件工程导论课件之_总体设计.PPTVIP

软件工程导论课件之_总体设计.PPT

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、本文档共113页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
软件工程导论课件之_总体设计

软件设计宣言: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)

panguoxiang + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档