实验八 团队作业5:团队项目需求建模与系统设计(2)
项目 | 内容 |
---|---|
课程班级博客链接 | 18计师 |
这个作业要求链接 | 作业要求 |
团队名称 | 缔造 |
团队成员分工描述 | 周英杰:PM 赵永军:系统开发 唐敬博:测试 赵艳强:文档撰写 |
团队的课程学习目标 | 1、学会使用UML建模工具Visio; 2、掌握面向对象需求分析建模技术; 3、理解和掌握面向对象软件系统设计原理、设计过程和技术。 |
这个作业在哪些方面帮助团队实现学习目标 | 1、学会使用UML建模工具; 2、采用了面向对象分析方法对用户需求进行分析和建模、面向对象设计方法撰写了软件系统设计说明书,帮助我们更好地理解了面向对象方法。 |
团队博客链接 | 团队博客 |
团队项目Github仓库地址链接 | 仓库链接 |
一、实验目的与要求
(1)学习使用UML建模工具Visio;
(2)掌握面向对象需求分析建模技术;
(3)理解和掌握面向对象软件系统设计原理、设计过程和技术。
二、实验内容与步骤
任务1:按团队项目互评名单,对互评方《实验七 项目需求分析建模与系统设计(1)》的项目成果进行评价,具体要求如下:
(1)阅读互评团队项目博文作业并进行评论,评论要点包括:博文结构、博文内容、任务分工与时间耗费。将以上评论内容发布到互评团队博客评论区。
(2)下载并阅读互评方团队项目资料。
项目 | 内容 |
---|---|
结对方团队博客链接 | 结对方团队博客 |
结对方Github项目仓库链接 | 结对方Github项目仓库 |
符合(1)要求的博客评论 | |
结合实验七评分标准,给出互评团队作业评分成绩 | 130(140) |
任务2:使用Visio,应用面向对象分析方法(OOA),完善团队项目的《软件需求规格说明书》,并将该文档上传到团队项目Github仓库,文档内容要求如下:
(1)采用用例图表示项目功能需求,模型使用规范一致的图形符号和文字描述内容;
(2)参考《构建之法—现代软件工程》8.5节功能的定位和优先级,给出功能分析的四个象限;
(3)选择适当的UML模型,建立问题域对象模型;
(4)完善项目的WBS,估计各项任务所需时间
-
采用用例图表示项目功能需求,模型使用规范一致的图形符号和文字描述内容
- 用例图(User Case)是被称为参与者的来外部用户所能观察到的系统功能的模型图,呈现了一些参与者和一些用例,源以及它们之间的关系,主要用于对系统、子系统或类的功能行为进行建模。
- 将每个系统中的用户分出工作状态的属性和工作内容,方便建模,防止功能重复和多余的类。
- 用例图定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现。
-
注册用户用例图
-
系统管理员用例图
-
系统总体用例图
-
参考《构建之法—现代软件工程》8.5节功能的定位和优先级,给出功能分析的四个象限
- 第一象限(杀手功能,必要需求):订单信息
- 第二象限(外围功能,必要需求):钱包信息
- 第三象限(外围功能,辅助需求):用户信息
- 第四象限(杀手功能,辅助需求):系统设置
-
选择适当的UML模型,建立问题域对象模型
- 类图一般在详细设计过程中出现,主要用来描述系统中各个模块中类之间的关系,包括类或者类与接口的继承关系,类之间的依赖、聚合等关系。
- 它还描述每一个类的详细信息,包括变量,和方法。
- 通过类图,就能实际的把系统中的各个类,即对象描述清楚,下一步就是按照这个详细的设计编码了。
- 本系统主要设计了三个大的关键类:admin,user,goods,即管理员类,用户类,停车收费类。基于这三个父类的基础上,继承更行,查询,修改等子类。设计的类图如图所示:
-
完善项目的WBS,估计各项任务所需时间
-
WBS即工作分解结构,是以可交付成果为导向对项目要素进行的分组,它归纳和定义了项目的整个工作范围每下降一层代表对项目工作的更详细定义。WBS是项目管理重要的专业术语之一,无论在项目管理实践中,还是在PMP,IPMP考试中,工作分解结构(WBS)都是最重要的内容之一。WBS总是处于计划过程的中心,也是制定进度计划、资源需求、成本预算、风险管理计划和采购计划等的重要基础;同时也是控制项目变更的重要基础。创建WBS是把项目可交付成果和项目工作分解成较小的,更易于管理的组成部分的过程。项目范围是由WBS定义的,所以WBS也是一个项目的综合工具。
-
WBS图
-
各项任务所需时间图
-
团队项目仓库上传文档后的截图
-
任务3:查阅资料,回答以下问题:
(1)什么是C/S结构?
(2)什么是B/S结构?
(3)什么是MVC设计模式?
(1)什么是C/S结构?
- 概述:
C/S(Client/Server)结构,即客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的两层结构。
- 结构模型:
(2)什么是B/S结构?
- 概述:
B/S(Brower/Server,浏览器/服务器)模式又称B/S结构,是Web兴起后的一种网络结构模式。Web浏览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用;客户机上只需要安装一个浏览器,服务器上安装SQL Server, Oracle, MySql等数据库;浏览器通过Web Server同数据库进行数据交互。
- 结构模型:
(3)什么是MVC设计模式?
- 概述:
MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。MVC模式的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。除此之外,此模式通过对复杂度的简化,使程序结构更加直观。软件系统通过对自身基本部分分离的同时也赋予了各个基本部分应有的功能。
- 运行机制:
任务4:以任务2的成果为基础,使用Visio,应用面向对象设计(OOD)方法,撰写团队项目软件系统设计说明书,以回答:软件是如何实现用户需求的?文档内容要求如下:
(1)采用适合的软件设计模式设计软件系统总体结构;
(2)设计软件系统数据库逻辑结构;
(3)说明软件重用方案;
(4)设计关键类的重点服务。
-
软件系统总体结构
- 本停车收费系统系统采用SSM(Spring MVC+Spring+Mybatis)框架开发,是标准的MVC模式,将整个系统划分为View层,Controller层,Service层,DAO层四层。其中,Spring MVC负责请求的转发和视图管理,Spring实现业务对象管理,Mybatis作为数据对象的持久化引擎。
- 系统按照功能主要分为注册用户、管理员两个模块。注册用户除了基本的停车缴费和个人中心功能外,还有用户注册、用户登录和个人信息设置功能。管理员具有对用户信息、订单信息的管理功能和系统基本设置功能。
- 系统总体结构可分为系统前台和系统后台两个功能模块。
- 前台功能实现以下功能,用户注册、用户登录、个人中心、用户支付等。
- 系统后台功能实现以下功能,停车管理、系统管理、收费管理、停车场管理、查询统计等。
- 系统总体功能结构
- 操作流程
- 本停车收费系统系统采用SSM(Spring MVC+Spring+Mybatis)框架开发,是标准的MVC模式,将整个系统划分为View层,Controller层,Service层,DAO层四层。其中,Spring MVC负责请求的转发和视图管理,Spring实现业务对象管理,Mybatis作为数据对象的持久化引擎。
-
软件系统数据库逻辑结构
-
数据库逻辑设计主要是把数据库概念设计时设计好的基本E-R图转换为与选用DBMS产品所支持的数据模型相符合的逻辑结构。它包括数据项、记录及记录间的联系、安全性和一致性约束等等。导出的逻辑结构是否与概念模式一致,从功能和性能上是否满足用户的要求,要进行模式评价。
-
本系统数据库名称为db_secondhandmarket,数据库中包括:
(1)用户表(user)
(2)管理员表(admin)
(3)订单表(focus) -
用户表数据结构
-
字段名称 | 数据类型 | 主键 | 是否空 | 说明 |
---|---|---|---|---|
id | int(11) | Y | N | 用户ID |
phone | char(11) | N | Y | 手机号 |
username | varchar(30) | N | Y | 手机号 |
password | char(32) | N | Y | 密码 |
varchar(12) | N | Y | QQ号码 | |
create_at | varchar(20) | N | Y | 创建时间 |
goods_num | int(11) | N | N | 发布过的物品数量 |
power | int(10) | N | N | 信用分,普通用户默认为100 |
last_login | varchar(20) | N | Y | 最近一次登陆时间 |
status | tinyint(4) | N | N | 账号是否冻结,默认0未冻结 |
- 管理员表数据结构
字段名称 | 数据类型 | 主键 | 是否空 | 说明 |
---|---|---|---|---|
id | int(11) | Y | N | 管理员ID |
username | varchar(25) | N | Y | 账号 |
password | varchar(25) | N | N | 密码 |
phone | bigint(25) | N | N | 手机号 |
userRole | varchar(25) | N | Y | 角色 |
- 订单表数据结构
字段名称 | 数据类型 | 主键 | 是否空 | 说明 |
---|---|---|---|---|
id | int(11) | Y | N | 管理员ID |
user_id | int(11) | N | Y | 用户ID外键 |
-
软件重用方案
- 从广义的角度来说,本系统在以下三个层次进行了重用,知识的重用,方法和标准的重用以及软件成分的重用。
- 知识的重用是如软件工程等相关知识的重用,应用相同的知识设计规划、建设不同的软件产品。方法和标准的重用是比如本产品是利用面向对象方法设计又或者是采用国家标准局制定的软件开发文档规范。
- 软件成分的重用进一步我们划分为三个级别,即代码重用,设计结果重用和分析结果重用。而本软件产品的重用主要在源代码级,这与我们的开发工具有很大的关系,我们选用的开发工具是eclipse和IDE,采用spring MVC框架。利用该框架可以快速开发出一个程序的框架,是一个灵活性较强的框架。
- 我们的重用设计是建立在MVC框架之上。我们分析可能重用部分的实例有两种方式,一种是继承类库中的构件要用到的基本功能的类。主要是一些界面元素,如菜单活框、列表框,这些构件在很多模块中都要用到,且处理逻辑大致相同,并进行扩充其处理逻辑,如增加输入合法性检测等,这样我们在使用这些经过扩充的构件时不必每个都去重复那些处理逻辑,大大提高了效率,而且,这些构件都是经过测试或其他人使用过的,质量也有保证。
- 另一种方式是我们的构件在类库找不到相似的类,我们将从头创建自己的类,但为了将自己创建的类,如用户权限处理排序打印预览等,也纳入MVC的框架,我们自己创建的类都继承框架的一个抽象类,这样做的好处是把自己创建的类纳入Controller类的层次化管理,且这也是为实现虚拟函数和动态联编方便。我们也为每个件的功能和接口建立了文档,供应用开发中使用。这样我们就在MVC的框架下,建立了我们自己的一个重用构件库。最后是在应用中重用构件库中的构件。当用户需求变化时,我们能用构件库快速重构我们的应用。
- 使用重用明显会将开发效率提高一个层次,它不仅提高了开发效率,还保证了应用的风格和质量。特别是对我们这种新手较多的团队开发,采用重用的方法,让有经验的成员负责整个应用的框架,让新手使用重用来创建应用,这非常有利于提高效率,在保证质量的同时也为新手提供一个循序渐进的学习机会,有利于新手的成长。当然使用重用容易,但自己建立重用构件库也是需要代价的,是一个需时间积累的过程,也有一定风险。我们在重用中也遇到了一些问题,一个比较突出的问题是我们的重用主要是在源代码级,因此我们的开发必须在MVC的框架下。
- 我们的重用主要是在源代码级,通过类的继承来实现。其实可重用的范围是很大的,如设计的重用,测试用列的重用,可运行的代码的重用等。我们想将来扩大重用的粒度,在框架基础上,进一步根据我们单位的软硬件环境定制出一个适用于我们系统的框架,如加进注册功能,数据库连接的功能等。这样,我们可直接重用这个框架,这可以极大地提高软件的开发和维护的效率。最后,我们还设想,将来应有专门的人员管理重用,把重用的维护和应用开发分开,责任明确这样可以更进一步地做好重用工作。
-
设计关键类的重点服务
系统主要设计了三个大的关键类:admin,user,goods,即管理员类,用户类,停车收费类。基于这三个父类的基础上,继承更行,查询,修改等子类。
-
团队项目仓库上传文档后的截图
任务5:完成《实验八 团队作业5:团队项目需求建模与系统设计(2)》团队博文作业
各项任务实际花费的时间和分工
- 任务花费时间如下:
任务 | 预计花费时间(h) | 实际花费时间(h) |
---|---|---|
任务1 | 0.5 | 0.5 |
任务2 | 14 | 17 |
任务3 | 1.5 | 1.5 |
任务4 | 16 | 15 |
任务5 | 1 | 1 |
- 成员任务分工如下:
任务 | 任务分工 |
---|---|
任务1 | 全体成员 |
任务2 | 周英杰:完成功能分析的四个象限; 赵永军:选择适当的UML模型,建立问题域对象模型 唐敬博:完善项目的WBS,估计各项任务所需时间; 赵艳强:采用用例图表示项目功能需求。 |
任务3 | 全体成员 |
任务4 | 周英杰:设计模式设计软件系统总体结构; 赵永军:设计软件系统数据库逻辑结构; 唐敬博:说明软件重用方案; 赵艳强:设计关键类的重点服务。 |
任务5 | 全体成员 |
结合实验七、实验八的学习体验,对比陈述结构化软件分析与设计、面向对象分析与设计两类软件开发技术的异同。
从团队分工和协作学习角度,陈述团队实施Visio建模工具学习、项目需求分析建模、软件系统设计等学习活动的心得
- Visio建模工具学习
一、 界面功能设置
1、 在功能区双击,弹出功能添加和删除操作界面:对各功能区删除添加功能,进行拖动即可删除和添加。
2、 点击视图功能按钮,可以添加形状和主题窗口,设置工作界面等。
3、 点击格式按钮,可以设置文本、主题、图片等功能。其中,图层是指形状类别。
4、 按住Ctrl键+鼠标左键点击形状,可以实现形状的复制。
5、 按ESC按键,可取消Visio中形状的选择。
6、 在格式按钮中,选择文本-文本块,可以更改文字的方向(横向和竖向);在工具栏中有更改文字方向的快捷按钮(在对齐方式旁边)。
二、 形状之间添加连接线
1、 快捷键:Ctrl+1:切换到鼠标;Ctrl+2:选择文本工具;Ctrl+3:切换到连接线;Ctrl+8:选择矩形工具;ESC:关闭智能标记菜单或消息;Ctrl+B:启用或取消加粗;Ctrl+Shift+P:选择格式刷; F2:重命名。
2、 取消直线交叉的跨线标志:选中线条,左键或者菜单中的格式-行为-连接线-跨线-添加-从不,即可。
3、 Ctrl+=:表示将图形中的文字变为下标;Ctrl+Shift+=:表示将图形中的文字变为上标。
三、 Visio图形粘贴到word中虚线变成实线问题
选中需要修改的虚线线条,单击右键快捷菜单“格式-线条”,将粗细适当加粗,确定保存即可。如果还出现上述症状,说明线条还不够粗,还需要在适当加粗。
四、 Visio中默认封闭整体图形才能填充颜色。
五、 调整形状的角度:可以通过选择想要旋转的基本图形,右击选择视图->大小和位置窗口,然后在该窗口中调整角度,角度方向是逆时针为正。另外,还可以通过镜像对称翻折进行图形组合或复制。
六、 Word中编辑visio,编辑完成后,在空白处点击,即可退出Visio,转到word。
七、 Visio中形状的展示:点击文件-形状,选择自己需要的形状,即可在窗口左侧显示。
八、 自制模具方法,可以把自己常用的流程图进行保存:1)用visio制作好图形,2)打开“文件”-〉“形状”-〉“新建模具”,3)在新增加的左边栏模具处,拖进自绘图形,4)将块名和图形名改为自己的名字,5)保存。
九、 Visio画大括号:点击“文件(File)”—“形状(Shapes)”--“其他Visio方案(Visio Extras)”—“标注(Callouts)”,然后左边的选项中多了“标注”栏,在“标注”栏中有“侧边大括号”(默认是右侧,旋转180之后就是左侧)。
十、 按下Ctrl+Enter会在上面插入一个空行,Ctrl+Shift+Enter则会在下面插入一个空行。光标会移至新行的开始处。
- 项目需求分析建模
由于之前情况,每个人对于分析建模的擅长领域不同,因此对于任务进行合理地划分,由赵艳强负责用例图、周英杰负责四象限图的绘制,赵永军负责UML设计,唐敬博负责WBS设计,最后赵永军、周英杰共同撰写软件需求规格说明书。通过本次需求分析建模过程,我们针对负责部分的不理解之处共同商讨并及时解决问题,对用户需求有了进一步的认识,也对系统功能有了进一步的明确,虽然可能在过程中存在一些不足,但是我们团队相信通过这次讨论学习,我们在未来的学习中能够做得更好。
- 软件系统设计
软件系统设计层面,由周英杰负责软件系统总体结构,赵永军负责系统数据库逻辑结构设计,唐敬博负责软件重用方案,赵艳强负责设计类的关键类的重点服务,最后由赵永军进行汇总。由于之前学习情况的不同,在此部分实现各成员进度不一致在该部分花费时间较多。不过还是相互合作,及时沟通,存在问题也能高效率解决,这使团队成员之间更加团结,且为之后的相关分工设计等工作积累了经验。