返回顶部

实验八 团队作业5:团队项目需求建模与系统设计(2)

项目 内容
课程班级博客链接 课程班级
这个作业要求链接 作业要求
团队的课程学习目标 (1)学习使用UML建模工具Visio;(2)掌握面向对象需求分析建模技术;(3)理解和掌握面向对象软件系统设计原理、设计过程和技术。
团队博客链接 软件工程四人小团队
团队项目Github仓库地址链接 仓库链接
团队成员分工描述 刘温元,闫雨馨负责采用OOA技术编制《软件需求规格说明书》 刘转弟,李瑞婷负责采用应用面向对象设计(OOD)方法,撰写团队项目软件系统设计说明书

任务1:使用Visio,应用面向对象分析方法(OOA),完善团队项目的《软件需求规格说明书》,并将该文档上传到团队项目Github仓库

1.设计用例图表示项目功能需求,模型使用规范一致的图形符号和文字描述内容

  • 用户用例图:
  • 管理员用例图:

2.参考《构建之法—现代软件工程》8.5节功能的定位和优先级,给出功能分析的四个象限:

软件工程用此进行功能分析,不过坐标轴代表的意义有所改变。

  • 两种功能类型的划分:
    • 杀手功能(core)/外围功能(context)
      • 杀手功能:为了吸引用户,我们的产品就需要有自己的亮点,安迪·葛洛夫的10X原则这个亮点要比竞争对手做得好得高出一个数量级,这种功能叫做杀手功能。
      • 外围功能:而其他的那些普通产品都具备的功能,虽然也很重要但是都是外围的,叫做外围功能。
    • 必要需求(Mission Critical)/辅助功能(Enabling)
      • 必要需求:用户提出的明确要完成的需求,没有这些需求,用户不能接受这个产品。
      • 辅助需求:辅助性的功能,比如可以有多种主题界面
  • 不同象限的应对方法有五种应对方法:
    • 维持:以最低成本维持此功能。
    • 抵消:快速地达到“足够好”、“和竞争对手差不多”。
    • 优化:花大力气做到并保持行业最好。
    • 差异化:产生同类产品比不了的功能或优势(我有人无的优势,或者一个数量级以上的优势)。
    • 不做:砍掉一个功能也是一个办法,我们并不一定要做所有的功能
  • 针对每一象限
    • 第一象限:建议采取“差异化”的办法,全力以赴投资在这个领域。
    • 第二象限:建议采取“抵消”的办法,快速地达到“和别人差不多”,对于大家都特别看重的功能,采取“优化”的办法,达到行业最佳。
    • 第三象限:建议采取“维持”的办法,以最低代价维持此功能。
    • 第四象限:建议采取“维持”的办法,或者现在“不做”,等待好的时机,或者小规模实验。
  • 功能分析的四个象限如下图所示。

3.选择适当的UML模型,建立问题域对象模型:

UML(Unified Modeling Language),统一建模语言,是一种为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言,是非专利的第三代建模和规约语言。
UML主要由5类图来定义:

  • 用例图:从用户的角度描述系统功能,并指出各功能;
  • 静态图:类图、对象图和包图;
  • 行为图:活动图、状态图,描述系统的状态模型;
  • 交互图:顺序图、合作图,描述对象间的交互关系;
  • 实现图:如配置图,定义系统中软硬件的物理结构体系。

4.完善项目的WBS,估计各项任务所需时间

模块 时间(h)
主页 5
社区 12
文档 10
用户信息 20
管理员 15

5.系统需求规格说明书上传至GitHub截图:

任务2:查阅资料,回答以下问题:

