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

项目 内容
课程班级博客链接 https://edu.cnblogs.com/campus/xbsf/2019nwnucs
这个作业要求链接 https://edu.cnblogs.com/campus/xbsf/2019nwnucs/homework/12662
团队名称 花开富贵
团队成员分工描述 谢宇涵:负责安排工作,协调各个组员的工作以及代码编写
张萌:主要负责文档撰写工作以及代码编写
王凯英:主要负责代码设计以及主要编写工作
王亚亚:要负责文档撰写工作以及代码测试审查工作
团队的课程学习目标 1. 学习使用UML建模工具Visio
2. 掌握面向对象需求分析建模.
3. 理解和掌握面向对象软件系统设计原理、设计过程和技术。
这个作业在哪些方面帮助团队实现学习目标 1.团队合作,讨论使得软件开软件可行性,提高开发效率;
2.培养团队意识;
3.通过项目的学习,团队成员掌握了UML建模工具和需求分析功能书的编写。
团队博客链接 https://www.cnblogs.com/2019wang/p/16350068.html
团队项目Github仓库地址链接 https://github.com/201971010242wangkaiying

一、实验目的与要求

(1)学习使用UML建模工具Visio;
(2)掌握面向对象需求分析建模技术;
(3)理解和掌握面向对象软件系统设计原理、设计过程和技术。

二、实验内容与步骤

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

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


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

- 杀手功能:OCR文字识别技术,可以在屏幕上取词解释,拥有独家权威词典,等等。
- 外围功能:良好的界面设计,在各个平台上都能运行。
- 必要需求:单词短语释义的准确性(如果达不到这一点,用户就不会来使用)。
- 辅助需求:可以做各种皮肤(这也许能让一些用户更喜欢这个软件,但不是决定因素)。

* 此项目功能分析的四个象限:

外围功能 杀手功能
必要需求 1.用户可查看,领取优惠券
2.系统定期清除过期优惠券
3.系统的安全性与稳定性
1.系统能自动抢优惠券
2.动态更新当下最优优惠券叠加方案
辅助需求 界面的跳转、美化 通过分析用户给出当下优惠券是否值得使用,避免用户过度消费

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

4.完善项目的WBS,估计各项任务所需时间
1)满减折扣叠加项目的WBS图如下:

2)估计各项任务所需时间如下:

5.采用OOA技术编制《XXX软件需求规格说明书1.2》上传到团队项目Github仓库
说明书已上传到仓库:

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

(1)什么是C/S结构?

C/S结构
简介 C/S架构是客户端/服务器体系结构,其中客户端依靠服务器来获取资源,cs架构通过提供查询响应来减少网络流量,它具有三种类型结构分别是一层架构、两层架构和三层架构。
C/S架构的含义 C/S架构全称为客户端/服务器体系结构,它是一种网络体系结构,其中客户端是用户运行应用程序的PC端或者工作站,客户端要依靠服务器来获取资源。C/S架构是通过提供查询响应而不是总文件传输来减少了网络流量。它允许多用户通过GUI前端更新到共享数据库,在客户端和服务器之间通信一般采用远程调用(RPC)或标准查询语言(SQL)语句。
C/S架构的基本特征
1. 客户端进程包含特定于解决方案的逻辑,并提供用户与应用程序系统其余部分之间的接口。服务器进程充当管理共享资源(如数据库,打印机,调制解调器或高性能处理器)的软件引擎。

2. 前端任务和后端任务对计算资源有着根本不同的要求,例如处理器速度,内存,磁盘速度和容量以及输入/ 输出设备。

3. 客户端和服务器的硬件平台和操作系统通常不相同。客户端和服务器进程通过一组明确定义的标准应用程序接口(API)和RPC进行通信。

4. C/S架构的一个重要特征是可扩展性,它们可以水平或垂直缩放。水平扩展意味着添加或删除客户端,工作站只会对性能产生轻微影响。垂直扩展意味着迁移到更大更快的服务器计算机或多服务器中。
C/S架构的类型
一层架构: 在此类型C/S架构设置中,用户界面,营销逻辑和数据逻辑存在于同一系统中。但是由于数据差异导致难以管理。例MP3播放器,MS Office都属于单层应用程序。

