- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第四章 软件设计概述;讨论要点;§4.1 软件设计的目标和任务
§4.2 软件设计基本概念
§4.3 模块化设计
§4.4 其他设计问题的处理
§4.5 设计文档及其复审
;教学目的及要求:;软件设计的任务;1.软件的总体结构主要回答的问题;2. 软件设计的问题;3. 软件设计方法;4. 软件设计分为两个阶段:;§4.2 软件设计的基本概念;1.模块与构件;1.模块与构件;模 块;概要设计的基本概念; 2. 抽象(Abstraction)与细化
抽象:解决问题时只考虑与问题有关的方面,不考虑与问题无关的方面。即抽出事物的本质特性而不考虑细节。
;抽象(Abstraction); 在逐步细化中,特别强调这种分解的“逐步”性质,即每一部分仅较其前一部增加“少量”的细节。这样,在相邻两部之间就只有微小的变化,不难验证它们的内容是否等效。;3.信息隐蔽(Information Hiding);高可复用性的期望:
?功能复用是代码级的,它基于必要的功能理解,而功能的语义是不一致的、多理解的。
?希望软件复用是全方位的,不但是代码级的复用,还应该有源程序级的复用。;§4.3 模块化设计;模块化(Modularity);C(p1)C(p2) 则 E(p1)E(p2)
其中:
p1和p2是两个问题
C(x)是由x问题决定的复杂性
E(x)是解决x问题所需要的工作量;模块数与开发工作量的关系;2. 模块的独立性;模块独立性的度量;? 内容耦合:一个模块直接修改另一个模块的内容
? 公共耦合:两个以上的模块共同引用一个全局数据
?外部耦合:若允许一组模块访问同一个全局变量
? 控制耦合:接收模块的动作依赖于控制信号
? 标记耦合:两个模块接口的参数包含相同的内部结构
? 数据耦合:仅是模块之间的数据传递
?非直接耦合:模块之间没有消息传递;? 偶然内聚:各成分之间并没有关系,只是把分散在多处的功能合在一起
? 逻辑内聚:仅仅是逻辑功能相关成分合在一起
? 时间内聚:必须在同一时间执行,并无功能逻辑的成分合在一起
? 过程内聚:过程顺序相关的功能成分合在一起
? 通讯内聚:需要对相同的外部数据进行操作的成分合在一起
? 顺序内聚:一个内部成分的输出是另一个内部成分的输入,将它们合起来
? 功能内聚:只完成单一的功能;2. 模块独立性的度量之一:内聚性;软件设计的概念和原理;模块的内聚性类型;(1) 巧合内聚(偶然内聚);(2) 逻辑内聚;逻辑内聚模块;(3) 时间内聚;(4) 过程内聚;过程内聚模块;过程内聚模块;(5) 通信内聚;通信内聚模块例;通信内聚模块例;(6)顺序内聚;(7) 功能内聚;模块独立性的度量之二;;无耦合-没有依赖关系;耦合强度依赖的因素;(1) 非直接耦合;(2) 数据耦合;数据耦合举例;(3) 标记耦合(特征耦合);标记耦合举例;将标记耦合修改为数据耦合举例;(4) 控制耦合;控制耦合举例;控制耦合增加了理解和编程的复杂性,调用模块
必须知道被调模块的内部逻辑,增加了相互依赖。
去除模块间控制耦合的方法:
(1)将被调用模块内的判定上移到调用模块中进行;
(2)被调用模块分解成若干单一功能模块。;改控制耦合为数据耦合举例;控制耦合举例;改控制耦合为数据耦合举例;(5) 外部耦合;(6) 公共耦合(公共数据区耦合);公共耦合举例;公共耦合举例;公共耦合举例;(1)软件可理解性降低
(模块间存在错综复杂的连系)
(2)软件可维护性差
(修改变量名或属性困难)
(3)软件可靠性差
(公共数据区及全程变量无保护措施)
慎用公共数据区和全程变量!!!;(7) 内容耦合;发生内容耦合的情形;模块化设计的原则和目标;如何降低模块间耦合度?;接口复杂性与耦合类型的关系;内聚与耦合密切相关,同其它模块强耦合的模块
意味着弱内聚,强内聚模块意味着与其它模块间
松散耦合。
设计目标:力争强内聚、弱耦合。;耦合、内聚与模块独立性关系; 3.自顶向下与自底向上设计;§ 4.4 其他设计问题;协同设计;用户界面设计;并发系统设计;§4.5 设计文档及其复审(P81);讨论:编程时是否应该多使用技巧?; 聪明人一定反应敏捷,善于接受新事物。他能迅速进入一个新领域,给你一个头头是道的解释。他提出的问题往往一针见血、击中要害。他能及时掌握所学知识,并且博闻强记,他能把本来认为互不相干的领域联系在一起使问题得到解决。他富有创新精神与合作精神…… ;好的程序经理应该具备以下几个条件:;三、有人格魅力
软件开发是智力创作过程,你不能指望仅通过执行规章制度来产生好的作品。很多软件公司的程序经理都不是管理专业出身的,他们也不可能为了搞好管理而成天玩弄心机。技术出色的程序经理一般少有心术不正的,所以管理
文档评论(0)