近期在学校实习,只有两个星期,其实就跟每天去机房做大作业没什么两样。自以为选了一个最简单的题目,但是实在不想再用面向结构的开发方法了。结果在使用面向对象的分析和设计中遇到了很多问题。赶着晚上的时间大致地自学了UML的知识后,对这个IMA库存管理系统该怎么设计还是没有什么头绪,手头上又没什么这方面的书,只好自己归纳了一些。
反正已经做出来了,共享一下,不知道有没有用。
1、 面向对象分析
参与人员:客户、开发技术人员
主要过程:
u 分析问题域,明确用户需求
尽快理解业务领域的相关知识,取得对问题域的一致认识,明确用户对系统的需求,定义系统的职责范围和边界,探讨问题的初步解决方案。
u 标识Use Case
定义了在业务活动中的业务规则和任务,描述外部活动者与系统的交互,定义功能需求。
用例图可以表示成不同的层次
u 识别对象,并通过抽象确定候选类
仔细阅读问题陈述,并逐一标出每个名词和名词短语,然后对所有标出的词汇进行筛选,舍去与目标系统无关或已有相同含义的多余同义词。
规则:1)这个对象的信息需要被记忆,否则系统无法正常地工作
2)这个对象应该具有一组确定的操作,通过它们实现对对象属性的修改
3)这个对象应该具有多于一个属性
4)能够定义一组适用于所有实例的公共属性
5)能够定义一组适用于所有实例的公共操作
6)属于基本需求内容
u 标识对象的属性和行为
寻找类的属性和方法的过程也是明确每个类职责的过程,属性可以从问题的陈述中抽取,或通过对类的性质理解加以辨认;行为可以从对系统的处理叙述中获得,即可以将动词标识的动作作为候选行为。
原则:
1) 系统包含的所有职责应该均匀地分担到每个类中,避免出现某些类的职责过大。
2) 一般性的职责应该被放在较高层次的类中。
3) 属性记录的信息与相关的行为应该位于同一个类中。
4) 反映一个事物的信息应该被放置在一个类中,而不要分散到多个类中
5) 在相关类之间共享职责
u 定义类之间的关系
每个类主要以两种方式完成它的职责:一是应用类自身的行为操作自己的属性,二是与其他类协作共同完成某项职责。
类之间的四种最基本关系:关联、依赖、继承、聚合
关联(一个操作和两个对象相关,协作完成)
依赖(两个类的关联属于临时性的,临时生成对象)
继承(构成一般-特殊关系)
聚合(一些类是另一个类的组成部分)
将需要共同协作完成某项职责的若干个类划分成一组,形成一个子系统
u 用户界面需求
明确操作人员如何向系统发出命令,以及系统如何提交操作结果和反馈信息。尽快地构造用户界面原型,以得到用户的更改建议。
阶段成果:用况模型、类模型和用户界面模型,其中类模型是最关键的。
2、 面向对象设计
主要任务:考虑与软件实现有关的各种因素,确定系统的体系结构和完成对象的设计。
主要过程:高层设计(系统设计)+ 底层设计(对象设计)
u 系统分解与分层
将分析模型划分为子系统,每个子系统可看成一个高层次的模块
原则:
1) 应保持各个子系统的相对独立,减少彼此间的依赖性
2) 子系统应该具有定义良好的接口,通过接口与系统的其余部分进行通信
3) 子系统的数量不宜太多
在OOD中,采用的基本手段是将类的组织结构划分成多个层次,即系统模型层次化,形成一个较好的分层体系结构,例如:
u 确定任务管理策略和控制驱动机制
如果若干个对象或子系统必须同时作用于某个事件,则将此情形称为并发。
在OOD中由任务管理部分负责设计管理并发行为的策略和控制驱动机制。任务管理设计首先需要根据对象的动态模型分析、定义系统的并发性,并通过识别和建立控制流程(包括进程和线程)来设计面向对象系统的任务,选择软件实现的控制方法。
任务管理主要包括任务的选择和调整,一般原则:
1) 识别事件驱动和时钟驱动任务
都由中断激活,前者接收来自外部的中断,后者则被系统时钟控制
2) 识别优先任务和关键任务
优先级高的任务必须能够优先访问系统资源,关键程度高的任务必须能够保证在资源短缺或系统退化的状态下正常进行。
3) 识别协调者
当有3个或更多的任务时,应该增加一个附加任务,用来充当协调者的角色。
4) 定义任务
主要包括-什么是任务、如何协调工作及如何通信
5) 扩充有关任务的类及对象
u 设计人机交互界面
u 确定实现数据管理的策略
包括数据存储方法的设计和相应操作的设计
u 对象设计
对象设计强调从问题域概念到计算机域概念的转换,重点在于为每个类的属性和行为作出详细的设计,主要包括确定每个属性的数据结构和行为操作的实现算法。
主要设计过程:
1、 对象描述(协议描述和实现描述)
协议描述了对象的接口,即定义对象可以接收的消息以及当对象接收到消息后完成的操作行为。
实现描述了对对象接收到某个消息后所执行的操作行为的实现细节的描述,包括对象属性的数据结构细节及操作过程细节的描述。
2、 设计算法和数据结构
定义所有属性的可见性,以及数据结构和所有操作的详细规约。
u 评审设计模型,在必要的时候可以对此过程给予迭代。
阶段成果:类图、主题图、交互图、状态图、协作图
3、 面向对象程序设计