两层架构:
1. 在这种类型中,用户界面存储在客户端机上,数据库存储在服务器上。数据库逻辑和业务逻辑在客户端或服务器上归档,但需要进行维护。如果在客户端收集业务逻辑和数据逻辑,则将其命名为胖客户端瘦服务器体系结构。如果在服务器上处理业务逻辑和数据逻辑,则称为瘦客户端胖服务器体系结构。这被认为是负担得起的。

2. 在双层体系结构中,客户端和服务器必须直接合并。如果客户端向服务器提供输入,则不应该有任何中间件。这样做是为了快速获得结果并避免不同客户之间的混淆。例如,在线票务预订软件使用这种双层架构。


三层架构:
1. 在三层架构中,需要使用到额外的中间件,这意味着客户端请求需要通过该中间层进入服务器,服务器的响应首先由中间件接收,然后再接收到客户端。中间件存储所有业务逻辑和数据通道逻辑,中间件提高了灵活性并提供了最佳性能。

2. 三层结构被分成三个部分,即表示层(客户层),应用层(业务层)和数据库层(数据层)。客户端系统管理表示层,应用程序服务器负责应用程序层,服务器系统负责监视数据库层。

(2)什么是B/S结构?
B/S架构
简介 B/S架构(Browser/Server,浏览器/服务器架构)就是一种网络架构模式,将系统功能实现的核心部分集中到服务器中,同时简化了系统的开发,维护以及使用,通过浏览器即可运行而不需要安装其他客户端。
含义 B/S结构指的是Browser/Server(浏览器/服务器)结构,就是只需要安装维护一个服务器,而客户端采用浏览器的方式来运行软件。它是随着Internet技术而兴起的,是对C/S结构的一种变化和改进。主要利用了WWW浏览器技术,结合多种Script语言和新技术,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。是一种全新的软件系统构造技术。它只需要安装一个浏览器和数据库,就可以让浏览器通过Web Server同数据库进行数据交互。
B / S架构的优点
1. 该架构不需要安装客户端,可以直接运行在Web浏览器中

2. B/S架构可以直接放在Internet网络上,从而达到通过某些特权来控制多客户端访问的目的以及交互方式。

3. B/S架构由于不需要安装客户端,因此不存在更新多个客户端以及升级服务器等问题
B / S架构的缺点
1. 在跨浏览器中,B/S架构不是令人最满意的架构

2. 想要达到CS程序的程度还需要付出很多努力才可以

3. 在速度和安全性方面,仍然需要花费巨大的设计成本,这是B/S架构中最大的问题。

4. 客户端服务器交互是请求响应模式,通常需要刷新页面,这是不愿意看到客户的。但是这个缺点在Ajax受欢迎之后该问题得到了一定程度的缓解

(3)什么是MVC设计模式?

MVC模式
简介
MVC设计模式就是模型视图控制器设计模式,它指定的应用程序包括一个数据模型,呈现信息,以及控制信息。该模式要求将每个模式分成不同的对象。

模型-视图-控制器(MVC)是由微软公司开发的体系结构图案框架,它是用来代替ASP.NET用于创建web应用程序的网络的形式。MVC框架具有轻质和可测试框架的特征,并且将应用程序分成三个组件模型,视图和控制器。
含义
MVC设计模式就是模型视图控制器设计模式,它所指定的应用程序包括一个数据模型,呈现信息,以及控制信息。该模式要求将每个模式分成不同的对象。

它包含三个模块分别是模型(M)、视图(V)、控制器(C)

模型:仅包含纯应用程序数据,它不包含逻辑描述如何将数据呈现给用户

视图:展示模型的数据给用户。视图知道如何访问模型的数据,但它不知道这些数据意味着什么或用户可以做些什么来操纵它。

控制器:视图和模型之间存在。它侦听由视图(或其他外部源)触发的事件,并对这些事件执行适当的反应。在大多数情况下,反应是在模型上调用方法。由于视图和模型通过通知机制连接,因此该操作的结果将自动反映在视图中
优点:
1. 多个开发人员可以同时处理模型,控制器和视图等。

2. MVC支持在控制器上对相关操作进行逻辑分组。特定模型的视图也组合在一起。

3. 模型可以有多个视图。
缺点:
1. 框架导航可能很复杂,因为它引入了新的抽象层,并要求用户适应MVC的分解标准。

2. 使用MVC的开发人员需要熟练掌握多种技术。

任务3:以任务1的成果为基础,使用Visio,应用面向对象设计(OOD)方法,撰写团队项目软件系统设计说明书,以回答:软件是如何实现用户需求的?文档内容要求如下:

