实验八 团队作业5—团队项目需求建模与系统设计(2)
项目 | 内容 |
---|---|
课程班级博客链接 | 2022年春软件工程课程班(2019级计算机科学与技术) |
团队名称 | Typhoon-Team |
团队成员分工描述 | 1. 张圆圆:博客撰写,编制完善团队项目WBS,介绍C/S结构,B/S结构,MVC设计模式;设计关键类的重点服务,文档完善修改 2. 孙得弘:MUL模型设计,软件的重用方案,软件的总体结构,软件系统数据库逻辑设计 3. 姜婷:背包论坛编译系统设计说明书1.1、系统需求规格说明书1.2、系统用例图的设计,博客撰写 |
作业要求链接 | 实验八 团队作业5—团队项目需求建模与系统设计 |
团队的课程学习目标 | (1)学习使用UML建模工具Visio (2)掌握面向对象需求分析建模技术 (3)理解和掌握面向对象软件系统设计原理、设计过程和技术 |
这个作业在哪些方面帮助团队实现学习目标 | 1. 学会熟练使用Visio工具 2.使用Visio工具,对面向对象分析方法(OOA),面向对象设计(OOD)方法有了深入的了解学习。 3.通过资料查询,了解并知道了C/S结构,B/S结构,MVC设计模式。 4. 通过软件需求规格说明书,软件设计说明的修改完善,对软件开发设计有了更近一步的学习。 |
团队博客链接 | Typhoon-Team |
团队项目Github仓库地址链接 | Prototype-development |
任务一:使用Visio,应用面向对象分析方法(OOA),完善团队项目的《软件需求规格说明书》
1.团队成员下载使用Visio
(点击图片可放大查看奥)
图1.1-1 张圆圆的Visio安装界面截图
图1.1-2 姜婷的Visio安装界面截图
图1.1-3 孙得弘的Visio安装界面截图
2.设计用例图表示项目功能需求
在背包问题知识社区系统APP中,所涉及到的使用者主要有三类:普通用户,普通管理员,超级管理员,下面将分别从三个使用者角度来介绍项目功能需求。
- 管理员用例图
图1.2-1 管理员用例图
- 用户用例图
图1.2-2 用户用例图
- 游客用例图
图1.2-3 背包问题知识社区系统用例图
- 背包问题知识社区系统用例图
图1.2-4 背包问题知识社区系统用例图
象限 | 功能 | 具体介绍 |
---|---|---|
第一象限 | 必要功能、杀手功能 | 习题练习,论坛撰写,题库设计 |
第二象限 | 必要功能、外围功能 | 博文推送,热榜推送,文件上传 |
第三象限 | 辅助功能、外围功能 | 博主关注,博客收藏,聊天消息 |
第四象限 | 辅助功能、杀手功能 | 热点背包问题推送 |
功能分析的四个象限的图像如下图1.3-1所示:
图1.3-1 功能分析的四个象限
4.选择适当的UML模型,建立问题域对象模型
UML建模技术是一种建模语言,指用模型元素来组建整个系统的模型,模型元素包括系统中的类、类和类之间的关联、类的实例相互配合实现系统的动态行为等,其是面向对象开发中一种通用的图形化建模语言,它定义良好、易于表达、功能强大且普遍适用。面向对象的分析主要在加强对问题空间和系统任务的理解、改进各方交流、与需求保持一致和支持软件重用等4个方面表现出比其他系统分析方法更好的能力,成为主流的系统分析方法。UML的出现既统一了Booch、OMT、OOSE,以及其他方法,又统一了面向对象方法中使用的符号,成为现代软件工程环境中对象分析和设计的重要工具,被视为面向对象技术的重要成果之一。
在UML系统开发中有三个主要的模型:
- 功能模型:从用户的角度展示系统的功能,包括用例图。
- 对象模型:采用对象、属性、操作、关联等概念展示系统的结构和基础,包括类图、对象图、包图。
- 动态模型:展现系统的内部行为。 包括序列图、活动图、状态图
在此次实验中,UML模型采用对象模型类图,具体如下图所示:
图1.4-1 UML模型
5.完善项目的WBS,估计各项任务所需时间
- 编制完善团队项目的WBS
图1.5-1 团队项目的WBS
- 估计各项任务所需时间
任务 | 估计所需时间(min) | 任务 | 估计所需时间(min) |
---|---|---|---|
注册 | 155 | ||
- 个人信息填写 | 95 | - 获取验证码 | 60 |
登录 | 210 | ||
- 手机号登录 | 65 | -邮箱登录 | 70 |
-忘记密码 | 75 | ||
主页界面 | 500 | ||
- 用户推荐 | 140 | - 热点榜单 | 160 |
- 浏览文章 | 200 | ||
论坛交流 | 330 | ||
-用户评论及回复 | 100 | -论坛话题分享 | 70 |
-论坛话题文章收藏 | 65 | -用户创建论坛话题及发起提问 | 95 |
发布文章 | 310 | ||
-编辑文章 | 70 | -插入图片,视频资源 | 80 |
-保存草稿 | 60 | -删除草稿 | 50 |
-审核员审核发布内容 | 50 | ||
编程习题练习 | 540 | ||
-编程题库 | 200 | -代码编辑 | 120 |
-程序运行 | 130 | -结果查看及分享 | 90 |
资源上传 | 390 | ||
-资源文件选择 | 110 | -资源预览 | 200 |
-确认上传 | 80 | ||
个人中心 | 280 | ||
-修改及查看个人信息 | 50 | -收藏夹查看及修改 | 80 |
-学习记录汇总 | 70 | -个人学习资源管理 | 80 |
数据审核 | 440 | ||
-审核用户个人信息数据 | 110 | -审核用户上传学习资料 | 140 |
-审核违规用户 | 100 | -审核用户发布信息内容 | 90 |
6.完善系统需求规格说明书
- 系统需求规格说明书
- 上传系统需求规格说明书至GitHub截图
图1.6-1 上传系统需求规格说明书至GitHub截图
任务二:介绍C/S结构,B/S结构,MVC模式
C/S结构
-
简介
C/S结构(Client/Server,Client和Server常常分别处在相距很远的两台计算机上,Client程序的任务是将用户的要求提交给Server程序,再将Server程序返回的结果以特定的形式显示给用户;Server程序的任务是接收客户程序提出的服务请求,进行相应的处理,再将结果返回给客户程序。 -
C/S客户端优点
- C/S功能强大,可以减轻服务器端压力,如果用户的需求特别复杂,用C/S;
- C/S程序可以更加注重流程,可以对权限多层次校验,对系统运行速度可以较少考虑;
- C/S一般建立在专用的网络上,小范围里的网络环境,局域网之间再通过专门服务器提供连接和数据交换服务;
- C/S一般面向相对固定的用户群,对信息安全的控制能力很强;一般高度机密的信息系统采用C/S结构适宜,可以通过B/S发布部分可公开信息。
-
C/S架构的类型
C/S架构的类型 | 具体介绍 |
---|---|
一层架构 | 在此类型C/S架构设置中,用户界面,营销逻辑和数据逻辑存在于同一系统中。但是由于数据差异导致难以管理。例MP3播放器,MS Office都属于单层应用程序 |
两层架构 | 在这种类型中,用户界面存储在客户端机上,数据库存储在服务器上。数据库逻辑和业务逻辑在客户端或服务器上归档,但需要进行维护。在双层体系结构中,客户端和服务器必须直接合并。 |
三层架构 | 在三层架构中,需要使用到额外的中间件,客户端请求需要通过该中间层进入服务器,服务器的响应首先由中间件接收,然后再接收到客户端。三层结构被分成三个部分,即表示层(客户层),应用层(业务层)和数据库层(数据层)。客户端系统管理表示层,应用程序服务器负责应用程序层,服务器系统负责监视数据库层。 |
B/S结构
-
简介
B/S结构(Browser/Server,浏览器/服务器模式),是WEB兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。客户机上只要安装一个浏览器,如Chrome、Safari、Microsoft Edge、Netscape Navigator或Internet Explorer,服务器安装SQL Server、Oracle、MYSQL等数据库。浏览器通过Web Server 同数据库进行数据交互 -
B/S的优点
- 该架构不需要安装客户端,可以直接运行在Web浏览器中
- B/S架构可以直接放在Internet网络上,从而达到通过某些特权来控制多客户端访问的目的以及交互方式。
- B/S架构由于不需要安装客户端,因此不存在更新多个客户端以及升级服务器等问题
-
B/S的缺点
- 在跨浏览器中,B/S架构不是令人最满意的架构
- 想要达到CS程序的程度还需要付出很多努力才可以
- 在速度和安全性方面,仍然需要花费巨大的设计成本,这是B/S架构中最大的问题。
- 客户端服务器交互是请求响应模式,通常需要刷新页面,这是不愿意看到客户的。但是这个缺点在Ajax受欢迎之后该问题得到了一定程度的缓解
B/S结构和C/S结构的区别
不同之处 | C/S 结构 | B/S结构 |
---|---|---|
建立基础不同 | C/S是建立在局域网的基础上的 | B/S是建立在广域网的基础上的 |
硬件环境不同 | C/S 一般建立在专用的网络上,小范围里的网络环境,局域网之间再通过专门服务器提供连接和数据交换服务。 | B/S 建立在广域网之上的,不必有专门的网络硬件环境,有比C/S更强的适应范围, 一般只要有操作系统和浏览器就行。 |
对安全要求不同 | C/S 一般面向相对固定的用户群,对信息安全的控制能力很强。一般高度机密的信息系统采用C/S 结构适宜,可以通过B/S发布部分可公开信息。 | B/S 建立在广域网之上, 对安全的控制能力相对弱, 面向是不可知的用户群。 |
软件重用不同 | C/S 程序不可避免的考虑整体性, 构件的重用性不如在B/S要求下的构件的重用性好。 | B/S对的多重结构,要求构件相对独立的功能, 能够相对较好的重用。 |
系统维护不同 | C/S 程序由于整体性, 必须整体考察, 处理出现的问题以及系统升级。 升级难, 可能是再做一个全新的系统 | B/S 构件组成,方面构件个别的更换,实现系统的无缝升级。 系统维护开销减到最小;用户从网上自己下载安装就可以实现升级。 |
系统性能不同 | C/S结构客户端承担着一部分的逻辑处理业务,系统性能较高。 | B/S结构主要逻辑处理在服务器,会给服务器带来压力,性能不高。 |
用户接口不同 | C/S 多是建立的Window平台上,表现方法有限,对程序员普遍要求较高。 | B/S 建立在浏览器上, 通过WEB服务或其他公共可识别描述语言可跨平台,使用更灵活。不仅可应用在Window平台上,还可应用于unix/Linux等平台。 |
MVC模式
- 简介
MVC开始是存在于桌面程序中的,M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据可以分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。 模型-视图-控制器(MVC)是Xerox PARC在二十世纪八十年代为编程语言Smalltalk-80发明的一种软件设计模式,已被广泛使用。后来被推荐为Oracle旗下Sun公司Java EE平台的设计模式,并且受到越来越多的使用ColdFusion和PHP的开发者的欢迎。
MVC模型是模型(model)、视图(view)、控制器(controller)三层架构的设计模式,用于把前端页面的展现与后端业务分离,三者具体介绍如下所示:- 模型:主要包含业务数据和业务逻辑。在模型层,还会涉及到用户发布的服务,在服务中会根据不同的业务需求,更新业务模型中的数据。
- 视图:呈现给用户的部分,是用户和程序交互的接口,用户会根据具体的业务需求,在View视图层输入自己特定的业务数据,并通过界面的事件交互,将对应的输入参数提交给后台控制器进行处理。
- 控制器:用来处理用户输入数据,已经更新业务模型的部分。控制器中接收了用户与界面交互时传递过来的数据,并根据数据业务逻辑来执行服务的调用和更新业务模型的数据和状态。
- MVC优点
- 三个层各施其职,所以如果一旦哪一层的需求发生了变化,就只需要更改相应的层中的代码而不会影响到其它层中的代码。
- 由于按层把系统分开,那么就能更好的实现开发中的分工。
- 分层后更有利于组件的重用。如控制层可独立成一个能用的组件,视图层也可做成通用的操作界面
任务三:使用Visio,应用面向对象设计(OOD)方法,撰写团队项目软件系统设计说明书
1.采用适合的模式设计软件系统总体结构
在设计软件系统总体结构中,选择采用MVC设计模式,具体如下图3.1-1所示:
图3.1-1 软件系统总体结构
2.设计软件系统数据库逻辑结构
完善后的软件系统数据库逻辑结构如图3.2-1所示:
图3.2-1 软件系统数据库逻辑结构
3.说明软件重用方案
- 项目计划:软件项目计划的基本结构和许多内容是可以跨项目重用的。这样减少了用于计划的时间,也降低了与建立进度表和进行风险分析等活动关联的不确定性。
- 需求模型和规格说明:类和对象的模型及规格说明是可以重用的,如数据流图等也是可以重用的。
- 设计:用传统方法开发的体系结构,数据,接口和过程设计结果是可以重用的。
- 源代码:用兼容的程序设计语言书写的,经过验证的程序构件是可以重用的。
- 用户界面:GUI软件可以占到一个程序60%的代码量,所以重用效果非常显著。
- 数据:内部表,列表和记录结构,以及文件和完整的数据库都是重用的目标。
4.设计关键类的重点服务
- User类
主要可分为普通用户及管理员,主要包含了账户的主要信息(账号ID,账号,账号密码,用户名称等)。 - 控制器类
控制器类主要负责前端和后端逻辑之间的连接及数据的处理,包括数据的传送,修改,保存,增加,删除等。 - 文件数据类
文件数据类主要负责实现系统中资源上传中所涉及到的问题,用户对学习资源的上传,删除,管理等,管理员对学习资源的审核等操作。 - 题库数据类
题库数据类主要负责实现在用户利用背包问题知识社区系统学习并编写相关背包代码时的代码上传,代码运行,运行结果检测等操作,便于用户更好地学习与背包问题相关的知识点。
5.完善软件系统设计说明书
- 软件系统设计说明书
- 上传软件系统设计说明书至GitHub截图
图3.5-1 上传软件系统设计说明书至GitHub截图
任务四:完成《实验八 团队作业5:团队项目需求建模与系统设计(2)》团队博文作业
完成博文作业
图4.1-1 完成《实验八 团队作业5:团队项目需求建模与系统设计(2)》团队博文作业
记录完成《实验八 团队作业5:团队项目需求建模与系统设计(2)》各项任务实际花费的时间
任务内容 | 计划共完成的时间(min) | 实际完成时间(min) |
---|---|---|
任务一 | 420 | 432 |
以团队协作学习方式掌握工具Visio操作方法 | 50 | 60 |
设计用例图表示项目功能需求 | 70 | 70 |
完成功能分析的四个象限 | 60 | 62 |
完成UML模型建立 | 60 | 65 |
完善项目的WBS,估计各项任务所需时间 | 50 | 55 |
完善团队项目系统需求规格说明书 | 130 | 120 |
任务二 | 130 | 140 |
查询资料介绍C/S结构,B/S结构,MVC设计模式 | 130 | 140 |
任务三 | 240 | 278 |
设计软件系统总体结构 | 60 | 65 |
设计软件系统数据库逻辑结构 | 70 | 78 |
完成软件重用方案 | 60 | 70 |
设计关键类的重点服务 | 50 | 65 |
任务四 | 365 | 390 |
团队博客编写 | 280 | 290 |
对比结构化软件分析与设计、面向对象分析与设计的异同 | 50 | 60 |
本次作业反思及总结 | 35 | 40 |
结合实验七、实验八的学习体验,对比陈述结构化软件分析与设计、面向对象分析与设计两类软件开发技术的异同
-
结构化软件分析与设计基本思想
结构化分析与设计是一种面向数据流的传统软件开发方法,它以数据流为中心构建软件的分析模型和设计模型,由结构化分析、结构化设计和结构化程序设计组成。结构化分析方法(Structured Method)是强调开发方法的结构合理性以及所开发软件的结构合理性的软件开发方法。结构是指系统内各个组成要素之间的相互联系、相互作用的框架。结构化开发方法提出了一组提高软件结构合理性的准则,如分解与抽象、模块独立性、信息隐蔽等。针对软件生存周期各个不同的阶段,它有结构化分析(SA)、结构化设计(SD)和结构化程序设计(SP)等方法。结构化分析方法给出一组帮助系统分析人员产生功能规约的原理与技术。它一般利用图形表达用户需求,使用的手段主要有数据流图、数据字典、结构化语言、判定表以及判定树等。 -
面向对象分析与设计基本思想
面向对象是面向对象的程序设计的核心,它由描述状态的属性(变量)和用来实现对象行为的方法(函数)组成,完成了从数据模型到处理模型的结合与统一。面向对象方法论的出发点和基本原则是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程;也就是使描述问题的问题空间(也称为问题域)与实现解法的解空间(也称为求解域)在结构上尽可能一致。这样就解决了系统在分析过程中获得的分析模型与设计过程中所获得的设计模型进行转换时,由于理解上的差异而造成的系统不稳定性。面向对象方法论中产生的设计模型是分析模型的进一步完善和细化,使得模型之间的转换成为一种平滑的过渡。 -
两者异同之处
不同之处 | 相同之处 |
---|---|
结构化方法是把一个复杂问题的求解过程分阶段进行,而且这种分解是自顶向下,逐层分解,使得每个阶段处理的问题都控制在人们容易理解和处理的范围内。面向对象方法是面向对象编程以对象为中心, 是对一系列相关对象的操纵, 发送消息给对象, 由对象执行相应的操作并返回结果, 强调的是对象。 理论上, 面向对象的程序设计方法将产生更好的模块内聚和耦合特性, 使得软件更易于重用与维护 | 两种方法都可以解决软件工程上的问题,同时可以将问题分解并一步步的求解的思想是基本一致的 |
本次作业的感受和体会
团队成员 | 本次作业的感受和体会 |
---|---|
张圆圆 | 在此次团队作业中,通过团队协作的方式完成了此次实验的任务,在团队实施Visio建模工具学习方面:团队成员下载并安装了Visio Pro,通过团队之间协作学习,基本掌握了该建模工具的使用方法,通过此次实验过程中使用Visio绘图,对其操作方法更加熟悉;在项目需求分析建模方面,通过学习及对OOA方法的应用,对面向对象设计有了更深入的学习理解,通过对需求规格说明书的完善及编写,对软件项目开发技术有了更深入的学习及了解;在软件系统设计方面,通过学习及应用OOD方法,在已完成的项目需求分析建模的基础上,对软件项目系统功能进行设计,通过团队成员的共同努力,完成了软件项目中的总体功能设计,对OOD方法也有更深入的理解。 |
姜婷 | 在本次实验中,在Visio建模工具学习方面收获不少,;在项目需求分析建模方面利用对用例图、类图对系统做出详细设计;在软件系统设计方面,一步步细化各个部分完善项目设计。 |
孙得弘 | 在本次实验中,在团队实施Visio建模工具学习方面学习了Visio建模工具,对常用的建模方法有了一定的了解,;在项目需求分析建模方面通过对OOA方法的运用,我们对面向对象这一理念有了更深刻的理解,在通过各项图表进行更完善的需求规格分析的过程中,对项目的编写规划、功能性意义有了进一步的规划和认识。;在软件系统设计方面运用OOD方法,在项目需求分析建模的基础上,对软件系统进行设计,解决用户需求。 |