1、1 引言 .21.1 编写目的 .21.2 背景 .21.3 定义 .21.4 参考资料 .32 系统结构模型 .32.1 初始对象表 .32.2 初始类图 .42.3 细化类图 .42.3.1 属性的识别 .52.3.2 操作的识别 .62.4 三层精化类图 .73 系统行为模型 .83.1 交互模型 .83.2 状态模型 .9概要设计说明书1 引言1.1 编写目的编写本说明书的目的是说明系统的静态结构及动态结构,包括初始的类模型、细化的类、动态交互模型,为进一步的设计和开发提供依据。 预期读者为:软件开发的人员,项目评审人员,及软件测试人员。1.2 背景说明:a. 待开发软件系统的名称:学
2、生管理系统;b. 本项目的任务提出者:南京航空航天大学学生处;c. 本项目的任务开发者:南京航空航天大学 信息学院;d. 用户及实现该软件的计算中心或计算机网络:南航计算机中心;e. 该软件系统同其他系统或其他机构的基本的相互来往关系:本系统同学校的其他管理系统(如:教务管理系统、图书管理系统、校园卡管理系统等)共同构成学校的自动化办公系统。 1.3 定义用户名及口令与用户分类信息:存放在一个数据库表中,用以判断该用户是管理员还是学生、教师;学生用户信息管理:是学生用户使用该系统的权限的表现,只能处理自己的信息管理员用户信息管理:是管理员用户使用全县的表现,每一位管理员所拥有的权限不同,这在用
3、户分类信息中都已表示出来;学生基本信息:即档案信息,存放学生的学号、姓名、年龄、班级、性别、专业、状态等各项基本信息,学生可以查询,管理员可以对学生状态进行修改,分为注册、注销等;选课信息:使每一位学生选择课程的总库,学生学号与课程号(明)共同唯一的决定一条记录,学生选择课程后将其选择记入库中;成绩信息:学生选择课程的成绩由授课教师在课程结束后记入库中,学生只能进行查询而不能修改,授课教师有登记和修改的权限;1.4 参考资料2 系统结构模型2.1 初始对象表通过对需求的分析,提炼出可能的对象/类,这是面向对象系统分析设计的关键,也是难点所在。为了准确识别系统的类和对象,从以下三个方面进行考虑:
4、1、考虑系统责任对照系统责任所要求的每一项功能,查看是否可以由现有的对象完成这些功能。如果发现某些功能在现有的任何对象中都不能提供,则可启发我们发现问题域中某些遗漏的对象。 2、名词技术 从名词到对象或类通常有一对一的映射。运用名词、代词和名词短语识别对象和类。 可以启发发现对象的因素包括:人员、组织、物品、设备、事件(如索赔、上访、交易) 、表格、日志、报告、结构(汽车上面有车辆,下面有客车和轿车,左右有摩托车;内有发动机)等。3、从用例中识别 (1)用例描述中出现哪些实体?需要哪些实体的合作?(2)用例执行过程中会产生并存储哪些信息?(3)用例要求与之相关的每个角色的输入是什么?(4)用例
5、反馈与之关联的每个角色的输出是什么?(5)用例需要操作哪些设备?通过对学生信息系统的分析,建立初始对象/类表如下:可能的类 英文类名 简单描述用户 User 用户分三类:管理员、学生、教师账户信息 Account 账户信息是系统需要管理的对象学生档案 StudentInformation 学生档案信息是系统需要管理的对象课程 Course 课程信息是系统需要管理的对象选课信息 SelectCourse 选课信息是系统需要管理的对象成绩信息 Score 成绩信息无需另外用对象管理,成绩作为选课记录的一个属性即可2.2 初始类图这一部的分析重点在于类和类间关系的表示,即系统体系结构的建立,因此对类
6、的描述,只要给出其关键字即可,属性和操作的细化工作可以在类模型完成后再进行。通过分析,学生管理系统的初始类图如图 2.1 所示。- 账号用 户- 账号管 理 员- 账号学 生- 账号教 师- 学号学 生 档 案- 课程号课 程11- 学号- 课程号选 课 信 息图 2 . 1 学生管理系统初始类图- 账号账 户 信 息12.3 细化类图 初始类图奠定了系统的体系结构,对象/类还需进一步细化描述其属性和操作,为下一步数据库设计和模块实现做准备。 (以下仅以用户类和选课信息类为例)2.3.1 属性的识别确定属性可以通过提出以下问题得到: 按常识这个对象应该有哪些属性? 在当前的问题域中,对象应该有
7、哪些属性? 根据系统责任,这个对象应具有哪些属性? 建立这个对象是为了保存和管理哪些信息? 对象为了完成其功能,需要增设哪些属性? 对象是否需要通过专设的属性区别其状态? 用什么属性表示聚集和关联? 可利用需求文档中的形容词或所有格短语。 类名:账户信息属性表如表 2.1 所示:表 2.1 账户信息类属性表中文名 英文名 数据类型账号 userID String密码 password String等级 grade Menu类名:选课信息属性表如表 2.2 所示:表 2.2 选课信息类属性表中文名 英文名 数据类型课程号 courseID String课程名 courseName String学
8、号 studentID String学生名 studentName String成绩 score Int其他类的属性表此处略,2.3.2 操作的识别1、操作的分类基本操作:包括数据库检索和更新,如增加、删除、修改、分类、选择、查询、计算、汇总关键操作:必须由对象提供的、在算法上复杂的业务操作(如要进行某些计算或监控操作) 。2、操作的识别确定属性可以通过提出以下问题得到: 有哪些类会与该类交互? 所有与该类具有交互行为的类会发送哪些消息给该类?该类又会发送哪些消息给这些类? 该类如何响应别的类发送来的消息?在发送消息之前,该类需要做何处理? 从该类本身来说,它应该具有哪些操作来维持其信息的更新
9、、一致性和完整性? 系统是否需要该类有另外一些职责?类名:账户信息操作表如表 2.3 所示:表 2.3 账户信息类操作表中文名 英文名 返回值类型增加一个用户 addUser() void删除一个用户 deleteUser() void修改用户信息 updateUser() void判断是否合法用户 isUser() boolean判断用户等级 grade() String查询用户信息 getUsers()类名:选课信息操作表如表 2.4 所示:表 2.4 选课信息类操作表中文名 英文名 返回值类型选课 addRecord() void退课 deleteRecord() void判断是否可选
10、isSelect() boolean查询选课信息 getRecords() List3、4、5、6、7、8、2.4 三层精化类图在初始类图的基础上,运用三层体系结构思想对基本类模型进行划分。根据各个对象的具体情况,将对象分成界面、事务和数据层。 1、对用户类的三层划分界面层: login.jsp 登录界面failure.jsp 登录失败界面,提示错误所在admin.jsp 管理员登录成功返回的界面student.jsp 学生登录成功返回的界面teacher.jsp 教师登录成功返回的界面事务层:login.java 登录处理数据层:account.dat 账户信息表2、对账户信息类的三层划分界
11、面层: user_add.jsp 增加用户界面user_update.jsp 修改用户信息(包括密码)界面user_query.jsp 用户查询界面user_single.jsp 单个用户信息显示界面user_list.jsp 多个用户信息列表显示界面user_error.jsp 各种出错提示界面事务层:account.java 账户信息管理类数据层:account.dat 账户信息表3、4、5、6、7、8、注意,除了类图中的类以外,系统类的提炼也非常关键。如有必要提取系统的数据库连接类,负责完成所有的数据库连接,该类没有界面层,没有数据层,只有事务层dbConnector.java。3 系统
12、行为模型3.1 交互模型交互是指共同完成特定任务的一组对象之间交换消息的行为,用于刻划系统的控制流,存在于对象协作或操作实现过程中。交互模型包括顺序图和协作图,顺序图强调时间顺序,协作图强调对象间的合作关系,顺序图与协作图可相互转换,无信息损失。顺序图和合作图的选择原则如下:(1)如果对象数目不多,交互情况不复杂,应选择顺序图;(2)如果系统关系对象交互行为的时间特性,应选择顺序图;(3)如果对象数目很多,且交互情况较复杂,可能使用协作图,但其中的某些“场景片断”可以使用顺序图来专门描述其时间特性。交互模型的建模步骤:(1)列出用例相关的所有对象(类) ;(2)根据活动及类间关系确定对象间的消
13、息通讯;(3)定义对象间的消息连接和消息格式;(4)确定消息发生的时间顺序;(5)确定消息编号(针对协作图) ;(6)画出交互模型。本例中,登录、选课、退选是系统中较重要且较复杂的流程,因此需要用交互图进行控制流说明。这里以登录为例,顺序图如图 3.1,其他顺序图略。U s e rl o g i n . j s pl o g i n . j a v a a c c o u n t . d a t输入账号密码s u b m i t ( )i s U s e r ( )r e t u r n ( b o o l e a n )t e a c h e r . j s pi f i n v a l i
14、 d , r e t u r n f a i l u r e . j s pi f v a l i d , g r a d e ( )r e t u r n ( s t r i n g )a d m i n . j s pi f s t r i n g = = a d m i n r e t u r n a d m i n . j s pi f s t r i n g = = t e a c h e r r e t u r n t e a c h e r . j s ps t u d e n t . j s pi f s t r i n g = = s t u d e n t r e t u
15、r n s t u d e n t . j s pf a i l u r e . j s p图 3 . 1 用户登录顺序图3.2 状态模型状态模型用于描述单个对象在生命期内响应事件所经历的状态及转移行为,是由状态及活动、转换及事件脚本组成的状态机。一个状态机可表示成一个状态图,体现从状态到状态的控制流。并不需要为系统的每个对象建立状态图,在大多数情况下,仅对这样的对象的建立状态图:它具有清晰的生命期,对其语境外部的事件能做出反应,且它的当前行为受它的过去行为的影响,这样的对象一般为被动型对象。等待确认状态选课退选可执行未登记成绩状态确认 登记成绩登记成绩状态确认执行完毕图 3 . 2 选课信息的状态变化图这里以选课信息对象为例说明状态图的使用场合,其他对象的状态略。