1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,教学管理系统的分析与设计,1,以简易教学管理系统,JXGL,的分析与设计作为示例,说明,UML,在软件项目开发中的应用。这里仅仅叙述用,UML,帮助进行,JXGL,系统的分析与设计,建立主要的,系统静态结构模型与动态行为模型,。,一般对系统做分析与设计,建立静态结构模型与建立动态行为模型应当同时、交替进行,相互印证和补充。,UML,的创始者们主张采用,Use Case,驱动的软件开发方法。实际上,,UML,是一种通用的
2、工具,它可以使用于,Use Case,驱动的软件开发,也可以使用于其他面向对象的软件开发方法,例如直接从现实世界抽象出对象和类,建立系统的对象模型。,2,本章目录,1,系统需求,2,分析问题领域,2.1,确定系统范围和系统边界,2.2,定义活动者,2.3,定义,Use Case,2.4,绘制,Use Case,图,2.5,绘制主要交互图,3,静态结构模型,3.1,建立对象类图,3.2,建立数据库模型,3.3,建立包图,4,动态行为模型,4.1,建立顺序图,4.2,建立协同图,4.3,建立状态机图,4.4,建立活动图,5,物理模型,5.1,建立组件图,5.2,建立配置图,本章小结和习题,3,作为
3、一个简单的示例,规定所开发的简易教学管理系统,JXGL,只处理每学期的课程选修注册和学生的成绩管理。,对,JXGL,系统要求提供两个方面的服务:,(,1,)选课管理,负责新学期的课程选课注册工作,录入与生成新学期课程表,学生选课注册,查询,选课注册信息的统计与报表生成,把学生选课注册信息传送给财务系统,(,2,)成绩管理,负责学生成绩管理。,成绩录入,成绩查询,成绩统计与报表生成,1,系统需求,4,JXGL,系统的直接用户有学生、教师和教学管理员。教学管理员有权操纵数据库的数据,进行添加、更新、删除等操作。学生和教师一般只查询信息,只允许对自己有关的数据进行添加、更新、删除等操作。,JXGL,
4、系统的相关系统有财务系统。,JXGL,系统需要把学生选课注册信息传送给财务系统,以供财务系统计算学生应交纳的费用,但是不要求财务系统回馈学生应交纳的费用信息。,假定在学校的计算中心有功能强大的工作站机器,在各系、各部门、图书馆、学生宿舍都有台式,PC,,学校的全部计算机已经连网。,JXGL,系统将采用客户机,/,服务器结构建立,,JXGL,系统的应用服务器和数据库服务器设置在学校计算中心的工作站。,学生、教师和教学管理员可以在各系、各部门、图书馆、学生宿舍的台式,PC,上使用,JXGL,系统。,1,系统需求,5,2,分析问题领域,分析问题领域,是软件系统开发的一项基本工作,是项目开发之初必须首
5、先进行的重要工作。,分析问题领域的结果,是对问题领域的清晰、精确的定义,明确目标系统将做些什么。,分析问题领域的主要任务,是:对问题领域进行抽象,提出解决方案;对未来的系统进行需求分析,确定系统的职责范围、功能需求、性能需求、应用环境及假设条件等;用,Use Case,图对未来系统的行为建立模型,初步确定未来系统的体系结构等。,6,2.1,确定系统范围和系统边界,首先要确定业务需求和系统目标。,JXGL,系统用于新学期课程的选课注册管理和学生的成绩管理。凡是这两方面的教学管理内容都是,JXGL,系统的职责范围,其他的教学管理内容,如安排教学计划、排课、实习、实验、考试等都不属于,JXGL,系统
6、的职责范围。至于学校的其他管理工作,如科研、人事、财务、资产等管理也不属于,JXGL,系统的职责范围。,JXGL,系统与财务系统存在系统边界,财务系统将从,JXGL,系统得到学生选课注册信息。,JXGL,系统与学校的其他信息管理系统没有直接的联系,但是可以从学校的全局数据库中共享学生、教师、教学计划等必要的数据。,7,2.2,定义活动者,根据,JXGL,系统的职责范围和需求可以确定,4,个活动者:学生、老师、教学管理员和财务系统。对于每一个活动者,应当明确其业务活动的内容、对系统的服务要求。,“学生”活动者,使用,JXGL,系统查询新学期开设的课程信息和教师开课信息,选课并登记注册课程,查询自
7、己的课程成绩信息。,“老师”活动者,使用,JXGL,系统查询新学期开设的课程信息、学生选课信息和学生成绩信息。,“教学管理员”活动者,使用,JXGL,系统管理学期开设课程的选课注册和学生的考试成绩。管理工作包括课程与成绩数据的录入、维护、统计、报表打印等,并且负责把学生的选课注册信息发送给财务系统,作为计算学生应付费用的依据。“教学管理员”要求能够方便地查询课程信息、学生选课信息、学生信息、教师信息和成绩信息。,“财务系统”活动者,是外部系统活动者,从,JXGL,系统接受学生的课程注册信息。,8,2.3,定义,Use Case,从,JXGL,系统的顶层,Use Case,抽象,可以确定两个,U
8、se Case,:“选课管理”和“成绩管理”。,Use Case,“选课管理”与,4,个活动者都存在交互,,Use Case,“成绩管理”与活动者“学生”、“老师”和“教学管理员”存在着交互。,9,2.3,定义,Use Case,10,2.4,绘制,Use Case,图,Use Case,图是系统的外部行为视图。在确定了活动者和,Use Case,的基础上,绘制,Use Case,图,可视化活动者与,Use Case,之间的联系,可以更清楚地了解系统的行为。,绘制,Use Case,图从顶层抽象开始,如图,1,所示,然后逐步分解,精细化,Use Case,图,如图,2,、图,3,所示,直到能清
9、晰地表达问题,满足系统分析与建立模型的需要为止。,除了,Use Case,图之外,对每一个,Use Case,还应进行描述,编写,Use Case,的说明文档。,11,在绘制,Use Case,图时不但要把,Use Case,与活动者之间的联系表示出来,而且应当把,Use Case,之间的联系也表现出来。,Use Case,间的联系最常见的有,,,和,等联系。如图,4,所示,,Use Case,“查询课程信息”和,Use Case,“选课注册”都与,Use Case,“身份验证”有,联系,即它们在运行中都使用,Use Case,“身份验证”进行用户的合法身份检查。同样的,联系存在于其他,Use
10、 Case,与,Use Case,“身份验证”之间。,2.4,绘制,Use Case,图,12,2.5,绘制主要交互图,交互图描述,Use Case,如何实现对象之间的交互。,交互图用于建立系统的动态行为模型。,Use Case,图是系统的外部视图,在分析和绘制了,Use Case,图之后,对主要的,Use Case,做交互行为的分析是有必要的。分析的结果可以写成文档,绘制初步的交互图,从而更清楚地理解,Use Case,的行为,以便进一步调整,Use Case,视图,确定问题的解决方案。,交互图有两种:顺序图和协同图。可以根据需要绘制。,13,绘制活动者“学生”与,Use Case,“选课注
11、册”的顺序图,.,Use Case,“选课注册”的行为由“注册表单”接口对象、“选课注册表单”接口对象和“开设课程”对象实现。,在项目开发之初,分析问题领域时,绘制交互图只是为了印证领域分析的结果和,Use Case,视图的正确性,在以后对系统动态行为建模的过程中,还需要对交互图做深入的分析、细化和完善。,2.5,绘制主要交互图,14,系统的静态结构模型主要由对象类图和对象图表达。发现对象类及其联系,确定它们的静态结构和动态行为,是面向对象分析的最基本的任务。,3,静态结构模型,15,3.1,建立对象类图,1,定义对象类,首先从研究,Use Case,和交互剧本中发现对象类,确定类的属性和主要
12、操作。对于,JXGL,系统可以抽象出以下一些主要的对象类。,(1),在人事信息处理方面有“学生”类、“教师”类。,(2),在选课管理方面有“课程”类、“开设课程”类、“学生登记”类、“课程登记”类、“选课统计”类等。,(3),在成绩管理方面有“学生成绩登记”类、“成绩统计”类。,对于每一个类应当确定其职责、属性、主要操作以及其他性质说明。,16,对象类的操作可以通过检查分析交互图确定,把交互图中对象之间的交互活动抽象成一个类的操作。例如,可以从课程信息管理顺序图中的活动“加入课程(数据结构,基础课,,3,)”抽象得到“课程”类的操作“加入课程()”。,3.1,建立对象类图,17,2,定义用户接
13、口,除了一般类外还需要分析与定义系统的用户接口,这些接口常可以用对象类定义。,对于,JXGL,系统可以有以下一些用户接口类。,3.1,建立对象类图,18,3,定义联系,在定义了对象类之后,需要进一步分析对象类之间的联系。,JXGL,系统的对象类之间的联系有多种类型,关联、聚合、泛化、依赖等都有。,3.1,建立对象类图,19,(,1,)关联。,在“开设课程”类与“师生”类之间存在“授课”关联和“登记注册”关联。在“开设课程”类与“学生成绩登记”类之间存在关联。相互关联的类之间不存在继承关系,而是通过消息传递相互联系、协同工作。,3.1,建立对象类图,20,(,2,)聚集联系,。新学期开设的课程只
14、是学校的教学计划中需要设置的课程中的一部分,“开设课程”类与“课程”类之间存在聚集联系,“开设课程”类是代表部分的对象类,“课程”类是代表整体的对象类。同样地,“开设课程”类与“学生登记”类、“课程登记”类之间存在聚集联系。,3.1,建立对象类图,21,【例3-20】,分析下面程序的运行结果,(,3,)泛化联系。,把学生与教师的共同信息和共同操作抽取出来,组成一个新类“师生”,原来的“学生”类中保留学生特有的属性“专业”和“班级”,在“教师”类中保留教师特有的属性“职称”。“学生”类、“教师”类与“师生”类的联系为泛化联系,“师生”类为更一般的类,“学生”类和“教师”类是特殊类,它们继承“师生
15、类中的公共属性。,22,(,4,)依赖联系。,成绩统计是在学生的成绩数据上进行的,在“成绩统计”类与“学生成绩登记”类之间存在依赖联系,“成绩统计”类依赖于“学生成绩登记”类。同样地,“选课统计”类依赖于“开设课程”类。,在定义联系时,需要同时分析和确定联系端的对象类的多重性、角色、导航等性质。这些可以从需求分析、领域知识来分析和确定。,在确定对象类之间的联系的同时,还需要考虑对象类之间的接口。,3.1,建立对象类图,23,JXGL,系统采用关系数据库系统存储和管理数据。在分析和设计系统的静态结构模型时需要进行数据分析和数据库设计。,JXGL,系统有,4,个方面的数据需要管理:人员数据(学生
16、教师)、课程数据、选课注册数据和学生成绩数据。经过分析,,JXGL,系统至少应有,6,个数据库表:学生表、教师表、课程表、开设课程表、选课表和任课表。,3.2,建立数据库模型,24,这些基本表定义为,学生(学生号、姓名、出生日期、性别、籍贯、地址、电话、入学时间、专业、班级备注),教师(教师号、姓名、出生日期、性别、籍贯、地址、电话、职称、专长、备注),课程(课程号、课程名、描述、学分、学时、性质、备注),开设课程(课程号、学期、授课日期、授课时间、地点、选修人数、备注),选课(学生号、课程号、学期、成绩、备注),任课(教师号、课程号、学期、备注),对于上述的基本表需要进行关系规范化,设计用
17、户视图、触发器、存储过程等。,数据库模式通常用实体,联系模型(,ERD,)表示,如果需要也可以用对象类图为数据库模式建立模型。,3.2,建立数据库模型,25,3.3,建立包图,JXGL,系统一共有,5,个包:“教学管理”包、“用户接口”包、“数据库”包、“,MFC,类”包和“出错处理”包。,26,“教学管理”包如图,12,所示,其中包含了为实现教学管理业务领域任务的对象类,即前文叙述的全部对象类:“学生”类、“教师”类、“师生”类、“课程”类、“开设课程”类、“学生登记”类、“课程登记”类、“选课统计”类、“学生成绩登记”类、“成绩统计”类,以及“身份验证”类等。,这些类又分别组成,3,个小包
18、选课管理”包、“成绩管理”包和“人事信息”包。“身份验证”类则相对独立。,3.3,建立包图,27,JXGL,系统由如下,两个子系统组成,。,(,1,)课程注册子系统,负责新学期的选课注册管理工作。,(,2,)成绩管理子系统,负责学生成绩管理。,3.3,建立包图,28,系统的动态行为模型由,交互图(顺序图和协同图)、状态机图和活动图,表达。,在系统的分析和设计中应当对主要的,Use Case,和对象类绘制这些图形,以便分析系统的行为,印证和修改系统的静态结构,满足用户的需求,达到系统的目标。,4,动态行为模型,29,绘制设置开设课程的顺序图,.,其中的交互事件如下。,4.1,建立顺序图,30
19、协同图,用于描述系统的行为是如何由系统的成分实现的。对于,JXGL,系统也需要绘制主要的,Use Case,的协同图,以深入了解和表示系统的行为和各个对象的作用。,对于一个协同图,首先应确定参与协同的对象角色、关联角色和消息,然后才能绘制协同图。,例如,对于,Use Case,“管理课程信息”的协同图如图,16,所示。图中的对象角色有“注册表单”接口对象、“开设课程表单”接口对象、“课程”对象和“开设课程”对象。它们协同工作,实现设置新开设课程的服务。,4.2,建立协同图,31,4.2,建立协同图,32,活动者“教学管理员”与“注册表单”接口对象联系。“注册表单”接口对象与“开设课程表单”接
20、口对象之间、“开设课程表单”接口对象与“课程”对象之间、“开设课程表单”接口对象与“开设课程”对象之间存在着关联。活动者“教学管理员”发送消息“登录”给“注册表单”接口对象,“注册表单”接口对象发送消息“新开课程”给“开设课程表单”接口对象,“开设课程表单”接口对象发送消息“取课程信息”给“课程”对象,发送消息“增加,/,删除开设课程”给“开设课程”对象。,4.2,建立协同图,33,状态机图,表现一个对象(类)的生命史。对于一些实现重要行为动作的对象应当绘制状态机图。绘制状态机图需要确定一个对象的生命期可能出现的全部状态,哪些事件将引起状态的转移,将会发生哪些动作。,学生的选课学生登记状态机图
21、如图所示。,4.3,建立状态机图,34,同样地,可以绘制选课课程登记状态机图如图所示,4.3,建立状态机图,35,活动图的主要作用是表示系统的业务工作流和并发处理过程。对于一个系统可以针对主要的业务工作流绘制活动图。,绘制活动图需要确定参与活动的对象、动作状态、动作流,以及对象流。,例如,对,JXGL,系统的设置开设课程的活动可以绘制活动图。,4.4,建立活动图,36,系统实现的源代码、二进制码、执行码可以按照模块化的思想,用组件分别组织起来,明确系统各部分的功能职责和软件结构。,JXGL,系统的运行软件可以组织成组件图。这些组件包含相应的运行代码程序。,5,物理模型,5.1,建立组件图,37
22、JXGL,系统是一个基于局部网络(校园网)和数据库的应用系统,因此有必要进行系统的配置,建立配置图。,JXGL,系统的各个部分可以配置在不同的节点上,通过网络相互通信。,5.2,建立配置图,38,JXGL,系统是一个客户机,/,服务器结构的分布式系统,它的核心教学管理软件和数据库放置在学校的中心计算机上,用户接口端的应用程序分别配置在图书馆、专业系和学生宿舍的客户机上。因此,也可以绘制图如图所示的配置图。,5.2,建立配置图,39,本章以一个简化的教学管理系统为例,详细阐述了从需求分析、问题定义、静态结构模型、动态行为模型到物理模型的建立过程。,本章小结,40,请以本章教学管理系统分析与设计案例为范例,自己设定系统题目(比如运动会管理系统、学生勤工助学管理系统、学生会活动管理系统等),进行系统的分析和设计。,本章习题,41,