《火球——UML大战需求分析》(第3章 分析业务模型-类图)——3.6 考试管理系统(类图综合训练)

zz/2024/6/13 21:25:56

摘要类图(Class Diagram)可能是用得最多的一种UML图。类图的基本语法并不复杂,你可能最多学习两三天就可以掌握,然而要真正做到活用类图则可能需要几年的功力。类图是锻炼面向对象分析(OOA:Object-Oriented Analysis)和面向对象设计(OOD:Object-Oriented Design)思想的重要的工具,是业务结构建模的重要工具。本章将会有大量的实战练习,你的OOA思想将会接受极大的考验和提升。


3.6 考试管理系统(类图综合训练)


做这综合练习有以下几个目的:
1)让你巩固所学到的类图知识。
2)演练用类图分析需求的基本步骤。
3)学习一些提炼类的新知识。

本练习我们将会演练类图分析需求的基本步骤:
1)识别出类。
2)识别出类的主要属性。
3)描绘出类之间的关系。
4)对各类进行分析、抽象、整理。

本综合训练的题目如下:
某学校打算做一套考试管理系统,当前情况如下:
1)讲师会讲很多门课,大部分的课程需要安排一次考试,有些就不需要。
2)考试题目由讲师出。
3)学生需要参加很多考试,每门考试都有成绩。

请你思考:
1)考试是一个类吗?如果是,考试这个类代表怎样的意思?
2)分析出与考试直接相关的类都有哪些?
3)考试类与其他类是怎样的关系?

本系统围绕考试开展,我们首先要确定考试是怎样的一个类,考试类代表考试试卷吗?还是代表考试这个事情?这是考试管理系统,不是考试试卷管理系统(当然试卷也需要在本系统中管理),需要对考试这个事情进行管理,所以考试类代表的是考试这个事情。
需求分析中遇到的人、物、概念识别为类,这是比较容易做到的,而对于事情,例如考试,我们就不一定能将其识别为类。因为普遍认为,类代表的是一些静态东西,而事情是动态的,不适合用类来表示。这并不是绝对的,由系统的目标出发,有时候我们需要将某些事情、动作等动态内容,识别为类。当我们做某某管理系统,而某某是指某个事情时,其实最终系统是通过管理该事情的记录来实现对该事情的管理。例如:考试管理系统,其实最终系统管理的是考试记录;请假管理系统,其实系统最终管理的是请假记录。为了能让这些事情能被管理,将这些事情识别为类是很必要的。

考试类的意义基本确定了,它的属性有考试时间、地点等内容,现在要思考与考试直接相关的类有哪一些呢? 课程、试卷、讲师、成绩、学生这些合适吗?
请你先列出与考试直接相关的类,并尝试画出它们与考试的关系,然后才继续往下看。
请注意只需要找出与考试直接相关的类就可以了,不需要找间接相关的,另外只需要画出其他类与考试的关系就可以了,至于其他类之间的关系暂不用考虑。

image034.jpg


图 1.35 考试类与其他类的关系

说明:此图并没有画出课程、讲师、学生之间的关系,此图重点表达的是其他类与考试类的关系。

此图表达了这样的情况:
1)每个课程要么安排一次考试,要么没有考试,而每个考试只对应一门课程。
2)一名讲师作为出题者对应零到多次考试,而每一次考试必有对应的一位出题的老师。
3)一名学生需要参加零到多次的考试,而每个考试有一到多个学生参加。
至于成绩和试卷,要重点说明一下。

作为一名学生,他参加一门考试就会得到一个成绩,他参加多门考试就得到多门成绩,于是就可以计算出该名学生的平均分、最高分、分数排名等,这些内容可以列为学生的属性。
作为考试来说,一次考试有很多学生参加,这样这门考试就会产生很多个成绩,根据这些成绩,我们可以算出这次考试的平均分、最高分、优秀率、合格率等等,注意平均分、最高分这些也可以叫做这次考试的成绩,这些内容可以列为考试的属性。
学生的分数排名、考试的优秀率这些东西如果列为属性,这些属性可以成为“导出属性”,意思就是通过其他基础数据算出来的属性。需求分析时,我们要重点识别基础属性,基础属性是指“原生”的属性,不根据其他东西计算出来,而是直接得到的。

图3.35中所定义的成绩类是指一名学生参加一次考试所得到的成绩,这个成绩是原生的,通过这个成绩,系统可以从考试的角度或者从学生的角度导出很多其他统计数据。
理解了成绩这个类,应该就比较容易理解试卷这个类了。一次考试对应一名出题老师,老师为这次考试设计了一份题目,这份题目就是试卷。

上述只是参考答案,这个题目并没有标准答案,识别出怎样的类以及画出类之间的关系,从不同的角度就会有不同的结果,关键还是要从系统的目标出发,做出合适的分析。如果你的答案与参加答案很不一致,不代表你画得不好,只要你能有条理地解释这些类和它们的关系,就是合适的!

