实验八 团队作业5—团队项目需求建模与系统设计(2)
课程班级博客链接 | |
这个作业链接连接 | |
团队名称 | |
团队成员分工描述 | 陈玉英: 任务1:用例图表示项目功能需求+任务1:完善项目的WBS,估计各项任务所需时间+任务2+博客撰写; 李涛 :任务1:功能分析的四个象限+任务1:选择适当的UML模型,建立问题域对象模型+任务3:说明软件重用方案; 刘春丽:任务3:采用适合的软件设计模式设计软件系统总体结构+任务3:设计软件系统数据库逻辑结构+任务3:设计关键类的重点服务。 |
团队的课程学习目标 | (1)学习使用UML建模工具Visio; (2)掌握面向对象需求分析建模技术; (3)理解和掌握面向对象软件系统设计原理、设计过程和技术。 |
这个作业在哪些方面帮助团队实现学习目标 | (1)促进了团队之间的合作加深,成员之间得互相借鉴学习,互助提升; (2)学习和掌握了UML建模工具Visio; (3)掌握了面向对象需求分析建模技术; (4)理解和掌握了面向对象软件系统设计原理、设计过程和技术。 |
团队博客链接 | |
团队项目Github从库地址链接 |
任务1:使用Visio,应用面向对象分析方法(OOA),完善团队项目的《软件需求规格说明书》,并将该文档上传到团队项目Github仓库,文档内容要求如下:
1. 设计用例图表示项目功能需求,模型使用规范一致的图形符号和文字描述内容;
本系统主要是面向用户的背包问题知识社区系统,根据调研得知,背包问题知识社区系统的使用者通常是管理员和用户,用户主要是注册登录上去之后进行浏览查看、学习、评论等一些操作,管理员既负责内容管理,也负责用户信息的管理。
因此,根据背包问题知识社区的真实情况,我们主要设计有管理员和用户两类权限,管理员可以对所有信息进行查看,此外,管理员具有特殊的权限是进行系统设置,主要表现为对内容、评论、以及其让他用户上传的文件进行管理,其余情况下,管理员和用户具有相同的权限,可以对基本信息进行管理。
用户登录后,首先是主页面,可以清晰的看到一些主要模块,比如知识社区、文件、个人信息中心等等。
2. 参考《构建之法—现代软件工程》8.5节功能的定位和优先级,给出功能分析的四个象限;
-
功能分析的四个象限如下图所示:
杀手功能:OCR文字识别技术,可以在屏幕上取词解释,拥有独家权威词典。
外围功能:良好的界面设计,在各个平台都能运行。
必须需求:单词短语释义的准确性(如果达不到这一点,用户就不会来使用)
辅助需求:可以做各种皮肤(这也许能让一些用户更喜欢这个软件,但不是决定因素)
3. 选择适当的UML模型,建立问题域对象模型;* UML(unified Modeling Language )为面向对象软件设计提供统一的、标准的、可视化的建模语言。适用于描述以用例为驱动,以体系结构为中心的软件设计的全过程。 * UML的定义包括UML语义和UML表示法两个部分: UML语义:UML对语义的描述使开发者能在语义上取得一致认识,消除因人而异的表示方法造成的影响。 UML表示法:UML表示法定义UML符号的表示法,为开发者或者开发工具使用这些图形符号和文本语法为系统建模提供了标准。 * UML模型图的构成: 事物(things):UML模型中的最基本的构成元素,是具有代表性的成分的抽象。 关系(relationship):关系把事物紧密联系在一起。 图(Diagrams):图是关系和事物的可视化表示。 * UML包括静态建模和动态建模: 静态建模:创建并记录一个系统的静态特征; 反应一个软件系统基础、固定的框架结构;创建相关问题域主要元素的视图。 静态建模包括:用例图、类图、对象图、组件图、部署图。 动态建模包括:时序图、协作图、状态图、活动图。
UML模型:
4. 完善项目的WBS,估计各项任务所需时间
软件需求规格说明书:
任务2:查阅资料,回答以下问题:
1.什么是C/S结构?
- C是英文单词“Client”的首字母,即客户端的意思,C/S就是“Client/Server”的缩写,即“客户端/服务器”模式,是计算机软件协同工作的一种模式。
- C/S结构是一种软件系统体系结构,也是生活中很常见的。这种结构是将需要处理的业务合理地分配到客户端和服务器端,这样可以大大降低通信成本,但是升级维护相对困难。比如我们手机中安装的微信、QQ、王者荣耀等应用程序就是C/S结构。
(1)界面和操作简单丰富。 (2)管理信息系统具有较强的事务处理能力。 (3)安全性能可以很容易保证,实现多层认证也不难。 (4)响应速度快。由于客户端实现与服务器的直接相连,没有中间环节,只有一层交互,因此响应速度较快。 (5)交互性好,对服务器压力小,安全。 |
(1)适用面窄,通常用于局域网中。 (2)客户端需要安装专用的客户端软件。 (3)维护升级成本高,进行一次维护升级,需要所有客户端的程序进行重新安装。 (4)对客户端的操作系统一般也会有限制。 (5)服务器更新时需要同步更新客户端。 |
2.什么是B/S结构?
- B是英文单词“Browser”的首字母,即浏览器的意思;S是英文单词“Server”的首字母,即服务器的意思。B/S就是“Browser/Server”的缩写,即“浏览器/服务器”模式。
- B/S结构是随着互联网的发展,web出现后兴起的一种网络结构模式。这种模式统一了客户端,让核心的业务处理在服务端完成。你只需要在自己电脑或手机上安装一个浏览器,就可以通过web Server与数据库进行数据交互。B/S结构(Browser/Server,浏览器/服务器模式),是WEB兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件。
(1)无需安装,客户端不需要安装有浏览器即可。 (2)分布性特点,可以随时随地进行查询、浏览等业务处理。 (3)业务扩展便捷,通过增加页面即可增加服务器功能。 (4)升级维护便捷,无需升级多个客户端,升级服务器即可,就可以实现所有用户的同步更新。 (5)共享性强特点,可以直接放在广域网上,通过一定的权限控制实现多客户访问的目的,交互性较强。 |
<1)在跨浏览器上,BS结构不尽如人意。 (2)在速度和安全性上需要花费很多设计成本,响应速度不及C/S,随着AJAX技术的发展,相比传统B/S结构软件速度有很大提升。 (3)用户体验不是很理想,B/S需要单独界面设计,各个浏览器厂商的对浏览器的解析的标准不同。客户端服务器端的交互是请求-响应模式,通常需要刷新页面,这并不是客户乐意看到的。交互性差,安全性低。 |
B/S结构和C/S结构的区别:
硬件环境 | B/S是建立在广域网上的,适应范围强,通常有操作系统和浏览器就行; | C/S通常是建立在专用的网络上,小范围的网络环境。 |
安全性 | 安全性较低 | 因为用户群相对固定,对信息的保护更强,所以C/S结构比B/S结构更安全。 |
维护升级难度 | 比较简单 | 维护升级相对困难 |
3.什么是MVC设计模式?
- 从设计模式的角度来看,MVC模式是一种复合模式,它将多个设计模式在一种解决方案中结合起来,用来解决许多设计问题。MVC模式把用户界面交互分拆到不同的三种角色中,使应用程序被分成三个核心部件:Model(模型)、View(视图)、Control(控制器)。
- 从全局的角度来看,MVC则表示为:M层负责业务的构建和实现、V层负责展示和进行输入输出交互、C层则负责进行整个系统的协调和控制。
- “MVC”模式即是:“Model-View-Controller”模式。在这种模式中,通过JSP技术来表现页面,通过Servlet技术来完成大量的事务处理工作,实现用户的商业逻辑。在这种模式中,Servlet用来处理请求的事务,充当了控制器(Controller即“C”)的角色,Servlet负责响应客户对业务逻辑的请求并根据用户的请求行为,决定将哪个JSP页面发送给客户。JSP页面处于表现层,也就是视图(View即“V”)的角色。JavaBean则负责数据的处理,也就是模型(Model即“M”)的角色。Servlet+JSP+JavaBean(MVC)模式适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,JSP负责数据显示,javabean负责封装数据。 Servlet+JSP、JavaBean模式程序各个模块之间层次清晰,WEB开发推荐采用此种模式。
- MVC架构
- Model-View-Controller架构模式是80年代中期在Smalltalk-80 GUI(一种经典的面向对象程序设计语言)实验室发明的。
- 根据MVC模式,一个软件应该将商务逻辑(Model)和显示(View)分开。分开有许多好处,最主要的有两个方面:
- 1.同一的商务逻辑层(Model)可能会对应多个显示层(View),如果商务逻辑层和显示层放在一起的话,再添加一个显示层的时候就会极大的增加组件的复杂性。一个商务逻辑对着两个显示层的例子是:银行的帐户的商务逻辑层对应ATM和Internet两个显示层。
- 2.通常情况下,每次修改显示层的时候一般并不需要修改商务逻辑层。
任务3:以任务1的成果为基础,使用Visio,应用面向对象设计(OOD)方法,撰写团队项目软件系统设计说明书,以回答:软件是如何实现用户需求的?文档内容要求如下:
1. 采用适合的模式设计软件系统总体结构;
2. 采用适合的模式设计软件系统总体结构;
E-R图:
3. 说明软件重用方案;
软件重用:软件重用,是指在两次或多次不同的软件开发过程中重复使用相同或相似软件元素的过程。软件元素包括程序代码、测试用例、设计文档、设计过程、需求分析文档甚至领域知识。通常,可重用的元素也称作软构件,可重用的软构件越大,重用的粒度越大。软件重用可以直接提高软件的开发效率、降低软件的开发成本、缩短软件的开发周期、提高软件质量。
1)源代码重用:我们的重用主要是在源代码级,通过类的继承来实现。其实可重用的范围是很大的,如设计的重用,测试用列的重用,可运行的代码的重用等。将来会扩大重用的粒度,在框架基础上,进一步根据我们项目本身的软硬件环境定制出一个适用于我们系统的框架,如加进注册功能,数据库连接的功能等。这样,我们可直接重用这个框架,这可以极大地提高软件的开发和维护的效率。
2)构建技术重用:构件的两个最重要的特性是自包容与可重用。自包容指的是构件的本身是一个功能完整的独立体,构件内部与外部的功能界限清晰明确,可以独立配置与使用。而可重用既是构件的特点,也是构件出现的目的.
3)文档和过程的重用:软件文档和软件过程也是软件开发中不可或缺的元素,有效地重用这些文档和过程也有助于提高开发效率和软件质量、降低开发成本。
4. 设计关键类的重点服务。
本系统所有关键类如下所示:
普通用户类:定义了普通用户的基本属性管理员类:定义了管理员的基本属性
用户功能类:定义与用户相关的功能实现基本方法
管理员管理类:定义与管理员相关的管理功能实现基本方法用户控制制类:控制用户的相关服务
管理员控制类:控制管理员的相关服务
项目软件系统设计说明书
任务4:完成《实验八 团队作业5:团队项目需求建模与系统设计(2)》团队博文作业::
1. 《实验八 团队作业5:团队项目需求建模与系统设计(2)》的文字资料,需包含以下内容:满足任务1-任务4评分要点中未要求上传到团队项目仓库的材料;
2. 完成《实验八 团队作业5:团队项目需求建模与系统设计(2)》各项任务实际花费的时间
任务1 | |
任务2 | |
任务3 | |
任务4 |
3. 结合实验七、实验八的学习体验,对比陈述结构化软件分析与设计、面向对象分析与设计两类软件开发技术的异同
基本思想 | 结构化程序设计的基本思想是采用自顶向下、逐步细化的设计方法和单入单出的控制结构。其理念是将大型程序分解成小型、便于管理的任务。如果其中的一项任务仍然过大,则将它分解为更小的任务。这一过程将一直持续下去,直到将程序划分为小型的,易于编写的模块。 | 面向对象(ObjectOriented )是认识事务的一种方法,是一种以对象为中心的思维方式面向将系统看成通过交互作用来完成特定功能的对象的集合。每个对象用自己的方法来管理数据。也就是说只有对象内部的代码能够操作对象内部的数据。 |
实质 | 着眼于数据流,自顶向下,逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。它通常与结构化分析方法衔接起来使用,以数据流图为基础得到软件的模块结构。SD方法尤其适用于变换型结构和事务型结构的目标系统。在设计过程中,它从整个程序的结构出发,利用模块结构图表述程序模块之间的关系。 | 面向对象技术包括面向对象分析、面向对象设计及面向对象程序设计三部分内容。OOP是在结构化程序设计的基础。封装是整个OOP方法的基础,主要用于在数据段外围构造保护层,以限制外界变化的影响,所有的数据访问都由保护层内的过程间接处理。 |
步骤 | 分析: (1)通过对用户的调查,以软件的需求为线索,获得当前系统的具体模型 (2)去掉具体模型中非本质因素,抽象出当前系统的逻辑模型 (3)根据计算机的特点分析当前系统与目标系统的差别,建立目标系统的逻辑模型 (4)完善目标系统并补充细节,写出目标系统的软件需求规格说明 (5)评审直到确认完全符合用户对软件的需求。 设计: (1)评审和细化数据流图; (2)确定数据流图的类型; (3)把数据流图映射到软件模块结构,设计出模块结构的上层; (4)基于数据流图逐步分解高层模块,设计中下层模块; (5)对模块结构进行优化,得到更为合理的软件结构; (6)描述模块接口。 |
(1)从需求中寻找对象 (2)从需求中寻找对象的属性(认真仔细读需求有助于从问题域中发现属性,这个步骤和自己的经验有直接关系) (3)从需求中捕获对象应该提供的服务。 (4)分析服务由哪些具体的动作组合而成。 (5)将对象进行归纳分组,发现对象的共同点进行抽象。 (6)如果问题域关系复杂,要结合用例进行清晰化,结合用例再进行1~4步 |
特点 | (1)面向用户,用户自始至终参与系统的分析工作; (2)强调调查工作的重要性; (3)对管理业务中的各种数据进行分解; (4)采用了层次分解的系统思想; (5)用图形工具来分析和构建新方案。 |
(1)强调系统开发的整体性和全局性; (2)侧重于数据转换的过程而不是数据本身; (3)系统的开发周期长; (4)封装性; (5)继承性; (6)多态性; (7)易维护性。 |
小结 |
**如何选择适合的开发方法:**
(1)结构化方法最为成熟,对于预先制定需求的系统开发,非常有效。对于需求模糊或者随时间变化的系统开发,不太适应。
(2)从提高程序的重用性和可维护性的角度看,面向对象方法有较好的应用前景,形式化方法对于安全性要求很高的系统,比较适用。但面向对象程序设计方法的基础仍然是结构化程序设计。
(3)因为成本问题和技术变更,所以形式化方法在实际应用中受到限制。
(4)SOFL方法集成了结构化方法,面向对象方法,和形式化方法于一体,
(5)在需求分析和规格说明阶段采用结构化方法,在设计和实现阶段采用面向对象方法。
4. 从团队分工和协作学习角度,陈述团队实施Visio建模工具学习、项目需求分析建模、软件系统设计等学习活动的心得
Visio建模工具学习 | 在本次实验中,学习了UML建模工具、OOP、等,明白了软件设计的步骤,代码复用、软件重用等技术,我们在设计过程中虽然也遇到了一些小麻烦,但是通过团队成员的沟通,通过共同的大智慧解决了很多问题,顺利完成了本次的实验设计。在这次实验的开发过程分成分析和设计两大部分。分析方法和设计模式因需求的不同而多彩多样。有的方法会带来一些非常明显的优点,有的方法会带来一些不利的因素。在分析和设计的阶段都采用了UML面向对象的建模方法。使整体更加系统化,标准化,模块化。使用UML设计出来的管理系统,有很多基于业务逻辑抽象出来的类,具有广泛性和重用性。UML建模工具Visio 原来仅仅是一种画图工具,能够用来描述各种图形(从电路图到房屋结构图),也是到Visio 2000才开始引进软件分析设计功能到代码生成的全部功能,它可以说是目前最能够用图形方式来表达各种商业图形用途的工具。它跟微软的office产品的能够很好兼容,能够把图形直接复制或者内嵌到WORD的文档中,但是对于代码的生成更多是支持微软的产品如VB,VC++,MS SQL Server 等(这也是微软的传统),所以它可以说用于图形语义的描述比较方便,但是用于软件开发过程的迭代开发则有点牵强。 |
项目需求分析建模 | 由于之前情况,每个人对于分析建模的擅长领域不同,因此对于任务进行合理地划分,由李华负责用例图、祁英红负责四象限图的绘制,高文利负责UML设计,帖佼佼负责WBS设计,最后共同共同撰写软件需求规格说明书。通过本次需求分析建模过程,我们针对负责部分的不理解之处共同商讨并及时解决问题,对用户需求有了进一步的认识,也对系统功能有了进一步的明确,虽然可能在过程中存在一些不足,但是我们团队相信通过这次讨论学习,我们在未来的学习中能够做得更好。 |
软件系统设计 | 软件系统设计层面,首先大家一起进行软件系统总体结构和系统数据库逻辑结构设计,完成了软件重用方案和设计类的关键类的重点服务,最后进行了汇总。由于之前学习情况的不同,在此部分实现各成员进度不一致在该部分花费时间较多。不过还是相互合作,及时沟通,存在问题也能高效率解决,这使团队成员之间更加团结,且为之后的相关分工设计等工作积累了经验。 |