可维护与可复用的软件设计基础(第一部分)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

软件为什么不能维护
需求变化,无法相容新变化 维护工程师 设计工程师,浅尝辄止,简单地打补丁 软件缺乏设计、copy代码:
过于僵化(Rigidity):牵一发而动全身,耦合性太强 过于脆弱(Fragility):改一个问题导致十个问题 太过复杂(Complexicity):设计过细,没有进行分类与聚合 黏度过高(Viscosity):容易诱惑犯罪(采用破坏原有设计的方
迪米特原则
不考虑软件实现,只考虑领域的特性和问题的解决 建模思维:
软件的层次模型
软件分层模式:MVC框架,三层框架,… 软件分块模式:“物以类聚,人以群分” 软件实现模式:封装与复用,使用已有代码
软件设计语言与工具 UML:统一建模语言, OMG组织1997年发布 UML:软件设计的标准图纸
软件模型与软件层次
OOD是一种思维模式,是认识和解决问题的逻辑与方法; 软件设计是一门艺术,有一定的规律和技巧;但是需要学
习和经验积累才能掌握; OOD设计方法,重点是如何解决:简单、重用、继承、扩展 设计模式提供了如何进行“优美”设计的方法
软件需求与领域建模
软件设计必须以业务领域为中心;领域建模,将领域模型 与代码分离
法能容易达到目标) 太多重复(Repetition):软件代码的拷贝(复用) 太过晦涩(Opacity):很难阅读、理解,不知啥意思
针对可维护性的设计目标 可扩展:容易加入新功能
反例:买个新家具,发现屋里乱,塞不下
灵活性:容易修改而不波及其它 反例:汽车加装个空调,发动机不能启动了
可插入:容易替换一个同接口的类或组件,从而改变功能 如:掉了一颗螺丝,换个就好;插件。
用户模型:用例(use case) 静态模型:类图(或子模块图)、构件图、部署图 动态模型:序列图、状态图、活动图
OMG(Object Management Group) 对象管理组织http://www.omg.org/ 拥 有约300家机构的国际联盟,它开发了对象管理体系结构(OMA:是一种 描述OMG希望为面向对象的应用和环境开发的标准模型)。
针对可复用的软件设计
传统的复用:
代码的复制、粘贴(容易出错,代码重复) 算法的复用,比如sort函数,strcpy函数 数据结构的复用
面向对象设计(OOD)的复用:抽象、封装、多态、继承
复用焦点:不再集中于函数、算法的具体实现,而在更抽象 的逻辑层次;面向接口编程而不是具体实现
抽象:进行抽象层次的设计,抽象层次独立于具体实现; 封装:将可变部分、行为、模块接口等封装起来,便于扩展; 多态:依据情况扩展状态和行为; 继承:在基类定义特征和基本行为,在子类具体化
静态模型:部署图(Deployment Diagram) 表示软件及硬件设备之间的关系
动态模型:序列图(Sequence Diagram)
动态模型:活动图(Activity Diagram)
动态模型:状态图
软件设计:多学习、多实践 参考书籍
第二篇:软件设计的基本原则
设计原则概述 单一职责与开闭原则 里氏替换与依赖倒置原则 接口隔离原则
用例图(use case)
静态模型:类图(Class Diagram)
依赖 实现
依赖
泛化(继承)
组合
泛化(继承)
聚合
泛化(继承) 实现
关联
>
>
>
>
=
泛 化
类 之

实 现
关 系 的
百度文库组 合
强 弱 顺

聚 合

关 联
依 赖
静态模型:构件图(Package Diagram) 表示包(Package)的主要共用及相互之间的关系
2013年12月25日 廖洪涛
1
大纲 第一篇:软件开发的基本要求 第二篇:软件设计的基本原则 第三篇:软件设计的常用模式 第四篇:软件重构的通用方法
培训目的 了解可维护与可重用的软件设计基础知识 了解软件需求的重要性和常用的设计语言 了解软件设计的一般原则、常用设计模式 掌握反模式的基本表现与软件重构的意义
第一篇:软件开发的基本要求
软件开发的核心问题 软件为什么不可维护 可维护与可复用的软件设计 软件需求与领域建模
熟练使用设计语言
软件开发的核心问题
可维护性
软件的再生; 能够允许新的设计要求以较为容易和平稳的方式加入到已有
的系统中去,从而使这个系统能够不断焕发出青春
可重用性(可复用性)
提高生产率、降低成本 提高软件质量 恰当的复用可以提高系统的可维护性
相关文档
最新文档