项目 | 内容 |
---|---|
课程班级博客链接 | 2019级卓越工程师班 |
这个作业要求链接 | 实验八 团队作业5—团队项目需求建模与系统设计(2) |
团队名称 | 待宰的高羊 |
团队成员分工描述 | 何晨泽(PM):用例图、UML、系统总体结构、说明书 高杨:功能分析的四个象限、关键类的重点服务 阿丽米拉:完善WBS、软件重用方案 谢家俊:数据库逻辑结构 |
团队的课程学习目标 | (1)学习使用UML建模工具Visio (2)掌握面向对象需求分析建模技术 (3)理解和掌握面向对象软件系统设计原理、设计过程和技术 |
这个作业在哪些方面帮助团队实现学习目标 | (1)通过团队共同学习,了解并掌握知识点 (2)通过文档的迭代改进,掌握面向对象需求分析建模技术 (3)通过图表的绘制,掌握面向对象设计原理等内容 |
团队博客链接 | 待宰的高羊 |
团队项目Github仓库地址链接 | TeamProject |
任务1:使用Visio,应用面向对象分析方法(OOA),完善团队项目的《软件需求规格说明书》,并将该文档上传到团队项目Github仓库
-
Visio截图:
-
设计用例图表示项目功能需求,模型使用规范一致的图形符号和文字描述内容:
背包问题知识社区系统的主要参与者有用户和管理员,如下图所示。-
用户用例图:
-
管理员用例图:
-
-
参考《构建之法—现代软件工程》8.5节功能的定位和优先级,给出功能分析的四个象限:
功能分析的四个象限如下图所示。
其中:- 第一象限(必要功能、杀手功能):Online Judge(数据集),一站式平台;
- 第二象限(必要功能、外围功能):社区,资源库,文档,资源审核;
- 第三象限(辅助功能、外围功能):界面美化;
- 第四象限(辅助功能、杀手功能):联动现有OJ。
-
选择适当的UML模型,建立问题域对象模型:
UML(Unified Modeling Language),统一建模语言,是一种为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言,是非专利的第三代建模和规约语言。
UML主要由5类图来定义:- 用例图:从用户的角度描述系统功能,并指出各功能;
- 静态图:类图、对象图和包图;
- 行为图:活动图、状态图,描述系统的状态模型;
- 交互图:顺序图、合作图,描述对象间的交互关系;
- 实现图:如配置图,定义系统中软硬件的物理结构体系。
故选用类图,建立问题域对象模型,如下图所示(点击图片以放大)。
-
完善项目的WBS,估计各项任务所需时间:
-
更新后的WBS:(点击图片以放大)
-
优化后的各项任务所需时间:
-
-
系统需求规格说明书:
- 上传至GitHub截图:
- 上传至GitHub截图:
任务2:查阅资料,回答以下问题:
-
(1)什么是C/S结构?
- C/S(Client/Server)结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。
- 目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。传统的C/S体系结构虽然采用的是开放模式,但这只是系统开发一级的开放性,在特定的应用中无论是Client端还是Server端都还需要特定的软件支持。由于没能提供用户真正期望的开放环境,C/S结构的软件需要针对不同的操作系统系统开发不同版本的软件,加之产品的更新换代十分快,已经很难适应百台电脑以上局域网用户同时使用。而且代价高,效率低。
- C/S结构示意图如下图所示。
-
(2)什么是B/S结构?
- B/S(Browser/Server)结构即浏览器和服务器结构。它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层3-tier结构。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)。
- 以目前的技术看,局域网建立B/S结构的网络应用,并通过Internet/Intranet模式下数据库应用,相对易于把握、成本也是较低的。它是一次性到位的开发,能实现不同的人员,从不同的地点,以不同的接入方式(比如LAN, WAN, Internet/Intranet等)访问和操作共同的数据库;它能有效地保护数据平台和管理访问权限,服务器数据库也很安全 。特别是在JAVA这样的跨平台语言出现之后,B/S架构管理软件更是方便、快捷、高效。
- B/S结构示意图如下图所示。
-
(3)什么是MVC设计模式?
- MVC(Model、View、Control),即模型-视图-控制器,是一种非常经典的软件架构模式,在UI框架和UI设计思路中扮演着非常重要的角色。从设计模式的角度来看,MVC模式是一种复合模式,它将多个设计模式在一种解决方案中结合起来,用来解决许多设计问题。MVC模式把用户界面交互分拆到不同的三种角色中,使应用程序被分成三个核心部件:Model(模型)、View(视图)、Control(控制器)。它们各自处理自己的任务:
- 模型:模型持有所有的数据、状态和程序逻辑。模型独立于视图和控制器。
- 视图:用来呈现模型。视图通常直接从模型中取得它需要显示的状态与数据。对于相同的信息可以有多个不同的显示形式或视图。
- 控制器:位于视图和模型中间,负责接受用户的输入,将输入进行解析并反馈给模型,通常一个视图具有一个控制器。
- 这样的拆分使得MVC模式拥有以下的好处:一个模型提供不同的多个视图表现形式,也能够为一个模型创建新的视图而无须重写模型。一旦模型的数据发生变化,模型将通知有关的视图,每个视图相应地刷新自己;模型可复用。因为模型是独立于视图的,所以可以把一个模型独立地移植到新的平台工作;提高开发效率。在开发界面显示部分时,你仅仅需要考虑的是如何布局一个好的用户界面;开发模型时,你仅仅要考虑的是业务逻辑和数据维护,这样能使开发者专注于某一方面的开发,提高开发效率。
- MVC设计模式示意图如下图所示。
- MVC(Model、View、Control),即模型-视图-控制器,是一种非常经典的软件架构模式,在UI框架和UI设计思路中扮演着非常重要的角色。从设计模式的角度来看,MVC模式是一种复合模式,它将多个设计模式在一种解决方案中结合起来,用来解决许多设计问题。MVC模式把用户界面交互分拆到不同的三种角色中,使应用程序被分成三个核心部件:Model(模型)、View(视图)、Control(控制器)。它们各自处理自己的任务:
任务3:以任务1的成果为基础,使用Visio,应用面向对象设计(OOD)方法,撰写团队项目软件系统设计说明书,以回答:软件是如何实现用户需求的?
-
采用适合的模式设计软件系统总体结构:
采用MVC设计模式,设计软件系统总体结构,如下图所示。
-
设计软件系统数据库逻辑结构:
修改E-R图,得出数据库逻辑结构,如下图所示。
-
说明软件重用方案:
软件重用方案主要是在源代码级,通过类的继承、调用来实现。其实可重用的范围是很大的,如设计的重用,测试用列的重用,可运行的代码的重用等。将来会扩大重用的粒度,在框架基础上,进一步根据我们项目本身的软硬件环境定制出一个适用于我们系统的框架,将可以极大地提高软件的开发和维护的效率。- 页面:
页面均在一个基础的框架增加内容,编写时首先调用框架,进行重用。 - 接口:
Spring Boot框架中,所提供接口均可进行重用;对上传、删除等操作将其单独封装,进行重用。 - 控制器:
控制器负责调用各项功能,在进行操作时,均需对其进行重用。
- 页面:
-
设计关键类的重点服务:
- 账户类:
可分为用户及管理员,主要包含了账户的主要信息,并且继承该类的用户类和管理员类分别包含了其相应角色的信息,如权限范围等。 - 控制器类:
该类负责对操作进行转发,对数据进行访问、查询、修改等操作。 - 数据类:
该类负责了系统的主要操作,如文档、资源的上传或删除等,用户的操作通过控制器转发后,由该类进行操作和具体的转发。并且继承该类的资源类、文档类等类负责了其对应模块的实际操作。
- 账户类:
-
软件系统设计说明书:
- 上传至GitHub截图:
- 上传至GitHub截图:
任务4:完成《实验八 团队作业5:团队项目需求建模与系统设计(2)》团队博文作业
- 记录完成各项任务实际花费的时间:
任务内容 | 实际花费的时间(min) | 主要负责人 |
---|---|---|
任务1 | 308 | |
Visio学习 | 56 | 共同学习 |
用例图 | 46 | 何晨泽 |
功能分析的四个象限 | 39 | 高杨 |
UML模型 | 57 | 何晨泽 |
完善WBS | 32 | 阿丽米拉 |
系统需求规格说明书 | 78 | 何晨泽、谢家俊 |
任务2 | 56 | 共同查阅学习 |
任务3 | 225 | |
软件系统总体结构 | 32 | 何晨泽 |
数据库逻辑结构 | 34 | 谢家俊 |
软件重用方案 | 36 | 阿丽米拉 |
关键类的重点服务 | 37 | 高杨 |
软件系统设计说明书 | 86 | 何晨泽 |
任务4 | 138 | 何晨泽、谢家俊 |
-
结合实验七、实验八的学习体验,对比陈述结构化软件分析与设计、面向对象分析与设计两类软件开发技术的异同:
- 结构化分析方法(Structured Method)是面向过程的程序设计的方法,是强调开发方法的结构合理性以及所开发软件的结构合理性的软件开发方法。结构是指系统内各个组成要素之间的相互联系、相互作用的框架。结构化开发方法提出了一组提高软件结构合理性的准则,如分解与抽象、模块独立性、信息隐蔽等。针对软件生存周期各个不同的阶段,它有结构化分析(SA)、结构化设计(SD)和结构化程序设计(SP)等方法。
- 面向对象方法(Object-Oriented Method)是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,简称OO (Object-Oriented)方法,是建立在“对象”概念基础上的方法学。对象是由数据和容许的操作组成的封装体,与客观实体有直接对应关系,一个对象类定义了具有相似性质的一组对象。而每继承性是对具有层次关系的类的属性和操作进行共享的一种方式。所谓面向对象就是基于对象概念,以对象为中心,以类和继承为构造机制,来认识、理解、刻画客观世界和设计、构建相应的软件系统。
异 同 (1)基本单位不同:结构化方法的基本单位是模块;面向对象方法的基本单位是对象
(2)分析方法不同:结构化设计以数据为最关键的实体,着眼于处理数据的整个流程,基于过程地考虑整个数据通过软件时的变化;面向对象方法则从现实中人的角度考虑问题,将软件功能转变为不同模块的动作和模块间的通信(1)两者在分解和抽象原则上一致。分解即化整为零,将问题剥茧抽丝,层层细化;抽象则是通过分解体现,在逐层分解上,上层是下层的抽象,下层是上层的解释和体现,运用抽象可以不用一次考虑太多细节,而逐渐的有计划的有层次的了解更多的细节。
(2)局部化和重用性设计上一致。在结构化方法中,局部化主要体现在代码与数据的分隔化,即程序各部分除必要的信息交流外彼此相互隔离而不互相影响;而面向对象方法则采用数据、代码的封装,即将数据、代码和操作方法封装成一个“黑暗的”整体对象。 -
完成本次作业的感受和体会
- Visio建模工具学习:我们下载并安装了2021版的Visio Pro,并结合官方文档及各类教程基本掌握了该建模工具的使用方法,由于Visio属于Office套件的一部分,所以上手使用较为轻松。同时我们将Visio与ProcessOn等作图工具进行了比较,相比ProcessOn,Visio更加专业,其绘制出的各种图表更加完善,但同时Visio的客户端仅限Windows操作系统,在轻量化方面有所欠缺。
- 项目需求分析建模:通过对OOA方法的运用,我们对面向对象这一理念有了更深刻的理解,在通过各项图表进行更完善的需求规格分析的过程中,对项目的编写规划、功能性意义有了进一步的规划和认识。
- 软件系统设计:我们运用OOD方法,在项目需求分析建模的基础上,对软件系统进行设计,解决用户需求。在此期间,我们不断修正设计,集思广益,最终给出了一个基本能够满足用户需求的总体设计,这也是一次对面向对象方法的实践。
- 小结:本次实验耗时较长,也对各种文档图表的编撰也历经多个版本,是对老师上课所讲述的OOA和OOD方法进行了一次较为完整的使用。团队成员通力合作,相互帮助,团队凝聚力得到了进一步的提高,我们将继续努力,争取做出更好的成果。