车海燕-软件工程-Lecture-SE-2013-Chap10-03.pptVIP

车海燕-软件工程-Lecture-SE-2013-Chap10-03.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
软件工程 - 2013 - 第十章 面向对象(3) 第十章 面向对象 (3) 模块化 抽象 信息隐藏 弱耦合 交互耦合 继承耦合 强内聚 服务内聚、类内聚、一般——特殊内聚 可重用 设计结果应该清晰易懂 用词一致 使用已有的协议 减少消息模式的数目 避免模糊的定义 一般——特殊结构的深度应适当 设计简单的协议 一般说来,消息中的参数不要超过3个。 设计简单的类 避免包含过多的属性; 有明确的定义; 尽量简化对象之间的合作关系; 不要提供太多服务。 使用简单的服务 把设计变动减至最小 重用也叫再用或复用,是指同一事物不作修改或稍加改动就多次重复使用; 软件重用分为3个层次: 知识重用(例如,软件工程知识的重用); 方法和标准的重用(例如,面向对象方法或国家制定的软件开发规范的重用); 软件成分的重用。 软件成分的重用 代码重用 源代码剪贴 源代码包含 继承 设计结果重用 分析结果重用 典型的可重用软件成分 项目计划 成本估计 体系结构 需求模型和规格说明 设计 源代码 用户文档和技术文档 用户界面 数据 测试用例 可重用软构件应具备的特点 模块独立性强 具有高度可塑性 接口清晰、简明、可靠 类构件的重用方式 实例重用 继承重用 多态重用 系统设计把分析模型转化为系统设计模型 在这个过程中,开发人员需要: 定义一系列设计目标:描述应优化的系统质量 将系统分解成能由单个团队实现的子系统 系统设计的大部分内容是子系统分解,并且,分解中需要考虑一些涉及整个系统范围的问题: 软/硬件映射:系统的硬件配置是什么?哪个节点负责哪个功能?节点间通信如何实现?哪些服务是用已有的软件组件实现的? 持续化数据管理:哪些数据需成为持续化的?它们存储在什么地方?如何访问它们? 访问控制:谁可以使用哪个功能、访问哪个数据?如何定义并实现访问控制? 控制流:系统如何将操作进行排序?如何驱动系统事件?能同时处理一个以上的用户交互吗? 边界条件:系统如何初始化?如何关闭?如何检测和处理异常情况? 这几个问题中,软/硬件映射和持续化数据管理经常会导致在系统中引入附加子系统;控制流和边界条件问题会对子系统的接口产生影响。 为减少问题空间的复杂性,整个待解问题被分解、封装成一系列的类(对象)。同样,为减少求解空间的复杂性,系统被分解为子系统,而子系统由许多求解空间中的类组成。 对于复杂的子系统,不断使用这个原理,将子系统分解成更简单的子系统: 比如前面的紧急事件管理系统可以做如下的子系统分解: 每个子系统都需要向其它子系统提供服务。一个服务是一组有着共同目标的相关操作。 一个子系统提供给其它子系统的一组操作形成子系统接口,它包括操作的名称、参数、类型和返回值。 系统设计集中定义每个子系统提供的服务,即列举操作、参数以及操作的高层行为。 对象设计集中定义子系统的接口,即参数的类型和每个操作的返回值。 设计目标给出了系统应重点考虑的质量要求; 设计目标的来源主要是系统的非功能性需求; 例如,在事故管理系统中,应把可靠性、系统响应的及时性作为设计目标;考虑到该系统的使用方式以及使用所能造成的后果,应把安全性也标识为设计目标。 子系统分解也是一项循序渐进的活动:在获得初始分解之后,后续的若干问题会导致分解的修改(合并、新增加、再分解); 初始的子系统分解来自功能性需求:通过把若干功能上相关的类分组而得到; 出发点:把Use Case及其已确定的参与对象分配到各子系统中。 将在一个Use Case中确定的对象分配到同一个子系统中; 为那些在子系统间传递数据的对象创建一个专用的子系统; 将穿过子系统边界的关联数量降到最小; 在同一个子系统中的所有对象必须是功能相关的(增强子系统内聚)。 选择硬件配置和虚拟机平台 某些系统需要运行在多台计算机上,并且依靠网络访问,这就要求确定各子系统所处节点位置并设计子系统间通信的基础设施; 硬件映射会对系统性能、复杂度产生巨大影响,因此应在系统设计早期进行; 虚拟机包括操作系统、数据库管理系统等。它进一步缩小系统与运行平台之间的距离。 将对象和子系统分配给节点 节点确定后,各子系统应该能被分配到相应节点; 硬件节点映射和子系统分解可能相互影响。比如事故管理系统的例子中,报告紧急情况用例的功能是分布在两个节点(现场工作站、调度工作站)上,因此合理的子系统划分应是一个调度员接口子系统、一个现场工作人员接口子系统。 为了在节点间传送数据,经常要定义新的子系统或对象。事故管理系统中,可以增加一个通知子系统实现现场工作站和调度工作站之间的通信。 持续化数据比系统的简单执行存在的时间要长; 数据存放的地点以及如何存放会对系统的分解产生影响。可以设置一个子系统专门用来存储数据;数据存放可以考虑数据库,也可以考虑磁盘文件; 事故管理系统中,考虑到调度员创建的“事

文档评论(0)

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

文档有任何问题,请私信留言,会第一时间解决。

版权声明书
用户编号:7043023136000000

1亿VIP精品文档

相关文档