软件工程.docx
《软件工程.docx》由会员分享,可在线阅读,更多相关《软件工程.docx(41页珍藏版)》请在冰豆网上搜索。
![软件工程.docx](https://file1.bdocx.com/fileroot1/2023-2/3/60444115-8d8c-4096-a329-da61025feb04/60444115-8d8c-4096-a329-da61025feb041.gif)
软件工程
2详细设计
一、实验目的
了解人机界面设计;掌握使用过程设计工具描述模块的详细数据结构和算法;掌握详细设计说明书的撰写。
二、实验原理
1)软件详细设计的基本要点
详细设计阶段的关键任务是确定怎样具体地实现用户需要的软件系统,也就是要设计出程序的“蓝图”。
除了保证软件的可靠性之外,使将来编写出的程序可读性好、易于理解、易于测试、易于修改和维护,是详细设计阶段最重要的目标。
结构化程序设计技术是实现上述目标的基本保证,是进行详细设计的逻辑基础。
人机界面设计是接口设计的一个重要组成部分。
对于交互式系统来说,人机界面设计和数据设计、结构设计及过程设计一样重要。
人机界面的质量直接影响用户对软件产品的接受程度,因此对人机界面设计必须给予足够重视。
在设计人机界面的过程中,必须充分重视并认真处理好系统响应时间、用户帮助设施、出错信息处理和命令交互等4个设计问题。
人机界面设计是一个迭代过程,通常,先创建设计模型,接下来用原型实现这个设计模型并由用户试用和评估原型,然后根据用户意见修改原型,直到用户满意为止。
总结人们在设计人机界面过程中积累的经验,得出了一些关于用户界面设计的指南,认真遵守这些指南有助于设计出友好、高效的人机界面。
过程设计应该在数据设计、体系结构设计和接口设计完成之后进行,它的任务是设计解题的详细步骤(即算法),它是详细设计阶段应完成的主要工作。
过程设计的工具可分为图形、表格和语言3类,这3类工具各有所长,读者应根据需要选用适当的工具。
2)人机界面设计
人机界面的设计质量,直接影响用户对软件产品的评价,从而影响软件产品的竞争力和寿命,因此,必须对人机界面设计给予足够的重视。
由于对人机界面的评价,在很大程度上由人的主观因素决定,因此,使用基于原型的系统化的设计策略,是成功地设计人机界面的关键。
用户界面设计是一个迭代的过程,也就是说,通常先创建设计模型,再用原型实现这个设计模型,并由用户试用和评估,然后根据用户意见进行修改,直到用户满意为止。
3)过程设计
过程设计应该在数据设计、结构设计和接口设计完成之后进行,它是详细设计阶段应该完成的主要任务。
过程设计的任务还不是具体地编写程序,而是要设计出程序的“蓝图”,以后程序员将根据这个蓝图写出实际的程序代码。
因此,过程设计的结果基本上决定了最终的程序代码的质量。
考虑程序的代码质量时必须注意,程序的“读者”有两个,那就是计算机和人。
在软件的生命周期中,设计测试方案、诊断程序错误、修改和改进程序等都必须首先读懂程序。
实际上对于长期使用的软件系统而言,人读程序的时间可能比写程序的时间还要长得多。
因此,衡量程序的质量不仅要看它的逻辑是否正确,性能是否满足要求,更主要的是要看它是否容易阅读和理解。
过程设计的目标不仅仅是逻辑上正确地实现每个模块的功能,更重要的是设计出的处理过程应该尽可能简明易懂。
结构程序设计技术是实现上述目标的关键技术,因此是过程设计的逻辑基础。
4)过程设计工具
描述程序处理过程的工具被称为过程设计工具,它们可以分为图形、表格和语言三类。
不论是哪类工具,对它们的基本要求都是要提供对设计的无歧义的描述,也就是应该指明控制流程、处理功能、数据组织及其他方面的实现细节,从而在编码阶段能把对设计的描述直接翻译成程序代码。
此外,这类工具应该尽可能直观、易学、易懂。
(1)程序流程图
程序流程图又称为程序框图,它是历史最悠久、使用最广泛的描述过程设计的方法,然而它也是用得最混乱的一种方法。
(2)盒图(N-S图)
出于要有一种不允许违背结构程序设计精神的图形工具的考虑,Nassi和Shneiderman提出了盒图,又称为N-S图。
盒图没有箭头,因此不允许随意转移控制。
坚持使用盒图作为详细设计的工具,可以使程序员逐步养成用结构化的方式思考问题和解决问题的习惯。
(3)PAD图
PAD是问题分析图(ProblemAnalysisDiagram)的英文缩写,它用二维树形结构的图来表示程序的控制流,将这种图翻译成程序代码比较容易。
(4)判定表
当算法中包含多重嵌套的条件选择时,用程序流程图、盒图、PAD图或后面即将介绍的过程设计语言(PDL)都不易清楚地描述,然而判定表却能够清晰地表示复杂的条件组合与应做的动作之间的对应关系。
一张判定表由4部分组成,左上部列出所有条件,左下部是所有可能做的动作,右上部是表示各种条件组合的一个矩阵,右下部是和每种条件组合相对应的动作。
判定表右半部的每一列实质上是一条规则,规定了与特定的条件组合相对应的动作。
(5)判定树
判定表虽然能清晰地表示复杂的条件组合与应做的动作之间的对应关系,但其含义却不是一眼就能看出来的,初次接触这种工具的人理解它需要有一个简短的学习过程。
判定树是判定表的变种,也能清晰地表示复杂的条件组合与应做的动作之间的对应关系。
判定树的优点在于:
它的形式简单到不需任何说明,一眼就可以看出其含义,因此易于掌握和使用。
多年来判定树一直受到人们的重视,是一种比较常用的系统分析和设计的工具。
(6)过程设计语言
过程设计语言(PDL)也称为伪码,这是一个笼统的名称,现在有许多种不同的过程设计语言在使用。
它是用正文形式表示数据和处理过程的设计工具。
PDL具有严格的关键字外部语法,用于定义控制结构和数据结构;另一方面,PDL表示实际操作和条件的内部语法通常又是灵活自由的,可以适应各种工程项目的需要。
因此,一般说来,PDL是一种“混杂”语言,它使用一种语言的词汇,同时却使用另一种语言(某种结构化的程序设计语言)的语法。
三、实验环境
安装了MicrosoftWord和MicrosoftVisio2007软件的计算机。
四、实验任务与实验要求
①使用过程设计工具描述概要设计中各个模块的详细数据结构和算法;
②撰写详细设计说明书。
五、实验内容与步骤
1.数据库物理结构设计
数据库的物理结构设计是指为给定的一个逻辑数据模型选择最适合应用环境的物理结构。
关系数据库的物理结构主要是指数据的存取方法和存储结构。
数据库的物理结构设计分为两个部分,首先是确定数据库的物理结构,其次是对所设计的物理结构进行评估。
1)确定数据库的物理结构
为确定数据库的物理结构,设计人员必须了解下面的几个问题。
①详细了解给定的DBMS的功能和特点,特别是该DBMS所提供的物理环境和功能;
②熟悉应用环境,了解所设计的应用系统中各部分的重要程度、处理频率、对响应时间的要求,并把它们作为物理结构设计过程中平衡时间和空间效率时的依据;
③了解外存设备的特性,如分块原则、块因子大小的规定、设备的I/O特性等。
在对上述问题进行了全面的了解之后,就可以进行物理结构的设计了。
一般地,物理结构设计的内容包括如下几个方面。
①确定数据的存储结构。
在此过程中需考虑存取时间、空间效率和维护代价间的平衡,如在引入冗余数据以加快存取速度时应兼顾系统的空间效率。
②选择合适的存取路径,例如确定应该为哪些关系模式建立索引,索引关键字是什么等。
③确定数据的存放位置,例如确定数据存放在一个磁盘上还是多个磁盘上,什么数据该存放在高速存储器上,什么应该存放在低速存储器上等。
④确定存取分布,许多DBMS都提供了一些存储分配参数供设计者使用,例如缓冲区的大小和个数、块的长度、块因子的大小等,设计者必须规定其中的一些参数的位置。
2)评估物理结构
由于在物理设计过程中需要考虑的因素很多,包括时间和空间效率、维护代价和用户的要求等,对这些因素进行权衡后,可能会产生多种物理设计方案。
这一阶段需对各种可能的设计方案进行评价,评价的重点是系统的时间和空间效率,并从多个方案中选出较优的物理结构。
关于数据库物理结构设计的具体描述,参见本书实验八数据库设计。
2.模块过程设计与界面设计
1)验证用户身份功能模块
(1)功能描述
验证用户身份功能模块用于对登录系统的用户进行身份验证,确定用户是否拥有使用该系统的资格。
因此,任何用户登录系统都调用此模块,登录简易、方便。
(2)模块IPO表
验证用户身份功能模块的IPO表如表7-1所示。
表7-1IPO表
系统名称
人事档案管理系统
蒺块名称
验证用户身份
模块编号
作者
×××
日期
2007.10.1
模块简述
用于对登录系统的用户进行身份验证
调用模块
参见图8-10
被调用模块
输入
项目
用户ID,密码
格式
用户ID:
6位数的字符串
密码:
O~12位的字符串
处理
验证用户输入的用户ID和密码;
获得登录用户输入的用户ID和密码;
访问数据库的用户账户表;
查询匹配的用户名和密码,若未查询到或不匹配,返回结果到登录窗口,提示错误;相反登录成功
输出
提示信息:
有效用户或无效用户
局部数据元素
约束条件
登录失败3次,退出本系统
注释
涉及的表:
用户账户表
(3)界面设计
验证用户身份的系统登录界面设计如图7-1所示。
图7-1系统用户登录界面
(4)主要算法
①【确定】按钮触发的处理:
验证用户的合法性。
处理流程:
·取得用户输入的用户名和口令;
·加密用户名和口令,传输到数据库并与账户表进行一致性验证;
if用户名and口令正确
以该用户身份进入系统总控界面并获得相应系统权限
else
提示“用户名或口令错误”
累计错误三次,系统自动关闭
endif
②【取消】按钮触发的处理。
关闭用户登录窗口。
2)系统总控制模块
(1)功能描述
系统总控制模块是系统运行时的主控程序,通过系统的主菜单集中各子功能模块,用户在该模块中通过选择菜单进入到相应的子模块。
(2)菜单设计
系统菜单设计如表7-2所示。
表7-2系统菜单
一级菜单
系统账户管理
人事档案管理
系统数据管理
帮助
二、三级菜单
修改更新权限
接收数据
收集数据
备份数据
系统帮助
查询用户
审核数据
恢复数据
关于系统
重新登录
维护数据
修改数据
查询数据
利用数据
汇总数据
统计数据
分析数据
(3)界面设计
系统总控制模块的界面设计如图7-2所示。
图7-2系统总控制界面
(4)主要算法
每个菜单项调用相应模块,如【重新登录】调用图7-1的登录界面。
其他菜单项类似。
3)修改更新授权功能模块
(1)功能描述
修改更新授权功能模块是对整个系统的用户进行权限分配的模块,通过调用该模块,具有修改更新授权权限的用户能够修改及更新系统所有用户对系统的操作权限。
系统第一次运行时只有超级用户具有用户权限分配的权限。
(2)调用方式
用户通过表7-2所示系统菜单可以调用修改更新授权功能模块。
具体操作是在表7-2系统菜单中通过【系统账户管理】|【修改更新权限】打开修改更新授权界面。
(3)界面设计
修改更新授权界面如图7-3所示。
图7-3修改更新授权界面
(4)主要算法
①【增加】按钮触发的处理:
新增系统用户,产生新的系统用户修改更新授权界面,供用户填写。
②【删除】按钮触发的处理:
删除当前的系统用户。
③【保存】按钮触发的处理。
用于保存新增或修改系统用户数据。
处理流程:
·从窗口取得各字段值。
·存入数据库账户表。
If数据正确提交
显示“数据成功保存”
else
显示“数据保存失败”
endif
④【上条】按钮触发的处理:
显示当前记录的上一条记录。
⑤【下条】按钮触发的处理:
显示当前记录的下一条记录。
⑥【首条】按钮触发的处理:
显示第一条记录。
⑦【末条】按钮触发的处理:
显示最后一条记录。
⑧【退出】按钮触发的处理:
关闭修改更新授权窗口。
4)查询用户功能模块
(1)功能描述
查询用户功能模块是供系统使用人员对使用系统人员进行检索与查询并且进行修改的模块。
通过调用该模块,能够按照不同的条件组合进行用户的查询,并可以对查询到的用户信息进行修改。
(2)调用方式
用户通过表7-2所示系统菜单可以调用查询用户功能模块。
具体操作是在表7-2系统菜单中通过【系统账户管理】|【查询用户】打开查询用户界面。
(3)界面设计
查询用户界面如图7-4所示。
图7-4查询用户界面
(4)主要算法
①【查询】按钮触发的处理:
提供对用户的查询
处理流程:
if查询所有用户复选框被选中
以列表方式显示所有用户记录
else
根据用户输入的条件产生查询表达式
if查询结果不为零
以列表方式显示记录
else
以列表方式显示记录并提示“满足条件的记录为空”
endif
endif
②【取消】按钮触发的处理:
关闭窗口。
5)显示查询用户明细功能模块
(1)功能描述
由于调用查询用户界面查询的结果往往比较多,为便于浏览,采用列表的方式显示。
显示查询用户明细功能模块是用于对查询用户功能模块运行的结果进行显示的模块。
通过调用该模块,能够完成对查询结果的显示。
通过单击图7-4查询用户界面的【查询】按钮进行该模块的调用,显示如图7-5所示的用户查询的结果列表界面。
(2)界面设计
人事档案管理系统的系统用户查询的结果使用如图7-5所示的形式显示。
图7-5用户查询的结果列表界面
(3)菜单设计
图7-5所示的用户查询的结果列表界面的菜单如表7-3所示。
表7-3用户查询的结果列表窗口的菜单
文件
编辑
格式
帮助
打开
增加
移动表行线
系统帮助
保存
删除
移动表列线
关于系统
打印
修改
关闭
(4)主要算法
①【打开】按钮触发的处理:
打开用户账户表并将数据列示成图7-5所示的形式。
②【保存】按钮触发的处理:
保存列表数据的更新变化(如增加、删除和修改)。
③【打印】按钮触发的处理:
对列表进行打印。
④【关闭】按钮触发的处理:
对列表进行关闭。
处理流程:
if数据发生变化并且没有保存
提示用户选择是否保存
else
关闭表窗口
endif
⑤【增加】按钮触发的处理:
用于增加记录。
⑥【删除】按钮触发的处理:
用于删除记录。
⑦【修改】按钮触发的处理:
用于修改记录。
⑧【移动表行线】按钮触发的处理:
用于移动列表的行线。
⑨【移动表列线】按钮触发的处理:
用于移动列表的列线。
6)查询用户明细结果的编辑功能模块
(1)功能描述
查询用户明细结果的编辑功能模块是对列示的用户明细进行编辑的模块。
通过调用该模块,能够对查询到的用户信息进行修改。
(2)调用方式
用户通过表7-3所示的用户查询的结果列表窗口的菜单可以调用查询用户明细结果的编辑功能模块。
具体操作是在表7-3所示的用户查询的结果列表窗口的菜单中通过【编辑】|【增加】或【编辑】|【修改】打开增加和修改列表记录界面。
(3)界面设计
在增加和修改列表记录时,弹出如图7-6所示的界面。
(4)主要算法
①【返回】按钮触发的处理:
将编辑的数据返回列表并刷新列表,关闭此窗口。
②【退出】按钮触发的处理:
关闭此窗口。
请仿照上述方式完成该系统的其他功能模块的设计。
图7-6增加和修改列表记录
3.撰写详细设计说明书
详细设计说明书又可称为程序设计说明书。
编制目的是说明一个软件系统各个层次中的每一个程序(每个模块或子程序)的设计考虑,如果一个软件系统比较简单,层次很少,本文件可以不单独编写,有关内容合并入概要设计说明书。
以下是“人事档案管理系统”的详细设计说明书。
人事档案管理系统详细设计说明书
1引言
详细设计阶段的任务是要设计出程序的“蓝图”,以后程序员将根据这个蓝图写出实际的程序代码。
因此,详细设计的目标是在逻辑上正确地实现每个模块的功能。
1.1编写目的
详细设计说明书编制的目的是:
说明一个软件系统各个层次中的每一个程序(每个模块或子程序)的设计考虑。
本软件详细设计说明书的读者是系统开发人员或合同约定的人员。
1.2背景
(1)本系统的名称是:
人事档案管理系统。
(2)本项目的任务提出者是××企业,开发者是××信息管理学院,用户是××企业人事及相关部门,实现该软件的计算中心是××信息管理学院电子商务技术中心。
1.3定义
数据字典:
关于数据的信息的集合,也即是对数据流图中包含的元素的定义的集合。
VB:
VisualBasic。
更多的术语定义不再一一列出。
1.4参考资料
[1]张海藩.软件工程导论.北京:
清华大学出版社,2005.
[2]石柱.软件工程标准手册.北京:
中国标准出版社,2004.
2程序系统的结构
本系统的软件结构图(引用图7-10,这里略)。
3验证用户模块设计说明
本系统的所有功能模块都必须调用“验证用户”子模块进行身份验证,此模块是所有用户进入系统时都必须调用的模块。
验证用户身份的处理过程由如图7-1所示的系统用户登录界面中的【确定】按钮触发。
(3.1~3.4的内容直接引用本章中“五、实验内容与步骤”一节相关的内容,但序号需要做相应的更改,这里略。
)
3.5接口
本模块是系统的启动模块,它需要用户交互输入用户ID、密码;它调用系统的主控制模块(主窗体模块)。
3.6存储分配
本模块由机器自动分配内存。
3.7注释设计
(1)模块首部的注释:
用户验证程序。
(2)对调用函数的注释:
调用加密函数MD5。
3.8限制条件
当系统第一次使用时,具有统一的用户ID和密码:
超级用户和123456。
在三次验证错误后,系统自动关闭。
3.9测试计划
(1)初次安装系统后,测试初始用户ID和密码能否正确登录到系统;
(2)正确登录后,对用户名和密码进行更改;
(3)采用刚才修改后的用户ID和密码登录,应该能够正确登录。
3.10尚未解决的问题
对用户ID和密码的加密尚未解决。
用类似的方式,继续说明本系统其他各功能模块的设计,这里略。
六、实验注意事项
按照大作业分组进行本项实验,各组成员分配不同的功能模块进行详细设计,然后综合成为整个软件的详细设计。
遵循软件工程方法进行软件详细设计,软件详细设计说明书的格式要认真掌握,并根据软件详细设计的过程撰写。
七、实验成果
软件详细设计说明书。
要求结合各组的大作业选题,或本章“人事档案管理系统”中未完成部分的软件模块,可以参照前述“人事档案管理系统详细设计说明书”撰写。
八、分析与讨论
着重分析和讨论在人机界面设计中如何实现友好、和谐的人机交互,分析和讨论算法的表达方式。
九、实验练习或思考题
根据本组大作业的选题,结合前两个实验的软件需求分析和软件概要设计进行大作业软件的详细设计,最后撰写大作业的软件详细设计说明书。
十、实验总结
总结软件模块的过程设计中有哪些工具,如何选择合适的过程设计工具。
4数据库设计
一、实验目的
学习面向对象数据模型的设计方法;掌握使用RationalRose建立面向对象的数据模型、对象模型及创建物理数据库的方法。
二、实验原理
数据模型设计是软件工程中的重要设计活动,数据结构对程序结构和过程复杂性的影响决定了数据模型设计必将对软件质量产生不可忽视的影响。
设计者要根据面向对象分析与设计,建立UML的静态模型和动态模型,根据其中的类图、用例图等创建应用系统所需的数据模型。
RationalRose不仅支持需求阶段的功能建模和设计阶段的详细设计,而且支持数据库建模,即“数据模型”建模。
利用RationalRose中的DataModeler,可以进行数据库建模,它允许将UML对象模型用作逻辑模型,将数据模型用作物理模型,并协助用户保持两者的同步。
创建数据模型的主要步骤如下:
①创建一个数据库;
②创建一个支持数据库建模的schema,并将该计划部署给数据库;
③创建域包和域;
④创建表;
⑤在表中创建一些详细的要素,如约束、触发器、索引、主键:
⑥添加表之间的关系和外键;
⑦创建视图;
⑧基于数据模型生成对象模型;
⑨生成数据库;
⑩在更新一些元素的过程中保持数据库和数据模型的同步。
三、实验环境
已经安装IBMRationalRose2003软件的计算机。
四、实验任务
根据“人事档案管理系统”的设计需求,建立相应的数据模型;实现数据模型和对象模型的转换;由数据模型生成数据库的相关脚本文件;最后在数据库管理系统中由脚本文件创建物理数据库。
具体建立三张表:
员工表、用户表、部门数据表,如表8-1、表8-2和表8-3所示。
表8-1员工(Employee)表
名称
类型
约束条件
说明
EmployeeID
char(7)
无重复
主键
EmployeeName
char(8)
不允许为空
Birthday
datetime
允许为空
Sex
char
(2)
允许为空
Address
char(30)
允许为空
Department
char(5)
等于DepartmentID
外键
表8-2用户(User)表
名称
类型
约束条件
说明
UserID
char(10)
无重复
主键
Password
Char(10)
不允许为空
Grade
char(20)
不允许为空
表8-3部门数据(Department)表
名称
类型
约束条件
说明
DepamnentID
char(5)
无重复
主键
DepartmentName
char(30)
不允许为空
DepartmentData
int
允许为空
五、实验内容与步骤
(1)创建数据库
①在RationalRose2003主界面的浏览区,选定包“ComponentView”,单击鼠标右键。
②选择DataModeler,单击New,在该菜单的下级菜单中单击Database。
③在浏览区中,右击新建的数据库,选择OpenSpecification,从而打开如图8-1所示的“数据库属性设置”窗口。
其中各项的含义如下。
·Name——数据库名称;
·SQLName——数据库查询语言名称;
·Target——要建立的数据库类型(ANSISQL92,IBMDB2,MicrosoftSQLServer2000,Oracle等)。
图8-1“数据库属性设置”窗口
(2)创建表空间(Tablespace)
①选定浏览区中的数据库,单击鼠标右键。
②选择DataModeler,单击New,在下级菜单中单击Tablespacease,表空间添加成功。
③在浏览区中选定新建的表空间,单击鼠标右键,选择OpenSpecificat