软件工程
1、软件实训管理平台
2、高校教务管理系统
3、万和建陶有限公司商务系统
4、人事管理系统
5、网上书店
6、房产交易系统
7、车辆交易系统
8、网上银行
9、图书管理系统
RoadMap
维护产品提交测试编码详细设计概要设计需求分析软件工程
第 3章 软件项目的概要设计本章要点
一、设计的概述
二、概要设计方法
三、设计模型
四、体系结构
五、概要设计过程
六、案例分析一、设计的概述
1、设计的定义
软件需求讨论“做什么”问题,软件设计解决的是“怎么做”
的问题。软件设计是将需求描述的“做什么”的问题变为一个实施方案的创造性过程,使得整个项目在逻辑上和物理上能够得以实现。
2、设计的分类
概要设计
概要设计是从需求出发,描述了总体上系统架构应该包含的组成要素。概要设计尽可能模块化,因此描述了各个模块之间的关联。
详细设计
详细设计主要是描述实现各个模块的算法和数据结构以及用特定计算机语言实现的初步描述,例如变量、指针、进程、操作符号以及一些实现机制。
一、设计的概述
3、概要设计概论
它注重框架设计、总体结构设计、数据库设计、接口设计、网络环境设计等。概要设计是将产品分割成一些可以独立设计和实现的部分,保证系统的各个部分可以和谐的工作。
概要设计主要是根据需求规格完成软件模块的划分并描述模块之间的关系,设计过程是不断地分解系统模块,从高层分解到底层分解。
一、设计的概述
概要设计的分解过程图3-2:设计的分解过程二、概要设计方法
(一 )传统的设计方法(结构化设计方法)
(二 )面向对象的设计方法二、概要设计方法
(一 )传统的设计方法(结构化设计方法)
功能模块划分设计
面向数据流设计
面向事务设计
输入 /输出设计二、概要设计方法
1、功能模块划分设计
这个设计方法是根据功能进行分解,分解出一些模块,设计者从高层到低层一层一层进行分解,每层都有一定的关联关系,每个模块具有特定、明确的功能,每个模块的功能是相对独立的,同时是可以集成的 。
二、概要设计方法
功能模块划分设计示例网 上 招 聘 系 统客 户 端 子 系 统 管 理 端 子 系 统职位选择简历输入问卷回答登录题库管理问卷管理职位管理简历管理面试管理用户管理二、概要设计方法
2、面向数据流的设计
研究系统的数据流向。
层次结构的数据流图
建立学生管理系统数据流图
学管科
体检科
学籍科
学生处二、概要设计方法
顶层数据流图学管科体检科学籍科学生管理信息系统学生处领导学生基本信息学生健康信息学生成绩学生健康情况表学生成绩单查询要求不及格人数人数统计表二、概要设计方法二、概要设计方法二、概要设计方法
3、面向事务的设计
这个设计方法是根据系统处理的事务和这个事务导致系统发生状态变换使用的信息。首先确定主要的状态分类,然后逐层详细描述各个状态的转化过程
事务引起系统状态变化
状态图二、概要设计方法
4、输入 /输出设计
基于用户输入进行设计。系统的最上层描述出系统所有可能的输入,下层描述系统对输入进行什么样的处理过程。
IPO图
示例:
文件更新的 IPO图旧 的 主 文 件事 务 文 件
1,校 验 主记 录
2,校 验 事务 记 录
3,更 新 主记 录有 效 的 主 记录有 效 的 事 务记 录更 新 后 的 主文 件输 入 处 理 输 出二、概要设计方法
(二 ) 面向对象的设计方法
1、定义
面向对象的设计就是将面向对象分析方法建立的需求分析模型转化为构造软件的设计模型。
和传统的设计方法不同,OOD产生的设计达到一系列不同的模块性级别。主要的系统构件被组织为称为子系统的系统级“模块”,数据和操纵数据的操作被封装为对象 --一种模块形式,
它们是 OO系统的构造“积木块” 。此外,OOD必须描述属性的特定数据组织和个体操作的过程细节,以及描述允许数据在层间、子系统间和对象间流动的通信机制。
面向对象的设计的主要特点是 4个软件设计概念:抽象性、信息隐藏性、功能独立性和模块化。
二、概要设计方法
面向对象的设计分为两个主要活动
系统设计
系统设计创建产品的体系结构,定义一系列完成特定系统功能的“层次”并表示由驻留在各层的子系统封装的类。
此外,系统设计考虑三个构件的规约:用户界面、数据管理功能和任务管理设施。
对象设计
对象设计关注于个体类的内部细节,定义属性、操作和消息的细节。
二、概要设计方法
2,OO设计模型
软件体系结构、用户界面描述、数据管理构件、任务管理设施以及将被用于系统中的每个类的详细描述。
3、在进行面向对象分析和设计的时候,可以总结出如下的步骤:
1)识别对象;
2)确定属性;
3)定义操作;
4)确定对象之间的通信;
5)完成对象定义。
二、概要设计方法
1)识别对象
识别对象首先要对系统进行描述,然后对描述进行语法分析,找出名词或者名词性短语,根据这些名词或者名词短语确定对象。
对象可以是 外部实体 (external entities)、物
(things)、发生 (occurrences)或者事件 (events)、
角色 (roles)、组织单位 (organizational units)、
场所 (places)、结构 (structures)等二、概要设计方法
例 1:确定家庭安全系统的对象
家庭安全系统可以让业主在系统安装时为系统设置参数,可以监控与系统连接的全部传感器,可以通过控制板上的键盘和功能键与业主交互。
在安装时,控制板用来为系统设置程序和参数,每个传感器被赋予一个编号和类型;设置一个主口令使系统处于警报状态或者警报解除状态,输入一个或者多个电话号码,当发生一个传感器事件时就拨号。
当一个传感器事件被软件检测到时,连在系统上的一个警铃鸣响,
在一段延迟时间后(由业主在参数设置阶段设置),软件拨一个监控服务的电话号码,提供位置信息,报告侦察到的事件的状况。
电话号码每 20秒重拨一次,直到电话接通为止。
所有与家庭安全系统的交互作用都是由一个用户交互作用子系统完成,它读取由键盘及功能键提供的输入,在 LCD显示屏上显示业主住处和系统状态信息。
二、概要设计方法
潜在的对象:
房主
传感器
控制板
安装
安全系统
编号
类型
主口令
电话号码
传感器事件
警铃
监控服务二、概要设计方法
潜在的对象需要满足一定的条件才可以成为正式对象,
我们根据 6个特征来考察潜在的对象是否可以作为正式对象:
包含的信息,该对象的信息对于系统运行时必不可少的;
需要的服务,对象必须具有一组能以某种方式改变其属性值的操作;
多重属性,一个只有一个属性的对象可以将其表示为另外一个对象的属性;
公共属性,可以为对象定义域组公共属性,这些属性适用于对象出现的所有场合;
公共操作,可以为对象定义一组公共操作,这些操作适用于对象出现的所有场合;
基本需求,出现在问题空间里的外部实体,生成或者消耗对系统操作很关键的信息的,这些外部实体几乎总是被定义为对象。
二、概要设计方法
对象:
房主
传感器
传感器事件
安全系统
控制板
监控服务
.
在设计过程中可能根据一定的条件和需求增加对象,并且识别出的对象可以使用对象模型表示。
二、概要设计方法
2)确定属性
对象有私有的数据结构和操作过程组成。确定出系统的对象之后,需要找出对象的一组有意义的属性。
属性是对象中持有或存储的基本信息,将其封装为对象的私有数据信息,以属性的形式表示。
二、概要设计方法
3)定义操作
对象的操作可以合法地改变数据结构。或者说一个操作以某种方式改变对象的一个或者多个属性值。
分析需求描述,隔离动词。某些动词是合法的操作,
很容易与某个特定的对象相联系。
二、概要设计方法
4)确定对象之间的通信
对象
对象之间的通信机制成为消息
一个对象执行某个操作,就要像它发送一个消息,
告诉对象做什么。收到者(对象)相应消息的过程是:首先选择符合消息名的操作并执行,然后将控制返回给使用者。
二、概要设计方法
5)完成对象定义
定义对象的生存期。对象的操作还要考虑到对象必须被创建、修改、处理、以某种方式读取或者删除。
确定对象的属性、操作以及对象之间的通信后,可以建立对象图。
二、概要设计方法
例 2:加油服务站系统的概要设计
需求描述见课本 P67
要求先对系统进行用例分析
抽取出系统中的类,并建立对象模型二、概要设计方法
解:
1、用例分析租赁停车位燃油费用计算服务费用计算停车费用计算元器件费用计算维修费用计算元器件订购系统订购元器件燃油订购系统订购燃油逾期未付帐客户发警告函处理产品和服务信誉卡事务信誉卡系统账单日结帐单月结发送账单客户信誉跟踪记录税费信息发送维护提醒通知休眠账户结帐工作人员客户查看进货目录浏览税费记录查看停车场经营月报浏览账目信息生成价格和折扣分析报告用户登录修改价格系统指定折扣经理
< < i n c l u d e > >
< < i n c l u d e > >
< < i n c l u d e > >
< < i n c l u d e > >
< < i n c l u d e > >
< < i n c l u d e > >
二、概要设计方法
2、概要设计 --对象模型
对象模型目的是给问题领域建模,但不设计具体的实现。
对象模型的规则:
理解问题领域的所有重要的现实世界的实体都必须包括在内。
理解该问题领域的所有重要的方法和属性都必须包括在内。
不应该包括只对实现有重要意义的对象、属性和方法。
二、概要设计方法
1)识别对象和属性二、概要设计方法
2)建立对象图
将上一步识别出的对象及对象的属性,用 UML中类的符号表示出来。
二、概要设计方法
3)确定类之间及对象之间的关系
对象图一方面是描述对象的结构特征,另一方面是描述对象之间的链接关系。
类之间的关系有 4种:关联关系、继承关系、集合关系、组成关系
关联。对象之间最一般的关系是关联关系。关联使用带箭头的实线表示。
继承。父类 —子类。“子类是一个父类”
集合。(聚合)。,is-part-of”(整体 -部分)
组成。(组合)。部分对象依赖于整体对象
首先,在任一给定时刻,一个“部分”对象只能属于一个组合对象;
其次,当一个组合对象被撤销时,所有依赖于这个组合对象的“部分”对象都将同时被撤销。
P e rs o n C o m p an yW or k s for+ em p l oy e r+ em p l oy e e
二、概要设计方法
练习:某公司由多个部门组成,部门分布在公司办公楼的不同办公室。部门之间存在上下级关系。每个部门有多个工作人员,同时每个部门有一个部门经理执行管理工作。工作人员参加工作时需向公司提交自己的联系信息和薪资信息。工作人员的薪资信息对其他工作人员是保密的。
二、概要设计方法
作业:学校信息系统内的一组类:学校、院系、
学生、课程和教师。请建立类图。
二、概要设计方法
对象模型图二、概要设计方法
例 3,MIS系统的对象模型 —学生注册课程系统
根据用例分析进行类和对象的分析
建立对象模型收费系统选择课程登记成绩注册课程查看成绩单维护课程信息维护学生信息维护教师信息关闭系统教师学生登录注册管理员二、概要设计方法
解:①识别实体类
实体类主要是指系统中那些需要存储的信息,通常是永久存在的。启发分析员发现实体类的因素包括以下几个方面。
人员:通常系统会涉及到各种各样的人员,我们需要考虑的是由系统保存和管理其信息的人员,如教师、学生等。
组织:在系统中发挥一定作用的组织机构,如系、班级等。
物品:需要由系统管理的物品,可以是有形或无形的,如课程等。
设备:在系统中动态地运行、有系统进行监控或供系统使用的各种设备、仪表、机器、运输工具等。
事件:需要有系统长期记忆的事情,如学生注册课程的记录等。
表格:这里的“表格”是广义的,可以是各种业务报表、统计表、申请表、身份证、商品订单、账目、学生成绩单等,
注意不要将原始的表格进行简单对应,应该是分析和整理后形成的映射一些现实事物的表格。
二、概要设计方法
② 识别边界类
边界类代表系统与角色的接口,在每一个用例中,一个角色对应一个边界类。边界类收集来自角色的信息,并将其转换成实体类和控制类可以使用的中间接口。
根据角色的不同类型,边界类可以是用户接口、系统接口和设备接口。对于用户接口来说,边界类集中描述了用户与系统的交互信息,而不是描述用户接口的显示形式,如按钮、菜单等;对于系统接口和设备接口来说,
边界类集中描述所定义的通信或交互协议,而不是说明协议如何实现等。
二、概要设计方法
③ 识别控制类
控制类负责协调边界类和实体类,通常在现实世界中没有对应的事物,它负责接收边界类的信息,并将其分发给实体类。
控制类与用例存在着密切的关系,它在用例开始执行时创建,在用例结束时取消。一般来说,一个用例对应一个控制类。当用例比较复杂时,特别是产生分支事件流的情况下,也可以有多个控制类。在有些情况下,用例的行为十分简单,这时可以没有控制类,学生课程注册系统中的“登录”就是这种情况。
二、概要设计方法
④ 将用例行为分配到对象类
识别上述对象类之后,通过建立交互图,我们将用例的行为分布到这些对象类中。
时序图表示完成某项行为的对象类和这些对象类之间传递消息的时间顺序。
O bj ect 1 O bj ect 2 O bj ect 3
对象消息用例图收费系统选择课程登记成绩注册课程查看成绩单维护课程信息维护学生信息维护教师信息关闭系统教师学生登录注册管理员二、概要设计方法
1、识别实体类
学生注册课程系统实体类实体类 说明
Professor 学校中讲课的教师
Student 学校中注册课程的学生
Schedule 学生在新学期选择登记的课程列表
CourseCatalog 学校所有课程的目录
Course 课程的基本信息
CourseOffering 新学期课程的开设信息,如讲课教师、
时间、地点等信息二、概要设计方法
2、识别边界类
系统边界类边界类 说明
LoginForm 为教师、学生和注册管理员提供登录的操作
RegisterCoursesForm 为学生提供选课注册的操作
ViewReprotForm 为学生提供成绩查询的操作
SelectTeachCoursesForm 为教师提供查看学生选课情况的操作
SubmitGradesForm 为教师提供登记成绩的操作
MaintainProfessorsForm 为注册管理员提供维护教师信息的操作
MaintainStudentsForm 为注册管理员提供维护学生信息的操作
MaintainCoursesForm 为注册管理员提供维护课程信息的操作
CloseRegistrationForm 为注册管理员提供关闭注册的操作
BillingSystemNotice 提供与收费系统的信息交互接口二、概要设计方法
3、识别控制类
系统控制类控制类 说明
RegisterCoursesControl 负责新学期学生的选课登记
ViewReportControl 负责学生成绩的查询
SelectTeachCoursesControl 负责新学期课程的学生选择情况
SubmitGradesControl 负责学生成绩的登记
CloseRegistrationControl 负责关闭课程注册二、概要设计方法
注册课程用例描述:
用例描述
学生通过该用例选择注册本学期要学习的课程。学生注册课程信息通过创建课程登记表提交给系统。
参与者
学生
前提条件
参与者在系统中登录成功,且注册课程系统未关闭。
事件流
该用例在每个学期初,参与者要选择注册本学期所学课程时启动。
1)参与者选择创建课程登记表。
2)系统显示课程开设信息,以及空白的课程登记表。
3) a)参与者浏览课程开设信息,并将课程登记表中的信息填写完毕。之后参与者点击 <提交 >按钮
4)系统将参与者创建的课程登记表中的信息保存在 <学生选课列表 >中。
5)完毕
可选事件流
3) b)参与者也可以选择 <取消 >按钮。此时系统返回主界面。
后置条件
系统将学生选课信息保存与相应存储文件中。
二、概要设计方法
,注册课程”用例的序列图
,
R e g i n s t e r C o u r s e s F o r m
,S tu d e n t
,
R e g i s te r C o u r s e s C o n t r o l
,
C o u r s e C a ta l o g
,
S c h e d u l e
,S tu d e n t
g e t C o u r s e C a t a l o g ( )
g e t C o u r s e C a t a l o g ( )
g e t C o u r s e C a t a l o g ( )
d i s p l a y C o u r s e C a ta l o g ( )
d i s p l a y B l a n k S c h e d u l e ( )
c r e a te S c h e d u l e ( )
c r e a te S c h e d u l e ( )
c r e a te S c h e d u l e ( )
学生要创建一个新的课程登记表显示该学生可选的课程信息显示一个空白的课程登记表供学生选课使用这时提交课程登记表的子流程退出二、概要设计方法
练习:教师选择课程用例的序列图
教师通过该用例选择本学期所教课程,并获取到学生选课名单。