1.什么是C/S结构?

  • C/S架构的含义
    C/S架构全称为客户端/服务器体系结构,它是一种网络体系结构,其中客户端是用户运行应用程序的PC端或者工作站,客户端要依靠服务器来获取资源。C/S架构是通过提供查询响应而不是总文件传输来减少了网络流量。它允许多用户通过GUI前端更新到共享数据库,在客户端和服务器之间通信一般采用远程调用(RPC)或标准查询语言(SQL)语句。
  • C/S架构的基本特征:
    • (1)客户端进程包含特定于解决方案的逻辑,并提供用户与应用程序系统其余部分之间的接口。服务器进程充当管理共享资源(如数据库,打印机,调制解调器或高性能处理器)的软件引擎。
    • (2)前端任务和后端任务对计算资源有着根本不同的要求,例如处理器速度,内存,磁盘速度和容量以及输入/ 输出设备。
    • (3)客户端和服务器的硬件平台和操作系统通常不相同。客户端和服务器进程通过一组明确定义的标准应用程序接口(API)和RPC进行通信。
    • (4)C/S架构的一个重要特征是可扩展性,它们可以水平或垂直缩放。水平扩展意味着添加或删除客户端,工作站只会对性能产生轻微影响。垂直扩展意味着迁移到更大更快的服务器计算机或多服务器中。
  • C/S架构的类型
    • 两层架构
    • 三层架构

2.什么是B/S结构?

  • B/S架构的含义
    • B/S架构的全称为Browser/Server,即浏览器/服务器结构。Browser指的是Web浏览器,极少数事务逻辑在前端实现,但主要事务逻辑在服务器端实现,Browser客户端,WebApp服务器端和DB端构成所谓的三层架构。B/S架构的系统无须特别安装,只有Web浏览器即可。B/S架构中,显示逻辑交给了Web浏览器,事务处理逻辑在放在了WebApp上,这样就避免了庞大的胖客户端,减少了客户端的压力。因为客户端包含的逻辑很少,因此也被成为瘦客户端
  • B/S架构的基本特征
    • BS的主要特点是分布性强、维护方便、开发简单且共享性强、总体拥有成本低。但数据安全性问题、对服务器要求过高、数据传输速度慢、软件的个性化特点明显降低,难以实现传统模式下的特殊功能要求。它是瘦客户端,对大量的数据输入以及报表的应答等都需要通过浏览器与服务器进行交互,通信开销大,而且对于实现复杂的应用构造有较大的困难。

3.什么是MVC设计模式?

  • MVC设计模式的含义
    • MVC设计模式就是模型视图控制器设计模式,它所指定的应用程序包括一个数据模型,呈现信息,以及控制信息。该模式要求将每个模式分成不同的对象。它包含三个模块分别是模型(M)、视图(V)、控制器(C)
    • 模型:仅包含纯应用程序数据,它不包含逻辑描述如何将数据呈现给用户
    • 视图:展示模型的数据给用户。视图知道如何访问模型的数据,但它不知道这些数据意味着什么或用户可以做些什么来操纵它。
    • 控制器:视图和模型之间存在。它侦听由视图(或其他外部源)触发的事件,并对这些事件执行适当的反应。在大多数情况下,反应是在模型上调用方法。由于视图和模型通过通知机制连接,因此该操作的结果将自动反映在视图中
  • MVC设计模式的基本特征
  • 多个开发人员可以同时处理模型,控制器和视图等。MVC支持在控制器上对相关操作进行逻辑分组。特定模型的视图也组合在一起。模型可以有多个视图。但是框架导航可能很复杂,因为它引入了新的抽象层,并要求用户适应MVC的分解标准。而且使用MVC的开发人员需要熟练掌握多种技术。
  • MVC设计模式示意图如下图所示

任务3:以任务1的成果为基础,使用Visio,应用面向对象设计(OOD)方法,撰写团队项目软件系统设计说明书

1.采用适合的模式设计软件系统总体结构:

采用MVC设计模式,设计软件系统总体结构,如下图所示。

2.设计软件系统数据库逻辑结构

修改E-R图,得出数据库逻辑结构,如下图所示。

3.说明软件重用方案

软件重用,是指在两次或多次不同的软件开发过程中重复使用相同或相似软件元素的过程。软件元素包括程序代码、测试用例、设计文档、设计过程、需求分析文档甚至领域知识。通常,可重用的元素也称作软构件,可重用的软构件越大,重用的粒度越大。使用软件重用技术可以减少软件开发活动中大量的重复性工作,这样就能提高软件生产率,降低开发成本,缩短开发周期。同时,由于软构件大都经过严格的质量认证,并在实际运行环境中得到校验,因此,重用软构件有助于改善软件质量。此外,大量使用软构件,软件的灵活性和标准化程度也可望得到提高。

  • 根据我们项目本身的软硬件环境定制出一个适用于我们系统的框架
    • 页面:页面均在一个基础的框架增加内容,编写时首先调用框架,进行重用。
    • 接口:Spring Boot框架中,所提供接口均可进行重用;对上传、删除等操作将其单独封装,进行重用。
    • 控制器:控制器负责调用各项功能,在进行操作时,均需对其进行重用。

