1、Web建模方法与工具,项目开发计划 项目进度时间估算 (1)GANTT方法(可使用office Visio、project),Pert 方法(工程网络方法、程序评价和审查技术)画出工程网络图就是为了要“向关键工作要时间,向非关键工作要资源”,这样才能在最短时间内选择最佳方案,使工程项目如期完成。关键路径:为最早时刻与最迟时刻相同的事件所组成的路径, 在图中用粗线箭头表示。,UML建模工具PowerDesigner、ROSE、VISIO、Visual Studio 2010、Enterprise Architect、开源 StarUML参考书籍: UML和OOAD快速入门 Visual Stud
2、io 2010和UML黄金法则邱郁惠等,需求建模1)模型与建模的重要性 模型是对现实的简化,是对现实世界某些重要方面的表示。模型是一种抽象,从某个视点、在某种抽象层次上详细说明被建模的系统。它帮助人们按照实际情况或按人们需要的样式对系统进行可视化,提供一种详细说明系统的结构或行为的方法,给出一个指导系统构造的模板,对所做出的决策进行文档化。 模型从某一个建模观点出发,抓住事物最重要的方面而简化或忽略其他方面。工程、建筑和其他许多需要具有创造性的领域中都使用模型。 软件系统的模型用建模语言来表达,如UML。模型包含语义信息和表示法,可以采取图形和文字等多种不同形式。 2)需求建模的步骤是:首先模
3、型化当前系统,建立当前系统的物理模型,然后抽象出当 前系统的逻辑模型,最后导出目标系统的逻辑模型。,面向对象需求模型用例模型 用例模型的作用有3个方面:首先,它描述了待开发系统的功能需求;其次,它将系统看作黑匣子,从外部参与者的角度来理解系统;最后,它驱动了需求分析之后各阶段的开发工作。(1)系统边界(System Border),(2)参与者(Actor)(3)用例(User Case) 用例是对一组动作序列的描述,系统执行这个动作序列来为参与者产生一个可观察的结果值。通常用例表示为一个椭圆。例有以下特点:用例捕获某些用户可见的需求,实现一个具体的用户目标。用例由参与者激活,并提供可见的价值
4、结果给参与者。 用例可大可小,但它必须是一个具体的用户目标实现的完整描述。 (4)用例间关系 包含和扩展 (5)场景 场景是指从单个执行者的角度观察目标软件系统的功能和外部行为。 目对于用例而言,场景是用例的实例,而用例是某类场景的共同抽象。,网络考试系统用例图实施 1.陈述问题 “网络考试系统”针对在校学生进行在线考试,主要分成两个方面:一方面用于管理员登录,主要负责进行基本资料、题库、试卷、成绩的管理以及查询等;另一方面用于普通用户登录,主要负责在线考试、查询以往考试成绩等。从总体上考虑,系统应该实现下列功能。 (1)对管理员来说,包括如下功能:-模拟考试时候,由系统自动生成试卷,考试完成
5、后,系统不记录成绩,不保存试 卷;正式考试时,管理员可以选择生成试卷或者由系统自动生成,即从课程、各种题型的数量等方面对某份试卷提出一定的要求生成试卷规则,同时,管理员还可以对库中己有的试卷进行修改和删除、添加新试卷等。-教师可以对题库中的试题进行3种基本操作,即添加新的考题、删除旧有考题、修改原有考题,其中试题类型包括判断题、填空题、选择题和问答题;对于每种类型的试题,教师可以设置题干、答案等属性。-教师可以查看考生的考试成绩,并针对不同的课程进行成绩统计,包括考试人数、最高分、最低分、平均分以及各分数段得分人数等。-管理员可以对用户的资料进行查询、删除。 (2)对普通用户来说,包括在线考试
6、、查询以往考试成绩等。 -在线考试。学生可以任选时间进行在线测试,考试结束后,系统会根据已有的标 准答案进行在线判卷,考生可以立刻知道考试成绩。-查询以往考试成绩。学生可以在线查询以前参加过的每门课程的考试相关信息。,发现参与者 根据参与者的定义,参与者是在系统之外与系统交互的某人或某事物,因此,可以明确参与者的两个明显特征,一是参与者是在系统之外,在系统之内的不是参与者;二是参与者与系统有明显的系统边界,可以通过这两个特征来发现系统的参与者。除此之外,还可以通过以下问题的答案来发现参与者; 谁负责提供、使用或删除信息? 谁使用此功能? 谁对某个特定功能感兴趣? 在组织中的什么地方使用系统?
7、谁负责支持和维护系统? 系统有哪些外部资源? 其他还有哪些系统将需要与该系统进行交互? 谁对系统有着明确的目标和要求并且主动发出动作? 系统是为谁服务的?这里,先根据对问题的陈述来发现系统边界外的参与者。通过将问题陈述的主谓宾补齐后进行整理,得到陈述列表,参与者陈述列表: 一方面用于管理员登录(系统),主要负责进行基本资料、题库、试卷、成绩的管理以及查询等 另一方面用于普通用户登录,主要负责在线考试、查询以往考试成绩等 模拟考试时候,系统自动生成试卷,考试完成后,系统不记录成绩,不保存试卷 正式考试时,管理员可以选择生成试卷或者由系统自动生成,即从课程、各种题型的数量等方面对某份试卷提出一定的
8、要求生成试卷规则,同时,管理员还可以对库中己有的试卷进行修改和删除、添加新试卷等 教师可以对题库中的试题进行3种基本操作:添加新的考题、删除旧有考题、修改原有考题,其中试题类型包括判断题、填空题、选择题和问答题:对于每种类型的试题,教师可以设置题干、答案等属性教师可以查看考生的考试成绩,并针对不同的课程进行成绩统计,包括考试人数、最高分、最低分、平均分以及各分数段得分人数等 管理员可以对用户的资料进行查询、删除 学生可以任选时间进行在线测试,考试结束后,系统会根据已有的标准答案进行在线判卷,考生可以立刻知道考试成绩 学生可以在线查询以前参加过的每门课程的考试相关信息,从上表可以发现,参与者有系
9、统、管理员、教师、学生、普通用户、考生。由于本系统是针对在校学生进行的在线考试,因此,“学生”与“考生”等同,去掉其中之一。另外,由于系统分成两个方面,一是参与考试的学生,一是为考试提供基础条件的教师和管理员,因此,将陈述中的“管理员”改成“系统管理员”,并和“教师”一起都作为系统后台的管理员人员;而普通用户显然是指参与模拟考试的还没有登录进系统的学生。由此,得出网络考试系统的参与者及其关系,如图所示,3.确定用例 由于业务用例是指系统提供的业务功能与参与者的交互,表现问题领域中各实体间的联系和业务往来活动。因此,要确定系统的业务用例,只需将陈述中描述出的业务功能指派给相应的参与者,然后使用交
10、互性强的“动宾短语“来概括出用例名。系统用例的参与者是除人之外的其他系统、硬件或组织等,因此,确定系统用例的方法与业务用例差别不大,只是参与者不同而己。可以通过建立一个表来分析,把功能需求赋予参与者,并概括出用例。,4.绘制用例图,建立领域模型用例模型原则上不是面向对象的,它描述的是系统的功能,只是建立系统的最初的输入,为了更细腻地分析需求,从面向对象的角度,可以建立领域模型。识别一个丰富的对象集或者领域类集是面向对象分析的核心工作。 领域模型概念: 现实世界中系统所要解决问题的领域为“问题域”,我们设计一个系统,总是希望它能解决一些问题,这些问题总是会映射到现实问题和概念。对这些问题进行归纳
11、、分析的过程就是领域建模。经典的面向对象的分析或调研的步骤是把一个相关的领域分解为我们能够理解的单个的领域类或者对象。这里的域指的就问题域;所建的模型就是领域模型。因此,领域模型是领域类或者我们感兴趣的现实对象可视化表示,它们也被称为概念模型、领域对象模型、分析对象模型等。,1.领域对象 用来分析问题域,并最终建立领域模型中的领域对象可以分成边界对象、控制对象和实体对象。 边界对象:参与者使用该对象与系统进行交流,也即边界对象代表系统的内部工作和它所处环境之间的交互。边界类将系统的其他部分和外部的相关事物隔离和保护起来,其主要的责任是输入、和过滤。 实体对象:代表要保存到持续存储体中的信息。
12、实体类通常用业务域中的术语进行命名,通过它可以表达和管理系统中的问题域信息。 在领域模型中,系统中的关键概念以实体对象来表现,实体对象主要的责任是业务行为的主要承载体。 控制对象:它协调其他类的工作,每个用例通常有一个控制类,控制用例中的时间顺序。 控制类控制其他对象相互协作以实现用例的行为,也称管理类,其主要的责任是控制事件流,负责为实体类分配责任。,健壮性(鲁棒Robust )分析 健壮性分析,它让边界对象、实体对象和控制对象相互之间遵循一定的规则进行交互,从而来验证用例事件流的正确性和发现领域对象。健壮性分析遵循的规则如下: 用例的参与者只能与边界对象交互。 边界对象只能与控制对象和参与
13、者交互(即不能直接访问实体对象)。 实体对象只能与控制对象交互。 控制对象可以和边界对象交互,也可以和实体对象交互,但是不能和参与者交互。类图 类的UML表示是一个长方形,垂直地分为3个区。 上图是一个Student类,顶部区域显示的是类名Student;中部区域显示该类有3个属性: Name, Height, Age,属性后面是类型:前面的+、#和-分别表示属性的访问控制-public、protected、private;底部区域显示的是方法Listen()。,类与类之间的关系是关联、泛化、依赖和实现4种。(1)关联关系单向关联指的是两个类是相关的,但是只有一个类知道这种联系的存在。这里的多
14、重值是指关联的两个类之间对应的数量关系。例如,图中的多重值表示一个学生可以读一到多种图双向关联:指的是两个类彼此知道它们间的联系,默认情况下, 关联关系就是双向关联,因此也可以省略箭头。(2)泛化关系 泛化关系使用一端带三角形箭头的实现表示, 其中箭头指向的一端为父类,,(3)依赖关系 依赖关系使用带开放箭头的虚线表示,箭头指向的一端表示被依赖的类。 (4) 实现关系 实现关系使用带三角形箭头的虚线表示,箭头方向由实现接口的类指向接口。领域模型分析的原则 : 一般来说,用大量细粒度的领域类来充分描述领域模型比粗略描述要好。 识别领域类的一些指导原则: 不要认为领域模型中领域类越少越好,情况往往
15、恰恰相反。 在初始识别阶段往往会漏掉一些领域类,在后面考虑属性和关联时才会发现它,这时应该把它加上。 不要仅仅因为需求中没有要求保留一些领域类的信息,或者因为领域类没有属性,就排除掉这个领域类。 无属性的领域类,或者在问题域里面仅仅担当行为的角色,而非信息角色的领域类,都可以是有效的领域类。,识别领域类的策略主要有以下几种方式,在实际分析领域类的过程中,往往几种方式要结合使用。 1.使用领域分类表 通过建立一个候选的领域类的列表来开始建立模型。从学生考试领域中抽取出来的概念列表。,2.识别名词短语 曾经有人提出了用名词短语分析找出领域类的方法,然后把它们作为候选的领域类或者属性。使用这种方法必
16、须十分小心,从名词机械地映射肯定是不行的,而且自然语言中单词本来就是模棱两可的。不过,我们仍然可以通过用例事件流中的一些名词短语来发现一些候选类。例如,“参与正式考试”用例表: 基本流程: 1.学生选择要考试的科目。 2.系统显示开始考试或取消考试提示信息。 3.学生选择开始考试。 4.系统显示试卷,并开始计时。 5.学生录入试题答案。 6.学生选择结束考试。 7.系统核对试题答案,并根据试题分值计算得分。 8.系统记录学生成绩到数据库中,并显示成绩,结束用例 仔细研究其中的名词,可以看到很多有用的领域类,如科目、试卷、试题、答案、成绩,这其中也可能有些是属性。这种方法的缺点就是不精确,但对研
17、究问题域会非常有用,如果结合其他几种领域类识别方法,就能弥补不足之处。,3.使用健壮(鲁棒)分析图 将用例的事件流按健壮分析规定的对象之间交互的规则绘制健壮分析图,从中也可得到领域类。以“参与在线考试”为例绘制健壮分析图。,通过综合使用上述方法,将得到的领域类再经过过滤、整理,并识别其相互关系得到“网络考试系统”的领域模型,并使用EA建模工具绘制领域或模型图。从建立的领域模型中可以看出,整个领域中涉及的关键对象以及它们之间相互协作的关系:教师出题、管理员根据试题生成试卷、考生在试卷上作答、试卷属于某门考试科目、试题有答案、某种试题类型包括一系列试题、试卷有考生的答案等,与考试领域相关的业务及概念相吻合。,