1、系统开发规范与文档编写 课程辅导,徐惠民,大型作业的目的,通过大型作业的练习,使得学生熟悉软件工程过程和软件生存周期,对于软件需求分析方法和软件设计方法有一个感性的认识,熟悉软件文档的编写。,概述,每个作业都是一个具体的应用系统的分析和设计。作业提出基本的系统需求和功能需求,并完成了相当的一部分的分析和设计工作,提供了相应的结果。提出学生作业可以完成的工作,包括需求分析,软件设计及文档编写。,特点,综合性:作业内容涉及软件生命周期阶段,包括分析、设计、文档各项。引导性:提供分析和设计的部分结果,引导学生继续完成其他的任务。开放性:作业内容可以根据具体情况来决定,例如,也可以主要是阅读已经完成的
2、设计,写出总结。,方法,复习熟悉软件需求分析、软件设计、文档编写的有关内容。阅读大型作业中提供的分析和设计结果,熟悉软件分析和设计的具体过程。先熟悉,再实践,根据实际情况提出具体要求。,基本知识,大型作业二是用面向对象设计方法进行软件分析和设计。目前普遍使用面向对象设计方法是UML方法,作业二就是要用UML方法来设计一个选修课管理系统。必须首先熟悉UML的基本知识。,基本知识,UML是一个通用的、标准的建模语言,最常用于建立软件系统的模型。UML方法溶入了软件工程领域的新思想、新方法和新技术。它的作用域不限于支持面向对象的分析与设计,还支持从需求分析开始的软件开发的全过程。,基本知识,UML中
3、有九种图(diagram)和五种视图(view)。九种图包括:用例图、类图、对象图、状态图、顺序图、协作图、活动图、构件图和部署图。用来观察系统的五种视图有:用例视图、逻辑视图、构件视图、并发视图和部署视图。,基本知识,使用UML的过程,UML给出了面向对象建模的表示和规则,但并没有指定应用UML的过程和方法。尽管如此,要想成功的使用UML,科学的过程还是必要的。,面向对象软件开发框架,需求,分析,设计,实现,测试,用例模型,分析模型,设计模型,实现模型,测试模型,用例驱动开发流程图,分析,设计,实现,测试,用例,需求,用例模型,静态模型,动态模型,实现模型,用例驱动开发流程:用例模型,用例模
4、型用于系统需求的获取,描述系统的功能需求。 用例模型由用例图组成,用例图展示了参与者、用例以及它们之间的关系。 创建用例模型的工作包括:定义系统,寻找参与者和用例,描述用例,定义用例之间的关系。,用例驱动开发流程:用例描述,用例描述用例图只对所构建的系统进行定位和界定范围,提供了对所要完成任务的综合概述。然而,对于参与者和系统的具体交互过程,则没有叙述。用例描述提供了用例模型的实质内容,这些内容是大多数用例建模工作的基础。用例描述一般用活动图来表示。,用例驱动开发流程:静态模型,建立静态模型的过程,实际上是对问题域的一个抽象过程,它把问题域与应用域有关的各种类、对象以及它们之间的相互关系进行适
5、当的抽象和分类,以揭示系统的结构。静态模型有类图、对象图和包图。,用例驱动开发流程:动态模型,动态模型用来描述系统的动态行为,显示对象在系统运行期间不同时刻的动态交互,从而实现一组对象的相应功能。UML中用状态图、顺序图、协作图和活动图来建立动态模型。,用例驱动开发流程:实现模型,系统的实现模型包括构件图和配置图。它们描述了系统实现时的一些特性。如源代码的静态结构和运行时刻的实现结构。构件图显示代码本身的逻辑结构,配置图显示系统运行时的结构。,选修课教学管理系统,系统需求:1. 开设课程管理管理员对所开设的课程进行管理,允许对所开设的课程进行增加,修改,删除等。,选修课教学管理系统功能,2.查
6、询可以按课程名,教师名,学号等多种方式查询课程信息。对于学生的选课信息,学生只能查询本人的。,选修课教学管理系统功能,3.学生选课管理学生根据所查询的课程信息,选择自己所要选修的课程。对于已经选择了,但不希望选修的课程,可以进行退选。每个学生最多选修8个学分。,选修课教学管理系统功能,4.用户信息管理 能够使用系统的每个学生、教师和管理员每人都有一个ID,管理员可以对用户进行增加,删除,修改等操作。,选修课教学管理系统功能,5.学生成绩管理成绩管理包括如下功能:(1)成绩录入管理员录入学生的成绩信息。(2)成绩查询学生可以查看自己所选各科课程的成绩。教师可以查询自己所教课程的学生成绩,并打印报
7、表。,用例模型,确定参与者和用例 :分析可以识别三个参与者:学生,教师和管理员。学生:查询课表,选课,查询考试成绩教师:查询课表,查询课程成绩管理员:管理所开设的课程,管理用户,录入成绩,执行各种查询功能。,用例模型,显然,学生、教师、管理员都是学校里的人员,有一些相同的属性,如ID,姓名,部门等,可以将三者的共性提取出来,形成一个抽象的参与者用户。,用例模型,确定用例,前面已经识别出了参与者,根据系统需求中的描述,可以将系统分为两个顶层用例:选课管理和成绩管理,画出系统的顶层用例图。,确定用例,确定用例,选课管理用例可以分解为:1课程信息查询:提供按学生查询,按任课教师查询,按课程名查询等多
8、种查询方式。2选课:学生对自己所选的课程进行管理,包括增加所选课程,删除所选课程等。,确定用例,3课程信息管理:管理员对学校所开设的课程进行管理,包括增加课程,删除课程,修改课程信息等。4用户管理:为简化处理,假设系统从学生管理系统中获取学生信息,从学校人事管理系统中获取教师信息 。,确定用例,确定用例,成绩管理用例可以分解为以下用例:1 学生成绩查询学生查询自己所选课程的成绩。2 课程成绩查询教师查询自己所教课程的学生成绩。3 成绩管理管理员录入或修改学生成绩。,确定用例,可以根据上述对于成绩管理用例的分解,具体画出成绩管理用例的用例图。,确定用例,除此之外,显然,系统还需要一个登录的用例:
9、,用例描述,1登录用例的描述1.1 简单描述本用例描述了用户如何登录到系统中。1.2 前置条件无1.3 后置条件如果用例成功,则用户登录到系统中。否则,系统状态不变。,用例描述,1.4 事件流1.4.1 基本流(1)当用户开始使用系统时,登录用例启动;(2)系统提示用户输入用户名和密码;(3)用户提交;(4)系统验证输入的用户名和密码,用户登录成功,用例描述,1.4.2 备选流在基本流4中,如果用户输入的名字或密码没有通过验证,系统提示错误信息,用户可以重新输入或中止该用例。,当用户开始使用系统时,登录用例启动,用户提交,系统提示用户输入用户名和密码,系统验证输入的用户名和密码,用户登录成功,
10、名字或密码没有通过验证,系统提示错误信息,用例描述,大型作业教材中还给出了其他用例的用例描述;可以根据这些描述,画出相应的活动图,作为练习。,静态模型,把问题域与应用域有关的各种类、对象以及它们之间的相互关系进行适当的抽象和分类,以揭示系统的结构。,静态模型,定义系统对象:从用例模型中查找系统对象,并进一步抽象为类。 确定每一个类的属性和操作。 识别出系统中的类后,还要识别出类间的关系,建立类图。,静态模型,User(用户) 类可以将学生,教师和管理员的共性部分抽象出来,作为单独的一个类User,这样就简化了其它的三个类,并提高了系统的可维护性和可复用性。,静态模型,属性: ID:惟一标识一个
11、用户的一个字符串 ;Name:用户的名字;Dept:所在部门;Password:口令。方法: Verify:验证用户名和口令是否有效;Add:增加用户;Delete:删除用户;Find:查找用户。,静态模型,Student(学生) Student类封装类学生的信息,Student类的属性定义了按某种方式定位的学生信息,其操作定义了学生可以执行的各种功能。Teacher(教师) Teacher类封装了教师的信息,用于对教师信息进行管理。 Administrator(管理员) 管理员类用于对管理员的进行维护 。,静态模型,除了和参与者有关的类,还要定义一些和课程有关的类:Course(课程)类;C
12、ourseSelect(选课信息)类;可以考虑这些类应该有什么属性和方法。,静态模型,定义用户界面类:显然,在系统运行过程中,用户经常需要和系统进行交互。一个用户友好的系统通常都采用直观的图形可视化界面,因此需要定义系统的用户界面类。通过对系统的不断分析和细化,可识别出下述的界面类。,静态模型,主要是一些窗口或者对话框。通过窗口或者对话框中的按钮、菜单等控件的当作,完成各种选课管理系统需要完成的功能。如由MainWindow QueryCourseScore QueryCourseWnd,动态行为模型,动态模型用来描述系统的动态行为,显示对象在系统运行期间不同时刻的动态交互,从而实现一组对象的
13、相应功能。UML中用状态图、时序图、协作图和活动图来建立动态模型。,动态行为模型,时序图 顺序图显示特定用例(也可以是用例的一部分)的详细流程。并且显示了它们之间的交互,显示对象之间发送消息的顺序,即系统执行的某一特定时间所发生的事件。 顺序图有两个维度:垂直维度以发生的时间顺序显示消息/调用的序列;水平维度显示消息被发送到的对象实例。,动态行为模型,登录时序图 在执行登录时,首先由用户启动系统,窗口LoginWnd被创建,用户在填写完用户名和口令之后提交各系统验证,若正确,向主窗口发送消息,创建主窗口。 应该注意到时序图和用例描述的不同:直接和系统对象发生联系。,动态行为模型,选课时序图 1
14、.当学生在主窗口中执行选择课程功能时,用例启动。2.由主窗口向选课窗口发送创建窗口消息来创建选课窗口。3.选课窗口调用CourseSelect类的FindByStudent操作,获取当前学生的所有选课信息。4.通过ShowCouese操作显示在窗口中。,动态行为模型,5.由学生修改课程后,通过选课窗口的Update操作进行提交。6.选课窗口向CourseSelect类发送SelectCourse消息,进行课程更新。7.最后,由学生在界面上点击关闭,来向选课窗口发送销毁窗口消息,用例结束。,动态行为模型,协作图与顺序图一样,协作图也展示对象间的动态协作关系。它除了说明消息的交互外,还显示对象间的
15、关系。通常可在顺序图或者协作图之间选择一个来表示协作关系。如果强调时间和顺序,则使用顺序图;如果强调多个对象间的协作,则选择协作图,动态行为模型,学生成绩查询的协作图 首先,学生通过主窗口的菜单或工具条,向主窗口发送学生成绩查询请求。主窗口创建学生成绩查询窗口,之后,学生成绩查询窗口调用课程选择对象中的FindByStudent方法,将该学生所选择的课程及每门课程的成绩显示出来。最后,学生通过学生成绩查询窗口的按钮,向该窗口发送关闭消息。,动态行为模型,活动图 活动图展示了连续的活动流,活动图通常用来描述完成一个操作所需要的活动。当然它还能用于描述其他活动流,如描述用例。活动图由动作状态组成,
16、它包含完成一个活动的活动规约(即规格说明)。,实现模型,系统的实现模型包括构件图和配置图。本系统是一个基于校园局域网的系统。 可以通过配置图显示它的物理结构:共有4个结点组成。,作业要求,1参照用例模型中的登录活动图,画出学生选课的活动图(只要求包含两个对象:用户和系统)。,作业要求,选课用例由学生启动。启动之后,系统将弹出选课窗口,在窗口中显示所开设的全部课程,并对所选择的课程作出标记。学生对自己所选的课程进行修改后,提交给系统。系统首先检查学生所选课程的学分是否超标(大于8分),若不超标,则更新系统数据,否则,显示错误信息,回到选课界面修改所选课程。,作业要求,2在系统的静态模型中,为所有
17、的界面类定义了基类Window,画出类Window与别的界面类的关系图。,作业要求,3在系统的静态模型中,Library包中的系统类与GUI包中的界面类也存在着关联关系,例如,LoginWnd类需要User类来进行身份验证。找出与每一个GUI类相关联的系统类,并画出结构图。,作业要求,4参照登录时序图和选课时序图,画出学生成绩查询和课程成绩查询的时序图。,作业要求,5画出登录和选课的协作图和活动图。,作业要求,6若系统需要对学生和教师信息进行管理,包括增加学生,删除学生,修改学生信息,增加教师,删除教师和修改教师信息等功能,建立系统的用例模型(包括用例图,用例描述),静态模型(要求在原来的类图上对类、类属性和操作进行增减,并划出类图),行为模型(包括时序图、协作图和活动图)。,