咸鱼翻身 实验八 团队作业5:团队项目需求建模与系统设计
Posted 咸鱼翻身队
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了咸鱼翻身 实验八 团队作业5:团队项目需求建模与系统设计相关的知识,希望对你有一定的参考价值。
项目 | 内容 |
---|---|
课程班级博客链接 | 课程班级博客链接 |
这个作业要求链接 | 这个作业要求链接 |
团队名称 | 咸鱼翻身 |
团队成员分工描述 | 项目整体分工: 姚辉:PM、开发、测试 胡佳媚:文档、测试 曹盼盼:开发、测试 陈鹏昱:开发、测试 本次项目大致分工 任务1:所有成员 任务2:胡佳媚、姚辉 任务3:姚辉 任务4:曹盼盼、陈鹏昱 任务5:姚辉 |
团队的课程学习目标 | (1)学习使用UML建模工具Visio; (2)掌握面向对象需求分析建模技术; (3)理解和掌握面向对象软件系统设计原理、设计过程和技术。 |
这个作业在哪些方面帮助团队实现学习目标 | (1)学习使用visio使得绘制用例图、四象限图、对象模型图更加方便快捷。 (2)通过完善团队项目的《软件需求规格说明书》,对面向对象分析方法(OOA)有更深的理解。 (3)通过查阅资料,对C/S结构、B/S结构、MVC设计模式有了深刻认识。 (4)通过撰写团队项目《软件系统设计说明书》,对面向对象设计方法(OOD)有更好的掌握。 |
团队博客链接 | 团队博客 |
团队项目Github仓库地址链接 | 团队项目GitHub仓库 |
任务1:按团队项目互评名单,对互评方《实验七 项目需求分析建模与系统设计(1)》的项目成果进行评价
结对方团队博客链接 | 结对方Github项目仓库链接 | 互评团队作业评分成绩 |
---|---|---|
结对方团队博客链接 | 结对方Github项目仓库链接 | 132.5分 |
(1)阅读互评团队项目博文作业并进行评论,评论要点包括:博文结构、博文内容、任务分工与时间耗费。将以上评论内容发布到互评团队博客评论区。
(2)下载并阅读互评方团队项目资料。
任务2:使用Visio,应用面向对象分析方法(OOA),完善团队项目的《软件需求规格说明书》
(1)采用用例图表示项目功能需求,模型使用规范一致的图形符号和文字描述内容;
乘客用例图:
民航业工作人员用例图:
系统管理维护人员用例图:
总体用例图:
(2)参考《构建之法—现代软件工程》8.5节功能的定位和优先级,给出功能分析的四个象限;
(3)选择适当的UML模型,建立问题域对象模型;
(4)完善项目的WBS,估计各项任务所需时间;
(5)上传到团队项目Github仓库
任务3:查阅资料,回答以下问题
(1)什么是C/S结构?
C/S是客户端( Client)服务器(Server )模式
C/S结构是一种软件系统体系结构,也是生活中很常见的。这种结构是将需要处理的业务合理地分配到客户端和服务器端,这样可以大大降低通信成本,但是升级维护相对困难。
C/S架构的类型
一层架构
在此类型C/S架构设置中,用户界面,营销逻辑和数据逻辑存在于同一系统中。但是由于数据差异导致难以管理。例MP3播放器,MS Office都属于单层应用程序。
两层架构
在这种类型中,用户界面存储在客户端机上,数据库存储在服务器上。数据库逻辑和业务逻辑在客户端或服务器上归档,但需要进行维护。如果在客户端收集业务逻辑和数据逻辑,则将其命名为胖客户端瘦服务器体系结构。如果在服务器上处理业务逻辑和数据逻辑,则称为瘦客户端胖服务器体系结构。这被认为是负担得起的。
在双层体系结构中,客户端和服务器必须直接合并。如果客户端向服务器提供输入,则不应该有任何中间件。这样做是为了快速获得结果并避免不同客户之间的混淆。例如,在线票务预订软件使用这种双层架构。
三层架构
在三层架构中,需要使用到额外的中间件,这意味着客户端请求需要通过该中间层进入服务器,服务器的响应首先由中间件接收,然后再接收到客户端。中间件存储所有业务逻辑和数据通道逻辑,中间件提高了灵活性并提供了最佳性能。
三层结构被分成三个部分,即表示层(客户层),应用层(业务层)和数据库层(数据层)。客户端系统管理表示层,应用程序服务器负责应用程序层,服务器系统负责监视数据库层。
C/S结构的优点 | C/S结构的缺点 |
---|---|
C/S架构的界面和操作可以很丰富。 | 适用面窄,通常用于局域网中。 |
安全性能可以很容易保证。 | 用户群固定。由于程序需要安装才可使用,因此不适合面向一些不可知的用户。 |
由于只有一层交互,因此响应速度较快。 | 维护成本高,发生一次升级,则所有客户端的程序都需要改变。 |
(2)什么是B/S结构?
B/S是浏览器(Brower )服务器(Server)模式
B/S结构是随着互联网的发展,web出现后兴起的一种网络结构模式。这种模式统一了客户端,让核心的业务处理在服务端完成。你只需要在自己电脑或手机上安装一个浏览器,就可以通过web Server与数据库进行数据交互。
B/S架构有三层,分别为:
第一层表现层:主要完成用户和后台的交互及最终查询结果的输出功能。
第二层逻辑层:主要是利用服务器完成客户端的应用逻辑功能。
第三层数据层:主要是接受客户端请求后独立进行各种运算。
B/S结构的优点 | B/S结构的缺点 |
---|---|
客户端无需安装,有Web浏览器即可。 | 在跨浏览器上,BS架构不尽如人意。 |
BS架构可以直接放在广域网上,通过一定的权限控制实现多客户访问的目的,交互性较强。 | 在速度和安全性上需要花费巨大的设计成本,这是BS架构的最大问题。 |
BS架构无需升级多个客户端,升级服务器即可。可以随时更新版本,而无需用户重新下载啊什么的。 | 客户端服务器端的交互是请求-响应模式,通常需要刷新页面,这并不是客户乐意看到的。(在Ajax风行后此问题得到了一定程度的缓解) |
(3)什么是MVC设计模式?
MVC是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范。
Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。
通常模型对象负责在数据库中存取数据。
View(视图)是应用程序中处理数据显示的部分。
通常视图是依据模型数据创建的。
Controller(控制器)是应用程序中处理用户交互的部分。
通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
MVC的优点 | MVC的缺点 |
---|---|
提高代码重用率。 | 增加了系统结构和实现的复杂性。 |
提高程序的可维护性。 | 视图对模型数据的访问效率低。 |
有利于团队开发分工协作和质量控制,降低开发成本。 | 完全理解MVC并不是很容易。 |
任务4:以任务2的成果为基础,使用Visio,应用面向对象设计(OOD)方法,撰写团队项目软件系统设计说明书
(1) 采用适合的软件设计模式设计软件系统总体结构;
(2) 设计软件系统数据库逻辑结构;
(3) 说明软件重用方案;
软件成分的重用进一步我们划分为三个级别,即代码重用,设计结果重用和分析结果重用。而本软件产品的重用主要在源代码级,这与我们的开发工具有很大的关系,我们选用的开发工具是pycharm,采用spring MVC框架。利用该框架可以快速开发出一个程序的框架,是一个灵活性较强的框架。
我们的重用设计是建立在MVC框架之上。我们分析可能重用部分的实例有两种方式,一种是继承类库中的构件要用到的基本功能的类。主要是一些界面元素,如菜单活框、列表框,这些构件在很多模块中都要用到,且处理逻辑大致相同,并进行扩充其处理逻辑,如增加输入合法性检测等,这样我们在使用这些经过扩充的构件时不必每个都去重复那些处理逻辑,大大提高了效率,而且,这些构件都是经过测试或其他人使用过的,质量也有保证。
另一种方式是我们的构件在类库找不到相似的类,我们将从头创建自己的类,但为了将自己创建的类,如用户权限处理排序打印预览等,也纳入MVC的框架,我们自己创建的类都继承框架的一个抽象类,这样做的好处是把自己创建的类纳入Controller类的层次化管理,且这也是为实现虚拟函数和动态联编方便。我们也为每个件的功能和接口建立了文档,供应用开发中使用。这样我们就在MVC的框架下,建立了我们自己的一个重用构件库。最后是在应用中重用构件库中的构件。当用户需求变化时,我们能用构件库快速重构我们的应用。
使用重用明显会将开发效率提高一个层次,它不仅提高了开发效率,还保证了应用的风格和质量。特别是对我们这种新手较多的团队开发,采用重用的方法,让有经验的成员负责整个应用的框架,让新手使用重用来创建应用,这非常有利于提高效率,在保证质量的同时也为新手提供一个循序渐进的学习机会,有利于新手的成长。当然使用重用容易,但自己建立重用构件库也是需要代价的,是一个需时间积累的过程,也有一定风险。我们在重用中也遇到了一些问题,一个比较突出的问题是我们的重用主要是在源代码级,因此我们的开发必须在MVC的框架下。
我们的重用主要是在源代码级,通过类的继承来实现。其实可重用的范围是很大的,如设计的重用,测试用列的重用,可运行的代码的重用等。我们想将来扩大重用的粒度,在框架基础上,进一步根据我们单位的软硬件环境定制出一个适用于我们系统的框架,如加进注册功能,数据库连接的功能等。这样,我们可直接重用这个框架,这可以极大地提高软件的开发和维护的效率。最后,我们还设想,将来应有专门的人员管理重用,把重用的维护和应用开发分开,责任明确这样可以更进一步地做好重用工作。
(4) 设计关键类的重点服务;
本系统主要设计了三个大的关键类:admin,user,goods,即管理员类,用户类,基于这三个父类的基础上,继承更行,查询,修改等子类。
Admin类主要负责对管理员的属性修改等操作服务,其属性包括用户名,密码,手机号等。
User类主要负责对用户的属性信息操作服务。
Comments类主要负责对用户评论的操作服务。
以上为本系统设计关键类的对应重点服务,遵循软件工程中软件设计的模块化原则,力求尽量达到“高内聚,低耦合”的程度,降低类的复杂度,且使方法属性单一,逻辑关系简单。这样可以提高类的可读性,降低功能模块之间的关联性。
(5)上传到团队项目Github仓库
任务5:完成《实验八 团队作业5:团队项目需求建模与系统设计(2)》团队博文作业
完成团队博文:
PSP:
任务内容 | 计划共完成需要的时间(min) | 实际完成需要的时间(min) |
---|---|---|
计划 | 30 | 35 |
估计这个任务需要多少时间,并规划大致工作步骤 | 30 | 35 |
团队项目需求建模与系统设计 | 940 | 920 |
任务1:按团队项目互评名单,对互评方的项目成果进行评价 | 30 | 30 |
任务2:使用Visio,应用面向对象分析方法(OOA),完善团队项目的《软件需求规格说明书》 | 350 | 350 |
任务3:查阅资料,回答什么是C/S结构?什么是B/S结构?什么是MVC设计模式? | 60 | 60 |
任务4:以任务2的成果为基础,使用Visio,应用面向对象设计(OOD)方法,撰写团队项目软件系统设计说明书 | 320 | 300 |
任务5:完成团队博文 | 180 | 180 |
报告 | 180 | 180 |
书写团队博客 | 180 | 180 |
结合实验七、实验八的学习体验,对比陈述结构化软件分析与设计、面向对象分析与设计两类软件开发技术的异同
-
胡佳媚
结构化设计方法是一种传统的软件开发方法,它主要有结构化分析,结构化设计和结构化程序设计三部分组成。结构化设计方法的主要特点是自顶向下,模块分解,逐步求精。它主要是把一个复杂的问题求解过程分阶段进行,使得人们容易理解。结构化分析方法主要是以流程图,数据流图和数据字典为主要工具建立系统的逻辑模型。而面向对象技术是一种新的方法,主要包括面向对象分析,面向对象设计及面向对象程序设计三部分组成。它的本质是以建立模型体现出来的抽象思维过程和面向对象的方法。模型主要是用来反映现实世界中事物的特征。面向对象程序设计以对象为核心,用户自始至终参与系统的分析工作,它强调的是系统开发的整体性和全局性,侧重于数据转换的过程而不是数据本身。类是对现实世界的抽象。面向对象方法有较好的应用前景。
-
姚辉
结构化方法基本要点是:自顶向下,逐步求精,模块化设计。自顶向下的核心本质是“分解”,它将相对复杂的大问题分解为简单的小问题,对每一个小问题进行精确、定量的描述。结构化分析使用数据流图、加工说明和数据字典等来构造系统的需求分析模型。结构化设计则是在需求分析的基础上,针对给定的问题给出解决方案。
面向对象方法是一种运用对象、类、继承、聚合、关联、消息和封装等概念和原则来构造软件系统的开发方法。面向对象分析强调对象的概念对问题域中事物进行完整描述,刻画事物静态特征和行为特征,同时如实反映问题域中事物各种关系。面向对象分析模型包括用例图、类图等。面向对象设计是把系统所要求解的问题分解为一些对象及对象间传递消息的过程。
从团队分工和协作学习角度,陈述团队实施Visio建模工具学习、项目需求分析建模、软件系统设计等学习活动的心得
-
胡佳媚
从团队分工来看,我们小组本次作业的分工很明确,分工的也很细致到位。将一个大的任务分配给每一个人,共同来完成一个大的设计。每个成员都能够高度负责,各司其职,互帮互助,共同进步。团队的合作非常成功,配合的也很不错,希望在日后能够继续努力。从协作学习上来看,本次项目使得我对Visio这个开发工具有所了解和使用,也对面向对象的分析方法有了深入的了解和应用,并且对结构化分析方法和面向对象分析方法的异同进行了分析。在此次实验中,还进行了用例图以及对象图的设计,这两个图的设计使得我对该项目的需求分析有了更细致的认知,更为日后的软件系统设计提供了方向。与此同时,也对C/S结构,B/S结构以及MVC设计模式有所了解。总而言之,收获颇多。
-
姚辉
本次实验分工明确、团队协作学习氛围较好,每个成员都能够对自己的任务负责,按时完成。通过对Visio建模工具的学习,我认为Visio的模板较多,更为专业,但是使用起来不如ProcessOn方便,我个人还是倾向于使用ProcessOn。在本次实验中我主要参与了任务2、3、5的学习活动,任务2中通过绘制四象限图、UML类图,我掌握了Visio建模工具的使用,对面向对象分析方法有了更深层的理解。任务3中查阅相关资料,并使用ProcessOn绘制结构图、模式图,我对C/S结构、B/S结构、MVC设计模式有了深刻认识。任务5完成本次博客,对本次实验有了一个好的总结。
以上是关于咸鱼翻身 实验八 团队作业5:团队项目需求建模与系统设计的主要内容,如果未能解决你的问题,请参考以下文章
永远的Ace 实验八 团队作业5—团队项目需求建模与系统设计