(1)采用适合的模式设计软件系统总体结构;
(2)设计软件系统数据库逻辑结构;
(1)(2)两部分均已添加到了团队软件系统设计说明书里:

(3)说明软件重用方案;
- 什么是软件应用系统设计中的“可重用性”
软件应用系统设计中的“可重用性”一般是指软件应用系统中代码实现的可重用性。当然,软件设计的可重用性不应该仅仅局限于功能实现的代码方面,也还应该包括软件应用系统的系统架构设计方面。因此,软件应用系统的系统设计中的“可重用性”应该体现在“系统结构(分层和分块)”和“代码实现(源程序代码和可执行的功能组件)”两个方面。
如果能够实现软件应用系统的系统架构级别上的重用,则能够大大地简化软件应用系统设计的工作量、减少系统设计中的错误,并减少系统测试和调试的时间。因此,软件应用系统的系统架构设计是整个软件应用系统开发过程中比较关键的一个环节,并且系统架构的选择结果将决定软件应用系统开发实现的成败。
- 软件应用系统设计中的可重用性表现为多个不同的层次
通用和共性的软件模块一般都是由底层的操作系统或开发平台、开发工具所提供的,如通用API系统库、平台级别的功能组件、程序模板库等;企业应用系统的开发人员主要专注于解决某一领域的特定的应用问题时的可重用性方面。
对这些特定的应用问题,从表面上来看,各个问题都有差别。但只要对它们进行细分处理后,仍然也会发现有许多共性之处——将公共的、相对独立的和稳定不变的逻辑或模块同特定的逻辑相互分开。比如各个商业银行中的账户管理系统,都应该提供“存钱”、“取钱”和“转账”等方面的功能,这些是公共的、相对独立的和稳定不变的逻辑。
- 在面向对象编程中实现类级别重用的基本方法
在面向对象编程实现中有两种方法可以重用类:其一是创建该类的对象实例,并通过该对象实例直接使用类中的方法;而另一种方法便是继承该类以派生出一个满足需要的子类。
面向对象编程技术中的继承机制不仅可以重用基类的数据结构和功能方法的程序代码,而且还可以在基类的基础上根据具体的需要进行修改和扩充——通过新增、覆盖或者重载等形式。。
此外,系统中的不同业务处理的Action类都继承于系统的ActionBase基类,从而实现对系统框架的重用,同时也允许根据应用系统的特定应用需求修改和扩充——通过新增、覆盖或者重载等形式。
1)代码的重用性
   因为在开发软件的过程当中,我们采用的软件代码都是比较简单的,所以在某种程度上来说,如果有人想在我们的代码上继续研究开发,可以继续使用我们的代码去开发,但是如果他们想用自己的代码去实现自己的软件目标,也可以采用我们软件的相关类,以及对象的重用,这些都是相对来说比较简单的,开发者可以简单的读懂代码的类以及对象,然后可以根据他们的想法去开发自己的项目。
2)项目的重用性
   在开发项目的过程中,因为我们设计的是线上点餐系统,在各项功能方面可能还达不到一定的标准,但是在后期的开发研究的过程当中,我们还是可以继续在这个项目的研究上进行开发,当然,一些同行要是想在我们的系统上继续进行开发,也是相对来说可以的,因为在一些功能的设计上,可能还是不太健全,但是在经过后期的修改之后,这样的情况相对来说是可以改变的,然后将系统的功能完善。
3)项目的领域上
   在项目的领域方面,我想我们的项目是跟着社会的发展走,社会的生活节奏越来越快,未来的线上点餐肯定是最重要的,在这一方面肯定是毋庸置疑的,所以随着社会的发展,现在设计的这种线上点餐的功能可能是不够健全的。然后我们可以在这个线上点餐的领域,不停的将我们这个系统进行重用,进行一个项目的改进,最终让这个项目的功能越来越完善,以至于最后可以用于一些发达地区的餐饮行业。
(4)设计关键类的重点服务。
在本次设计中,我们主要分了三个模块:
用户登录界面(用户注册登录)
折扣券选择界面(根据优惠最佳,优惠券叠加等方式选取最佳方案)
购买界面(利用最优惠方式购买所需物品)。

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

  1. 记录完成《实验八 团队作业5:团队项目需求建模与系统设计(2)》各项任务实际花费的时间和分工.
