欢迎来到天天文库
浏览记录
ID:40269672
大小:2.71 MB
页数:8页
时间:2019-07-30
《需求分析和系统建模(4)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、2.4域模型及建立系统域模型示例2.4.1建立项目系统中的域模型1.什么是问题域和域建模(1)什么是问题域?软件系统所要解决的现实世界中的问题领域称为问题域,如银行业务属于银行的问题域、网上商城系统属于电子商务的问题域、BBS论坛系统属于内容管理的问题域。(2)什么是域建模?软件系统的开发者设计和开发实现一个软件系统,总是希望该软件系统能解决一些特定的问题,这些问题总是会映射到和现实问题相关的一些概念。对这些问题进行归纳、分析的过程就是域建模(域指的就是问题域)的过程。(3)为什么要进行域建模?·建模是开发优秀软件系统活
2、动的核心部分为软件系统建立模型的主要目的是实现设计结构和系统行为之问的沟通,并对软件系统体系结构进行可视化控制。建模是为了更好地理解正在开发的软件系统,并能够提供简化和复用的机会;同时建模还可以降低开发过程中产生风险的可能性。·建立域模型的优点建立域模型能够从现实的问题域中找到最有代表性的概念对象;并能找出其中的类和类之间的关系,因为所捕捉的类是反馈问题域本质内容的信息。图2.43所示是某BBS论坛系统中业务层组件的类图示例,从这个类图中可以了解各个类之间的关系。图2.43某BBS论坛系统中业务层组件的类图示例2.与建立
3、域模型相关的一些知识(1)什么是域模型?所谓的域模型实际上是可视化了领域中的名词列表,并且为这些名词列表建立领域类。也就是说,域模型是抽象了的一个可视化字典。模型展现了部分视图或抽象,而忽略了建模者不感兴趣的细节。(2)域模型不是软件组件的模型。域模型是现实世界领域中相关事务的可视化表示,不是Java语言或者c#语言中的有关类等这样的软件组件。因此以下元素或者名称不适合在域模型中表述。·软件组件(窗口或数据库)。·对象中的成员方法:成员方法是纯粹的软件领域的概念。·对象的职责:在设计工作期间考虑对象职责是非常重要的,但在
4、域模型中不考虑这些问题。而在域建模中考虑职责的正确方法是给对象分配角色(比如收银员)。3.识别领域类的策略是根据名词短语识别有人提出了用名词短语分析找出领域类的方法,然后把它们作为候选的领域类或者属性;不过开发者在使用这种方法时必须十分小心,因为从名词机械地映射肯定是不行的,自然语言中的单词本来就是模棱两可和存在歧义的。下面是识别领域类的一些指导原则。(1)不要认为域模型中领域类越少越好,情况往往恰恰相反。领域类越少,也就意味着类的职责越集中,这样将不利于系统后期的复用;组成系统的基本单元越简单,粒度越细,用这些单元构建
5、系统的灵活性就会越大,单元的可复用性也越大。(2)识别领域类的过程也是一个不断完善的过程。在初始识别阶段往往会漏掉一些领域类,在后面考虑属性和类之间的关系时才会发现它们,这时应该再把它们添加上。(3)尽可能全面地找出各个领域类。不要仅因为需求中没有要求保留某个领域类的信息,或者因为某个领域类没有属性,就排除掉这个领域类。4.如何通过建立域模型识别系统中的各个类及其关系通过对软件系统中的各个业务对象建立域模型,分析和设计人员能够获得系统的基本对象。随后即可进行软件系统中数据库表的逻辑设计,进而再实现系统的业务逻辑处理功能,
6、最后实现系统中的各个表现层组件。建立域模型主要的思路和基本的实现步骤如下:(1)收集和描述软件系统中的各个用例。(2)对用例进行分析并首先建立一个用例实现。通常对一个用例的实现,开发者需要做下面这些事情:设计包括开发者关注的用例中出现的所有类的一个UML类图(有时也叫做合作类视图);设计描述交互的对象,以及它们之间的调用关系的一个或多个UML交互图。在UML中定义了两种类型的交互图:顺序图和协作图。(3)其次,补充和完善前面用例的描述。当开发者在进行用例分析时,设计出的用例描述只记录了从用户角度来看,系统的行为是什么样子
7、的。在概要地描述系统内部一些不可见的操作时,这足够了,但是按照这样的描述,并不能完成具体的用例编程实现。因此,开发者还需要进一步补充和完善对前面用例的描述。(4)再为用例行为找出分析类。这一步的目的是找出分析类的候选范围,这些类共同合作可以完成用例的所有行为。(5)根据分析的结果找出软件系统中的各个分析类。寻找类的一个简单方法就是语法分析,开发者只要找出在软件项目需求中的各个名词短语即可,这些名词短语(有些是形容词+名词)以后将成为软件系统中的类、类中的属性等内容。当然,一些对软件系统无关紧要的名词短语,开发者可以筛选掉
8、它们。对领域类的命名,一般使用问题域中的词汇;另外,如何正确而合理地分辨出哪些候选名词才是真正的问题领域中的类呢?此时,开发者需要对每个候选词做检查,一个常用的检查方法就是用一些简单的问题来测试每个词是否为所需要的名词。·这个候选的名词是在系统的边界之内吗?如果不是,那么它可能是系统的用户。当然,此时它也不是软件系统
此文档下载收益归作者所有