1.结构建模与分析
领域对象与实现对象
领域对象对应于现实世界中的实体,在整个开发的生命周期内更加稳定。而实现对象指抽象的通用的一些对象。前者如ATM机,银行账户;后者如交易日志、错误日志。
多态
运行时可以存放自身类和子类的能力
结构分析技术
生成领域模型和分析
常见方法是获得一份问题领域的陈述,然后进行文本分析以识别候选类,这是一个很好的起点。
1.问题陈述最重要的是要在领域上下文中清晰地描述问题,且主要描述的是通用的需求。
2.文本分析识别对象和类。根据Amour和Miller(2001)建议,以下类型的名词或名词短语更有可能是对象。
对于每个类,编写一个简短的描述来定义它的范围和关于该类的细节信息,比如属性和操作。
4. 识别类之间存在的关联关系,根据连接类的动词或动词短语的性质来命名,消除不必要和不恰当的关系。
5. 识别类的属性和关联关系类。所有格后面的名词和名词短语,以及紧靠名词和相应类的形容词也可能是某个属性的枚举值。在这个阶段发现属性的可能性较低,但不影响领域类模型的结构。在开发生命周期的后期阶段,更容易识别属性。
6. 利用继承组织类,自底向上(比较属性查找共性),自顶向下(检查特殊情形,考虑是否需要特化)。
7. 为可能的查询验证访问路径
8. 迭代并细化模型
领域对象与实现对象
领域对象对应于现实世界中的实体,在整个开发的生命周期内更加稳定。而实现对象指抽象的通用的一些对象。前者如ATM机,银行账户;后者如交易日志、错误日志。
多态
运行时可以存放自身类和子类的能力
结构分析技术
如何获取类:可重用性是标准。应同时进行领域分析和用例分析,领域分析从问题陈述着手,产生类模型,它关于可重用的对象的识别。这些对象对于同样问题领域的大多数应用来说都是通用的,因而也可以从用例中识别出来。再次强调可重用性。
启发式分析方法:
不要尝试开发一个大的单个类图。
使用子系统、包之类的模型管理结果,自顶向下构成系统架构。
同时考虑逻辑和物理方面。
使用数据耦合而非逻辑耦合,即使用数据在子系统之间进行通信。
明智地采用设计模式。
使用文本分析和CRC方法等自底向上的方法进行领域分析。
交叉检查两种方法发现的工件(artifact).
增量地使用包来组织领域类。
生成领域模型和分析
常见方法是获得一份问题领域的陈述,然后进行文本分析以识别候选类,这是一个很好的起点。
1.问题陈述最重要的是要在领域上下文中清晰地描述问题,且主要描述的是通用的需求。
2.文本分析识别对象和类。根据Amour和Miller(2001)建议,以下类型的名词或名词短语更有可能是对象。
明确的事物....教室、场地消除不恰当类:
概念事物....课程、模块
事 件....考试、讲座
外部组织....发布者、提供者
扮演的角色....学生、老师
其他系统....招生系统、年级报告系统
冗余类:表示图一个事物的类3.开发数据字典
无关类
模糊类
属性
操作
角色
实现结构(细节)
对于每个类,编写一个简短的描述来定义它的范围和关于该类的细节信息,比如属性和操作。
4. 识别类之间存在的关联关系,根据连接类的动词或动词短语的性质来命名,消除不必要和不恰当的关系。
5. 识别类的属性和关联关系类。所有格后面的名词和名词短语,以及紧靠名词和相应类的形容词也可能是某个属性的枚举值。在这个阶段发现属性的可能性较低,但不影响领域类模型的结构。在开发生命周期的后期阶段,更容易识别属性。
6. 利用继承组织类,自底向上(比较属性查找共性),自顶向下(检查特殊情形,考虑是否需要特化)。
7. 为可能的查询验证访问路径
8. 迭代并细化模型
某类没有属性
某类很多属性和操作
查找不到
属性或操作没有宿主