通过这个综合训练的过程(而不是结果),总结以下几点实践建议供你参考:
1)从系统的目标出发来思考问题。
2)用类图分析需求的基本步骤:识别类、识别属性、画出关系、整理和提炼,只是大致的参考步骤,并不是绝对的。
3)识别类的关键属性,能让我们思考类是否合适,尝试画出类的关系也会让我们再次思考这些类是否合适。
4)多读图,从两个方向来读两个类的关系,能帮助你发现更多问题。
5)只需要表达出的类直接关系就可以了。例如:A和B有关系,B和C有关系,这样其实A和C也是有关系的,它们有间接关系,间接关系不需要直接画出来,只需要画出所有的直接关系,我们可以通过类图的关系网络看到类之间的间接关系。
6)不要试图用一个类图表达所有的内容。考试系统这个题目其实已经简化不少了,实际系统的类图可能有几十个甚至上百个类,要规划好用多个类图来表达不同的内容,每个类图有不同的表达重点。
7)注意识别“原生”的内容,并且根据这些“原生”内容能导出什么“导出内容”,不要将“导出内容”当成“原生内容”的。
8)识别关联类是难点也是关键点,分离出关联类会让我们更加看清楚事务的本质。
9)没所谓绝对正确的答案,关键是要有自己的合理分析,逐步求精、持续优化你的想法。
10)多练习、多讨论,逐步增强你的面向对象分析素养。



请看下一节……




作者:张传波

创新工场创业课堂讲师

软件研发管理资深顾问

《火球——UML大战需求分析》作者

www.umlonline.org 创办人


http://www.ngui.cc/zz/2748874.html

相关文章

1.9 基础知识——GP2.10 高级别的领导检查(Higher level management)

GP2.10 Review the activities,status,and results of XXX process with highter level management and resolve issues. 中文大意是:高级别的领导检查该过程的活动、状态和结果,并解决问题。 CMM中的要求是高层领导(hight management),而CM…

软件度量都该度个啥?(3)——软件规模的度量

摘要: 这年头IT界流行“用数据管理过程”、“用数字说话”,软件度量成为热点话题!一方面一堆专家在“哗众取宠”,而另外一方面企业在推行软件度量的实践中遇到了各式各样的问题,软件度量在软件企业中的实施效果不甚理…

IT行业常见职位职业路线图

我曾经面试过一些计算机相关毕业的应届生,问他希望做什么工作时,他回答只要是软件开发就好了,再细问一下你了解到的软件开发是怎样的?除了软件开发,还有其它什么工作?就答不出来了。 这里我先给出一张IT知识…

3.6 CMMI3级——确认(Validation)

验证强调的是在开发过程中对工作产品进行检查,尽早发现问题。而确认强调的是,在真实的使用环境中,确保软件能达到预期的效果。开发环境与真实环境是不可避免存在差异的,为了有效地避免在开发环境中没有问题,但一到真实…

1.2 《硬啃设计模式》 第2章 学习设计模式需掌握的UML知识

要看懂 设计模式,你需要懂 类图(Class Diagram),也需要懂一点对象图(Object Diagram),下面介绍一些 UML的必要知识,以便你学习设计模式。 属性、操作 下图简单介绍类的属性和操作…

3.8 《硬啃设计模式》 第17章 结构型设计模式小结

序号模式一句话说明1桥(Bridge)将“抽象”和“实现”自由搭配。2轻量(Flyweight)轻松地处理“大量”对象。3外观(Faade)同时提供简单接口和复杂接口。4装饰者(Decorator)不改变接口但…

5.3 CMMI5级——原因分析及解决方案(Causal Analysis and Resolution)

聪明的人在出现问题的时候,除了解决问题外,都会想到如何避免问题以后再次发生,避免的办法可能是从过程或者技术两个方面入手,从根本杜绝问题的发生。 问题分析是很常见的,为什么在5级的时候才有这样的要求呢&#xff1…

敏捷需求分析及深度提升(广州 2014.1.11)- 活动报道

这次活动已经顺利开办啦,谢谢大家的支持! 以下是图片花絮: 此活动的原始报道链接: http://www.umlonline.org/school/viewthread.php?tid2700

全能项目经理训练营-张传波-专题视频课程

立即学习:https://edu.csdn.net/course/play/24657/276936?utm_sourceblogtoedu

为什么企业宁愿开高工资给新员工,都不愿意给老员工加工资?

有朋友问到: 为什么企业宁愿开高工资给新员工,都不愿意给老员工加工资? 俺的建议: 先从这位被低薪压制的老员工角度说说: 决定你的薪资水平的根本原因是你的实力,而影响因素是你的性格。为什么说是你的性…