任务 时间
任务一 1
任务二 2
任务三 2
任务四 3
任务五 4
  1. 结合实验七、实验八的学习体验,对比陈述结构化软件分析与设计、面向对象分析与设计两类软件开发技术的异同。
结构化方法 面向对象方法
基本原则 (1)抽象原则:是一切系统科学方法都必须遵循的基本原则,它注重把握系统的本质内容,而忽略与系统当前目标无关的内容,它是一种基本的认知过程和思维方式。
(2)分解原则:是结构化方法中最基本的原则,它是一种先总体后局部的思想原则,在构造信息系统模型时,它采用自顶向下、分层解决的方法。
(3)模块化原则:结构化方法最基本的分解原则的具体应用,它主要出现在结构化设计阶段中,其目标是将系统分解成具有特定功能的若干模块,从而完成系统指定的各项功能。
(1)抽象: 抽象是指从事物中舍弃个别的、非本质的特征,而抽取共同的本质特征的做法。使用抽象的好处:一是便于访问,外部对象只需知道有限的几个操作(接口)即可访问其中的对象;二是便于维护,如果程序内部发生变化而其接口没有发生变化,则只需对其内部进行修改。
(2)分类:分类的作用就是按照某种原则划分出事物的类别,以便有助于认识复杂世界。在面向对象中分类就是把具有相同属性和方法的对象化为一类,用类作为这些对象的抽象描述。分类实际上是把抽象原则运用于对象描述时的一种表现形式。
(3)封装:在面向对象中封装就是用对象把属性和和操纵这些属性的操作包装起来,形成一个独立的实体单元,体现了事物的相对独立性。封装的另一个含义则是信息隐蔽,即外界不能直接存取对象的内部属性以及隐藏起来的内部操作,外界也不用知道对象操作的内部实现细节。
(4)多态性 :多态性是指在具有继承关系的类层次结构中可以定义同名的操作或者属性,但是这些属性和操作具有不同的含义,即具有不同的数据类型或表现出不同的行为。
程序设计思想 结构化方法的程序设计偏重于过程,在其基本指导思想中,一个完整的程序是由算法和数据结构两部分组成的,开发人员的工作就是实现这两部分的内容,并用合适的方式使其二者建立连接,实现期望的程序功能。在具体设计流程上,结构化方法遵循了自底向上的设计思想,即先设计底层模块,确定模块内部算法,设计模块内部程序,并进行单元测试。模块完成之后,再进行模块之间的组装,进行模块的集成测试。随后进行确认测试和系统测试,完成设计和调试任务。 对于面向对象方法的程序设计,其唯一组成是对象,对象之间的关系构成了程序的基本框架。由于对象是一个数据、功能统一的实体,故开发人员需要实现对象内部的数据结构与算法,不过显然实现难度比一个完整的程序要小很多。之后的关注点就是协调好对象之间的信息传递,使其能协同工作,发挥预期效果。与结构化方法相反的是,面向对象方法采用自顶向下的设计思想,先设计父类,再设计子类,并继承父类的属性与方法,而对象则是在最后程序运行过程中动态生成。
  1. 从团队分工和协作学习角度,陈述团队实施Visio建模工具学习、项目需求分析建模、软件系统设计等学习活动的心得
角度 心得
Visio建模工具学习 在前期的学习过程中我们已经接触过Visio画图工具,所以这次我们更多的时间花费在设计例图、UML、WBS图形上,整个过程比较顺利。
项目需求分析建模 因为前期的需求文档已经做的比较充分,所以在需求分析建模过程中遇到的问题比较少,只需要根基需求文档内容进行去求分析建模,但是在整体建模规划时还是遇到了一些比较细的问题,比如如何排版提高用户体验,不过我们通过小组讨论选出了最佳的选择进行建模。
软件系统设计 对于软件系统设计这部分的内容,这也是我们在这次实验过程中收获最大的地方。我们通过亲自操作体验了如何使用软件设计模式设计软件系统总体结构,设计软件系统数据库逻辑构,以及掌握了软件设计模式等概念,在协作过程中,出现问题及时交流,互帮互助,深切体验到了合理分配任务能提高完成效率。
总结 在接受到实验八任务后,组长首先对任务进行了明确的分工,这极大地促进了我们小组的完成进度。总之,这次实验过程还是比较顺利的,而且收获很大。
posted @ 2022-06-14 08:01  花开富贵!  阅读(21)  评论(1编辑  收藏  举报