4.设计关键类的重点服务

管理类:分别为用户和管理员,用户主要是管理个人信息和论文,资源等的发表,管理员主要是用来约束用户行为,管理用户文档,资源等的管理。
控制类:主要是对资源,文档进行访问,修改,查询等操作。
数据类:该类主要进行文档、资源的上传或删除等,对资源,文档,博文等进行具体的细节操作。

5.软件系统设计说明书上传至GitHub截图

4.完成《实验八 团队作业5:团队项目需求建模与系统设计(2)》团队博文作业:

1.各项任务完成时间

任务内容 所用时间(min) 主要负责人
任务1 320 刘温元,闫雨馨
任务2 60 闫雨馨,刘转弟,李瑞婷
任务3 360 刘转弟,李瑞婷
任务4 120 刘温元

2.对比陈述结构化软件分析与设计、面向对象分析与设计两类软件开发技术的异同

结构化软件分析与设计 面向对象分析与设计
基本思想 强调开发方法的结构合理性以及所开发软件的结构合理性的软件开发方法。结构是指系统内各个组成要素之间的相互联系、相互作用的框架。结构化开发方法提出了一组提高软件结构合理性的准则,如分解与抽象、模块独立性、信息隐蔽等。针对软件生存周期各个不同的阶段,它有结构化分析(SA)、结构化设计(SD)和结构化程序设计(SP)等方法。 是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,简称OO (Object-Oriented)方法,是建立在“对象”概念基础上的方法学。对象是由数据和容许的操作组成的封装体,与客观实体有直接对应关系,一个对象类定义了具有相似性质的一组对象。而每继承性是对具有层次关系的类的属性和操作进行共享的一种方式。所谓面向对象就是基于对象概念,以对象为中心,以类和继承为构造机制,来认识、理解、刻画客观世界和设计、构建相应的软件系统。
  • 相同点:
    • 1.都是软件系统的开发方法。
    • 2.两者在分解和抽象原则上一致。
    • 3.局部化和重用性设计上一致。
  • 不同点:
    • 1.基本单位不同:结构化方法的基本单位是模块;面向对象方法的基本单位是对象
    • 2.分析方法不同:结构化设计以数据为最关键的实体,着眼于处理数据的整个流程,基于过程地考虑整个数据通过软件时的变化;面向对象方法则从现实中人的角度考虑问题,将软件功能转变为不同模块的动作和模块间的通信

3.完成本次作业的感受和体会

  • Visio建模工具学习:本次实验运用了visio绘图软件,我们在网上下载之后在组内进行了一段时间的学习,之后在做实验的过程中我们用到了这个软件,在用visio绘图的过程中我们也是熟练掌握了这个软件的用法。熟能生巧只要多练习,就可以很快掌握它。
  • 项目需求分析建模:因为之前准备工作做的比较充分,所以在项目需求分析建模中没有遇到太大的麻烦,在原有的项目需求分析中运用OOA技术,就很快的完成了这一任务。在实验过程中我们对面向对象分析方法有了更深刻的理解。
  • 软件系统设计:在软件系统设计这部分内容中,我们学习了如何使用软件设计模式设计软件系统总体结构,设计软件系统数据库逻辑结构,而且对软件设计模式有了新的理解。在实验过程中,出现了很多问题但是我们及时交流一个一个解决了这些问题,我们也认识到合理分配任务对于团队的重要性,同时为之后的如何分工设计项目积累了经验。
  • 小结:本次实验耗时较长,初次做实验的时候有点迷茫不知从何下手。在老师讲课的过程中,我们一边体会、理解这两种方法的原理,一边着手尝试去做实验。这样我们都对其有了深刻的理解,在做实验的过程中我们也互相交流,对对方没有注意到的地方我们也会提醒。总之团队成员通力合作,相互帮助,团队凝聚力得到了进一步的提高,我们将继续努力,争取做出更好的成果。
posted @ 2022-06-13 23:10  软件工程四人小团队  阅读(24)  评论(1编辑  收藏  举报