软件工程导论第十一章面向对象设计

来源:互联网 发布:广东省工商局网络培训 编辑:程序博客网 时间:2024/05/29 10:26
嗯....更新进度有点慢...

一、面向对象设计准则
1.模块化
面向对象的软件开发模式,支持系统模块化的原则:对象就是模块,对象把数据结构和操作(方法)紧密的结合在一起构成模块
2.抽象
类实际上是一种数据的抽象,它对外开放的公共接口构成了类的规格说明(协议)这种接口定义了外界可以使用的合法操作符,利用这些操作符可以对类的实例中包含的数据进行操作
3.信息隐蔽(封装)
在面向对象方法中,信息隐蔽通过对象的封装性实现:类结构分离了类的接口与类的实现,从而支持了信息隐蔽
4.弱耦合
弱的耦合可以提高模块的独立性,避免某一部分模块发生变化对其他模块有较大的影响
交互耦合(要松散):对象间的耦合通过信息链接来实现,交互耦合应该松散
继承耦合(要紧密):与交互耦合相反,应该提高继承耦合的程度,因为通过继承关系结合起来的基类和派生类,结合要紧密
5.强内聚:
a.服务内聚:一个服务应该完成一个且完成一个功能
b.类内聚:一个类应该只有一个用途她的属性和服务必须高内聚
c.一般-特殊内聚:基类-派生类的内聚
6.可重用:使用已存在的类(包括开发环境提供的类库,及以往的开发相似系统时创建的类),可以提高软件重用性,提高软件生产率
二、 启发规则(就是前人总结的经验,完了我们在设计的时候应该注意的地方!)
1.设计结构应该清晰易懂
1.用词一致
2.使用已协议
3.减少消息模式的数目
4.避免模糊的定义
2.一般-特殊结构的深度适当,中等规模的系统中,类等级层次数应保持为7+-2不是必要情况,不应该随便创建派生类
3.设计简单的类:设计小而简单的类,便于开发和管理,
1.避免包含过多的属性
2有明确的定义
3尽量简化对象之间的合作关系
4不要提供太多服务
4.使用简单的协议:设计简单的类接口,发送的消息中参数要少
5 使用简单的服务:编写实现每一个服务时避免复杂的语句和结构
6 把设计变动改到最小(不要随便瞎改需求)
三、软件重用
重用的三个层次:
1.知识重用
2.方法和标准的重用
3.软件成分的重用
软件成分的重用级别
1.代码重用
2.设计结果重用
3.分析结果重用
典型的可重用例子:项目计划、体系结构哦、设计、用户文档和技术文档、数据、成本计划、需求模型说明书、源代码、用户界面、测试用例

四、设计问题域子系统
在设计问题域部分时,仅需要从实现的角度对问题域模型(对象模型,动态模型,功能模型)进行修改,主要做一些补充、修改,主要是增添、合并或者分解类和对象、属性和服务调整继承关系等
调整方法:
1.调整需求
2.重用已有类
3.组合问题域的类
4.增添基类以定义公共函数的集合
5.调整继承层次
1.使用多重继承
2.使用单继承机制
设计人机交互子系统(交互界面详细设计)
设计策略:1.分类用户 2. 描述用户 3.设计命令层次 4.设计人机交互类
设计任务管理子系统
任务可视做进程(process)
1.分析并发性:
基于动态模型分析并发性 ,如果对象间不存在交互或不同时接受事件就是并发的
并发任务可以在不同的处理器上实现,也可以在单个处理器上利用多任务操作系统实现
2.设计任务子系统:
1. 确定时间驱动型任务:主要完成通信工作
工作过程:睡眠-等待来自数据线的中断-任务唤醒、接受数据-通知相应的对象-继续睡眠
2. 确定时间驱动型任务
每隔一定时间触发执行某些任务
3. 优先确定任务
4.确定关键人物
5.确定协调任务
当同时运行的任务较多时(3个以上),一般设计协调任务,会增加系统的开销 但有利于封装不同任务间的协调控制
6.尽量减少任务数
7.确定资源需求
计算系统载荷(单位时间处理业务数),估算所需cpu性能
设计数据管理子系统
1.选择数据管理存储模式
文件管理系统
关系数据库管理系统
面向对象数据库管理系统
2.设计数据库管理
设计数据格式
设计数据相应的服务
使用成熟的商品化关系数据库,根据数据库范式设计,保持数据一致性完整性
处理并发事物时 每个事物作为一个不可分割的批量操作来处理
由事物封锁账户,直到事物结束
设计类中的服务(类中的方法)
确定类中应有的服务
设计实现服务的算法
1.算法复杂度
2.容易理解、容易实现
3.容易修改
2.选择结构
3.定义内部类和内部操作