202207-夏日限定 实验八 团队作业5:团队项目需求建模与系统设计(2)
夏日限定 实验八 团队作业5:团队项目需求建模与系统设计(2)
项目 | 内容 |
---|---|
课程班级博客链接 | 2019级计算机科学与技术 |
这个作业要求链接 | 实验八 团队作业5:团队项目需求建模与系统设计(2) |
团队名称 | 夏日限定 |
团队成员及分工描述 |
|
团队的课程学习目标 |
|
这个作业在那些方面帮助团队实现学习目标 |
|
团队博客链接 | 202207-夏日限定 |
团队项目Github仓库地址链接 | Summer-limit |
任务1的完成情况如下:
1. 完善团队项目的《软件需求规格说明书》
2. 设计用例图表示项目功能需求,模型使用规范一致的图形符号和文字描述内容
-
泛化关系:
-
管理员用例图
-
社交功能用例图
-
系统总体用例图
-
游客用例图(系统中添加游客这一种类的用户)
-
注册用户用例图
3. 参考《构建之法—现代软件工程》8.5节功能的定位和优先级,给出功能分析的四个象限
- 第一象限(杀手功能,必要需求):资源完整性,正确性,资源可上传
- 第二象限(外围功能,必要需求):社区功能,资源审核
- 第三象限(外围功能,辅助需求):UI设计美观
- 第四象限(杀手功能,辅助需求):用户交流功能
4. 选择适当的UML模型,建立问题域对象模型
- UML(Unified Modeling Language),统一建模语言,是一种为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言,是非专利的第三代建模和规约语言。
- UML主要由5类图来定义:
- 用例图:从用户的角度描述系统功能,并指出各功能;
- 静态图:类图、对象图和包图;
- 行为图:活动图、状态图,描述系统的状态模型;
- 交互图:顺序图、合作图,描述对象间的交互关系;
- 实现图:如配置图,定义系统中软硬件的物理结构体系。
5. 完善项目的WBS,估计各项任务所需时间
- 更新后的WBS:
- 优化后的各项任务所需时间:
任务 | 时间/h | |
---|---|---|
游客 | 注册信息 | 2 |
探索查询 | 4 | |
学习浏览 | 4.5 | |
注册用户 | 登录 | 2 |
学习浏览 | 7 | |
社交圈子 | 15 | |
搜索 | 5 | |
上传资源 | 5 | |
查看个人中心 | 3 | |
管理员 | 审核 | 4.5 |
回复反馈 | 3 | |
管理用户账号 | 4 | |
登录 | 2 |
6. 仓库截图
任务2的完成情况如下:
1. 什么是C/S结构
-
C是英文单词“Client”的首字母,即客户端的意思,C/S就是“Client/Server”的缩写,即“客户端/服务器”模式。
-
C/S结构是一种软件系统体系结构,也是生活中很常见的。这种结构是将需要处理的业务合理地分配到客户端和服务器端,这样可以大大降低通信成本,但是升级维护相对困难。
2. 什么是B/S结构
-
B是英文单词“Browser”的首字母,即浏览器的意思;S是英文单词“Server”的首字母,即服务器的意思。B/S就是“Browser/Server”的缩写,即“浏览器/服务器”模式。
-
B/S架构是浏览器/服务器交互模式,是Browser/Server的简称。它是目前最常用的一种软件架构,这种架构的软件不需要在用户的电脑上安装任何客户端程序,只需要在用户的电脑上安装浏览器即可。用户可以使用浏览器通过web服务器和数据库做交互,交互的结果将会以网页的形式显示在浏览器端。
3. 什么是MVC设计模式
-
MVC(Model View Controller)模式是模型-视图-控制器的缩写,是一种非常经典的软件架构模式,在UI框架和UI设计思路中扮演着非常重要的角色。从设计模式的角度来看,MVC模式是一种复合模式,它将多个设计模式在一种解决方案中结合起来,用来解决许多设计问题。MVC模式把用户界面交互分拆到不同的三种角色中,使应用程序被分成三个核心部件:Model(模型)、View(视图)、Control(控制器)。
-
Model(模型):模型持有所有的数据、状态和程序逻辑。模型独立于视图和控制器。
-
View(视图):用来呈现模型。视图通常直接从模型中取得它需要显示的状态与数据。对于相同的信息可以有多个不同的显示形式或视图。
-
Control(控制器):位于视图和模型中间,负责接受用户的输入,将输入进行解析并反馈给模型,通常一个视图具有一个控制器。
-
-
MVC模式的优势
-
一个模型提供不同的多个视图表现形式,也能够为一个模型创建新的视图而无须重写模型。一旦模型的数据发生变化,模型将通知有关的视图,每个视图相应地刷新自己。
-
模型可复用。因为模型是独立于视图的,所以可以把一个模型独立地移植到新的平台工作。
-
提高开发效率。在开发界面显示部分时,你仅仅需要考虑的是如何布局一个好的用户界面;开发模型时,你仅仅要考虑的是业务逻辑和数据维护,这样能使开发者专注于某一方面的开发,提高开发效率。
-
任务3的完成情况如下:
1. 软件系统设计说明书
2. 采用适合的模式设计软件系统总体结构
本系统采用Android开发,若不适用构架进行开发,带来的问题是Activity/Fragment逻辑臃肿,不利于扩展。采用MVC设计模式,可以控制逻辑,数据处理逻辑和界面交互耦合。而Android开发中,其本身默认就可以理解为MVC结构,把View放在xml中与Java代码进行解耦,然后Activity/Fragment充当Controller进行逻辑控制,但是Android本身没有对Model进行划分,所以在本系统中,我们可让Activity/Fragment充当Model和Controller两个角色。而且xml中的View 操作也是在Activity/Fragment中,导致有时候Activity/Fragment也会充当一些View的角色。
此外本系统采用Android,故默认为C/S软件体系结构。
3. 设计软件系统数据库逻辑结构
- E-R图:
-
E-R图向关系模型的转化:
- 用户-资料:
用户(用户编号,用户姓名,用户性别,用户年龄,用户邮箱,用户账号,登陆密码)
资料(资料编号,上传者编号,资料上传者昵称,资料名称,资料名称,资料内容,资料上传时间,资料评论数,资料更新时间,资料点赞数,资料收藏数,资料评论内容)
上传(用户编号,资料编号)
- 用户-评论
用户(用户编号,用户姓名,用户性别,用户年龄,用户邮箱,用户账号,登陆密码)
评论(评论编号,评论者编号,评论者昵称,被评论者编号,被评论者昵称)
发表(用户编号,评论)
- 用户-帖子
用户(用户编号,用户姓名,用户性别,用户年龄,用户邮箱,用户账号,登陆密码)
帖子(帖子编号,帖子标题,发帖日期,发帖人昵称,发帖人编号,帖子内容,帖子点赞数,帖子收藏数,帖子评论数,帖子评论内容)
发表(用户编号,帖子编号)
4. 说明软件重用方案
- 数据库操作的重用:由于本系统需要多次进行数据的增加,删除,修改,查找,对该代码在系统中实施了大量重用
- UI设计代码的重用:在页面中多次对页面中的框架进行重用
- 文档及过程的重用:在开发的整体过程中,软件文档以及软件过程在开发过程中多次使用,有效利用软件文档和软件过程可以极大地提高开发效率。
5. 设计关键类的重点服务
- User类:包含普通用户以及管理员用户,用以表示用户信息
- dataBase类:包含了数据库的连接,以及其增删改查的操作
- 用户功能类:包含了用户各个动作的函数
- 数据类:包含上传的资料、发表的评论、发表的帖子等基本类
6. 仓库截图
任务4的完成情况如下:
1. 各项任务的时间花费情况:
2. 结构化软件分析与设计、面向对象分析与设计:
-
结构化方法
-
定义:结构化方法是一种传统的软件开发方法,它是由结构化分析、结构化设计和结构化程序设计三部分有机组合而成的。
-
基本思想:把一个复杂问题的求解过程分阶段进行,而且这种分解是自顶向下,逐层分解,使得每个阶段处理的问题都控制在人们容易理解和处理的范围内。
-
-
面向对象方法
-
定义:面向对象方法是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,是建立在“对象”概念基础上的方法学。对象是由数据和容许的操作组成的封装体,与客观实体有直接对应关系,一个对象类定义了具有相似性质的一组对象。
-
基本思想:尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界、解决问题的方法与过程, 也就是使描述问题的问题空间与实现解法的求解空间在结构上尽可能一致。
-
-
陈述结构化软件分析与设计、面向对象分析与设计两类软件开发技术的异同点:
-
基本单位不同
-
结构化方法的基本单位是模块。
-
面向对象方法的基本单位是对象。
-
-
理念不同
-
对于结构化方法,一切系统都是由信息流构成的。信息流中既包含了一些必要的数据变换,每个信息流都有自己的起点和归宿,又包含了驱动信息流动的数据操作。整个系统可以被看作是通过数据操作把流动的信息流来组织起来的模型。所以在结构化方法中,信息流的概念很重要,不论是在分析还是在设计时我们都需要小心翼翼地对待信息流动的方法,源头,终点。
-
面向对象方法中,一切系统都是由对象构成的。对象之间的相互作用和相互影响构成了各式各样复杂多变的系统。
-
-
分析方法不同
-
结构化分析方法是一种面向数据流而基于功能分解的分析方法, 在该阶段主要通过采用数据流程图、编制数据字典等工具, 描述边界和数据处理过程的关系, 力求寻找功能及功能之间的说明。
-
面向对象分析是把对问题域和系统的认识理解, 正确地抽象为规范的对象( 包括类、继承层次) 和消息传递联系, 最终建立起问题域的简洁、精确、可理解的面向对象模型, 为后续的面向对象设计和面向对象编程提供指导。面向对象分析通常建立三种模型: 对象模型、动态模型、功能模型。其中, 对象模型描述了系统的静态结构,确定类的名称和类间的关系;动态模型表示瞬时的、行为化的系统的“ 控制”性质, 规定了对象模型中的对象的合法变化序列;功能模型表明了系统中数据之间的依赖关系, 以及有关数据的处理功能。
-
可维护性不同
-
结构化的设计关注的是事件的发生,所以更像是面向过程程序设计的风格,比如说C程序的风格。
-
面向对象的设计关注的是对象的功能,比如说Java程序的风格。
-
-
编程思想
-
结构化方法的编程思想是自上而下,逐步求精,按系统的功能进行模块化设计,将一个复杂和完整的系统按功能分解成小的模块,模块内由顺序、分支和循环等基本控制结构组成,各模块的功能由子程序进行实现。
-
面向对象方法通过模拟人类日常的逻辑思维中经常采用的思想方法和原则,将系统中的事物进行抽象、分类、继承和封装。通过抽象出来的类之间的行为关系来确定整个系统的联系,并在系统中实例化需要的对象,在系统的设计中尽可能地运用人类的思维方式。与结构化相比面向对象更符合人们对事物和解决问题的过程和思维方法。
-
-
3. 完成本次作业的感受和体会:
- 团队实施Visio建模工具学习:在完成此次作业的过程中,我们团队又学到了新的建模工具Visio,发现它是一个很好上手的工具,我们用visio完成此次作业的作图,有用例图、UML模型等,在这个过程中,我们团队进行了讨论,然后对做的图进行了几次修改,最后的出了终结版,我们团队对visio建模工具的评价很高,它在学习软件工程已经完成一个项目的过程起着很大的作用。
- 项目需求分析建模:在这个过程中,我们在实验七的基础上对我们的需求规格说明以及系统设计说明书进行了修改,因为此次作业要用面向对象的设计方法,所以我们小组对这两个方法进行了对比,最后做出了新的版本。整个过程我们团队在商量好的基础下进行即分工来完成的,然后有疑问就发群里,大家一起解决,充分体会到了团队的分工和协作。
- 软件系统设计:在这一方面我们在实验七的基础上将项目运用了OOD的方法进行了设计,并且选择了适合的设计模式,对我们的项目进行的设计,以及类的一些划分等,而采用面向对象的方法对我们的项目进行了软件系统说明书的撰写发现这样方法更适用于软件工程的实施。