卡其脱离太 实验八 团队作业5—团队项目需求建模与系统设计(2)

项目 内容
课程班级博客链接
班级博客
这个作业要求链接
作业要求
团队名称
卡其脱离太
团队成员分工描述 周学铭:使用Visio,应用面向对象分析方法(OOA),完善团队项目的《软件需求规格说明书》
常雅伦:完成任务一互评任务并撰写博文
谢林江:完成任务三
何飞 :以任务2的成果为基础,使用Visio,应用面向对象设计(OOD)方法,撰写《团队项目软件系统设计说明书》
团队的课程学习目标 (1)学习使用UML建模工具Visio
(2)学习掌握面向对象需求分析建模技术
(3)理解和掌握面向对象软件系统设计原理、设计过程和技术。
这个作业在哪些方面帮助团队实现学习目标 (1)团队协作学习使用UML建模工具Visio
(2)学习了功能的定位和优先级
(3)通过学习OOA和OOD撰写需求分析说明书和软件设计说明书
团队博客链接
团队博客
团队项目Github仓库地址链接
仓库地址

一、实验目的与要求

(1)学习使用UML建模工具Visio;

(2)掌握面向对象需求分析建模技术;

(3)理解和掌握面向对象软件系统设计原理、设计过程和技术。

二、实验内容与步骤

任务1:按团队项目互评名单,对互评方《实验七 项目需求分析建模与系统设计(1)》的项目成果进行评价,具体要求如下:

(1)阅读互评团队项目博文作业并进行评论,评论要点包括:博文结构、博文内容、任务分工与时间耗费。将以上评论内容发布到互评团队博客评论区。

(2)下载并阅读互评方团队项目资料。

评分要点 内容
结对方团队博客链接
博客链接
结对方Github项目仓库链接
仓库链接
博客评论 一.从博文结构来看:
博文结构清晰,版式整洁,对于博客的主体内容都由图片组成,给人以直观的感觉,具有阅读体验。但github上传的说明书,排版还不够美观。
二.从博文内容来看:博文内容充实。
1. 通过任务二的完成,我们可以看出该小组在学习ProcessOn这款软件时,非常认真。
2. 对于任务三的完成,该小组绘制的系统数据流图、编写数据字典(ER图)以及软件系统状态图等等很完善,撰写的团队项目系统需求规格说明书也很详细,可以看出该小组查找了很多资料。
三.从任务分工与时间耗费来看:
任务分工明确,时间安排合理,并且在各项任务中均可以按时完成甚至提前完成。
互评团队作业评分成绩
132

  • 阅读互评方团队项目资料:
系统设计说明书
需求规格说明书

评价
系统设计说明书排版较为杂乱,但其内容充实。

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

  • 团队项目软件需求规格说明书已成功提交到Github项目仓库

  • 需求规格说明书

    • 封面
封面及目录

  • 用例图
用例图 文字说明
对于读者用户,他有五种操作:单条数据录入,批量数据录入,查看操作记录,新闻分类结果输出,数据可视化结果输出。
对于单条数据录入,用户可以从电脑本地选择文件,也可以在文本框和里输入新闻数据。
对于批量数据录入,则需要从本地选择文件。
对于查看操作记录,则是将用户的每一次操作作为一条数据保存在数据库中,然后再在页面中可视化输出。
新闻分类结果输出则是将新闻数据作为测试数据传入模型中,然后得到输出结果,包括准确率和分类结果。
数据可视化结果输出则是采用折线表等图表来输出结果。
对于管理员用户,他同样有五种操作,比如:录入训练数据,模型训练,录入测试数据,模型测试,数据可视化结果输出。
管理员用户主要是用来利用算法训练模型,提高模型准确率的。
其中录入的数据分为两种:训练数据和测试数据,模型根据算法训练集的结果来进行训练;模型训练完成后再录入测试数据,比对准确率。
最后再将数据可视化结果输出。

  • 象限图
象限图

第一象限(必要功能、杀手功能):新闻文本分类。
第二象限(必要功能、外围功能):本地文件读入、数据库存储。
第三象限(辅助功能、外围功能):操作记录。
第四象限(辅助功能、杀手功能):可视化输出。


  • UML模型:
UML模型

  • WBS
WBS
各环节所需要的时间

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

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

  • C/S结构
    • C/S (Client/Server)结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server 应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。传统的C/S体系结构虽然采用的是开放模式,但这只是系统开发一级的开放性,在特定的应用中无论是Client端还是Server端都还需要特定的软件支持。由于没能提供用户真正期望的开放环境,C/S结构的软件需要针对不同的操作系统系统开发不同版本的软件,加之产品的更新换代十分快,已经很难适应百台电脑以上局域网用户同时使用。而且代价高, 效率低。

(2)什么是B/S结构?

  • C/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架构管理软件更是方便、快捷、高效。
  • C/S和B/S之比较

C/S和B/S是当今世界开发模式技术架构的两大主流技术。C/S是美国 Borland公司最早研发,B/S是美国微软公司研发。目前,这两项技术以被世界各国所掌握,国内公司以C/S和B/S技术开发出产品也很多。这两种技术都有自己一定的市场份额和客户群,各家企业都说自己的管理软件架构技术功能强大、先进、方便,都能举出各自的客户群体,都有一大群文人墨客为自己摇旗呐喊,广告满天飞,可谓仁者见仁,智者见智。

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

  • MVC设计模式

    • 模型-视图-控制器(MVC模式)是一种非常经典的软件架构模式,在UI框架和UI设计思路中扮演着非常重要的角色。从设计模式的角度来看,MVC模式是一种复合模式,它将多个设计模式在一种解决方案中结合起来,用来解决许多设计问题。MVC模式把用户界面交互分拆到不同的三种角色中,使应用程序被分成三个核心部件:Model(模型)、View(视图)、Control(控制器)。它们各自处理自己的任务:

    • 模型:模型持有所有的数据、状态和程序逻辑。模型独立于视图和控制器。

    • 视图:用来呈现模型。视图通常直接从模型中取得它需要显示的状态与数据。对于相同的信息可以有多个不同的显示形式或视图。

    • 控制器:位于视图和模型中间,负责接受用户的输入,将输入进行解析并反馈给模型,通常一个视图具有一个控制器。

  • MVC模式将它们分离以提高系统的灵活性和复用性,不使用MVC模式,用户界面设计往往将这些对象混在一起。MVC模式实现了模型和视图的分离,这带来了几个好处。

    • 一个模型提供不同的多个视图表现形式,也能够为一个模型创建新的视图而无须重写模型。一旦模型的数据发生变化,模型将通知有关的视图,每个视图相应地刷新自己。

    • 模型可复用。因为模型是独立于视图的,所以可以把一个模型独立地移植到新的平台工作。

    • 提高开发效率。在开发界面显示部分时,你仅仅需要考虑的是如何布局一个好的用户界面;开发模型时,你仅仅要考虑的是业务逻辑和数据维护,这样能使开发者专注于某一方面的开发,提高开发效率。

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

  • 团队项目软件系统设计说明书已成功提交到Github项目仓库

  • 设计模式
    本系统中使用MVC的设计模式,我们先对于MVC的设计模式进行简单的介绍。MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。M:Model 模型,负责数据库操作,以及业务逻辑的实现 ,是mvc的精华之所在;V:View 视图,负责用户与系统之间的交互,以及数据的渲染 ;C:Controller 控制器,程序的入口,负责响应用户操作 并调用相对应的业务逻辑模块 完成整个功能需求。
    在本系统中,我们前后端都使用MVC的设计模式。在前端,使用vue的设计,vue的设计遵循MVVM的设计模式,MVVM是MVC的一种增强版。MVVM是Model-View-ViewModel的简写。它本质上就是MVC 的改进版。MVVM 就是将其中的View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开。当然这些事 ViewModel 已经帮我们做了,它可以取出 Model 的数据同时帮忙处理 View 中由于需要展示内容而涉及的业务逻辑。微软的WPF带来了新的技术体验,如Silverlight、音频、视频、3D、动画……,这导致了软件UI层更加细节化、可定制化。同时,在技术层面,WPF也带来了 诸如Binding、Dependency Property、Routed Events、Command、DataTemplate、ControlTemplate等新特性。MVVM(Model-View-ViewModel)框架的由来便是MVP(Model-View-Presenter)模式与WPF结合的应用方式时发展演变过来的一种新型架构框架。它立足于原有MVP框架并且把WPF的新特性糅合进去,以应对客户日益复杂的需求变化。后端也采用MVC的设计模式。Model层进行数据库的交互,进行数据的储存和读写,View层进行数据的渲染,对数据库中取到的数据返回给前端,前端解析并显示这些数据。Controller层主要处理路由转发和通用的AJAX请求,使得前端发给后端的数据都能够被有效的存储和利用。

  • 数据库逻辑结构:


  1. 普通文件表
字段名 数据类型 长度 主键 非空 描述
file_id int 11 主键(文件编号)
file_name varchar 30 文件名
file_size int 11 文件大小
file_address varchar 30 文件地址
file_content text 500 文件内容
  1. 新闻文件表
字段名 数据类型 长度 主键 非空 描述
news_id int 11 主键(新闻编号)
news_title varchar 30 新闻标题
news_content text 500 新闻正文
news_category_right varchar 50 新闻类别(正确)
  1. 分析结果表
字段名 数据类型 长度 主键 非空 描述
news_id int 11 主键
news_category_analysis varchar 30 新闻类别(分析)
news_category_right varchar 30 新闻类别(正确)
  1. 分析表
字段名 数据类型 长度 主键 非空 描述
news_id int 11 主键(新闻编号)
accuracy int 11 正确率
analysis_time time 分析时间
  1. 操作表结构
字段名 数据类型 长度 主键 非空 描述
operation_id int 11 主键(操作编号)
operation_time time 操作时间
operation_action varchar 30 操作动作

  • 软件重用方案

    • dao层
      在dao层,即数据层,定义接口,定义实现类,实现类实现与数据库进行操作的一些方法,向服务层提供调用的机制。在服务层,提供数据层的对象,在服务层设置接口,设置实现类,通过dao层对象调用dao层方法,实现对数据库的操作,在controller层提供两种,一种是处理路由,另外一种处理前端返回的数据。处理路由的部分,只进行路由的转发就可以了,处理ajax的地方进行读取上传的数据,参数,通过注入的服务层的对象调用service层方法,这样service层再调用dao层方法,实现三级调用,这样就可以实现数据的存储和显示。
      这套方案中,代码重用主要体现再算法这一块和数据库的存储这一块。
    • 算法部分
      对于算法部分,我们打算封装一个工具类,向外提供参数并进行调用,内部读取外部传入的数据,对于传入的数据进行计算,将计算的结果进行返回,这样前端便可以取到数据库中的数据。由于整个计算的过程是一个不断进行的过程,因此这一部分代码通过封装的方式被底层的代码经常调用。
    • 数据存储部分
      对于数据库的存储这一块,也可以提炼出一些核心的代码,数据库的存储是经常发生的,为了避免经常打开连接却没有关闭连接,所以需要对这一部分进行封装,使得数据库的访问变得安全。
  • 关键类的重点服务
    主要是Util类,这个类封装了算法,整个算法的核心代码都存在在这里,这里只需要传入响应的参数,用户不需要知道这里是如何进行运算的,内部会封装好一切,将运算的结果返回给客户,客户显示这一部分的数据即可。同时,这个类还会封装一些特殊的方法,比如文件的存储和解析,文件上传到数据库中等方法,都会在这里进行封装。使得用户操作起来更加顺手和方便。


  • 团队项目软件系统设计说明书截图
目录
总体设计
分析方法
类图及设计模式
重用方法及关键类的服务重点

四、任务总结

1.记录完成《实验七 团队作业4:团队项目需求建模与系统设计》各项任务实际花费的时间和分工。

  • 花费时间
任务 时间
任务一 30min
任务二 240min
任务三 60min
任务四 300min
任务五 120min
  • 结构化软件分析与设计、面向对象分析与设计两类软件开发技术的异同

    • 结构化软件分析与设计的定义
      结构化方法采用的是自顶向下、逐步求精的设计方法,各个模块通过“顺序、选择、循环”的控制结构进行连接,并且只有一个入口、一个出口。

    • 结构化软件分析与设计的分析设计方法
      结构化分析法是基于问题分解与抽象的观点,将任何信息处理过程看作是将要输入数据变换成所要求的输出信息的装置,因此数据流分析是需求分析的出发点。结构化分析方法采用“自顶向下,由外及里,逐步求精的策略对问题进行分析。具体做法是首先将整个系统看作一个加工(信息处理的装置,是一个黑匣子),标识出系统边界和所有的输入/输出数据流。然后再对加工内部进行细化分解,将复杂功能分解为若干简单功能的有机结合,并逐步补充细节描述。结构化分析使用数据流图、加工说明和数据字典等来构造系统的需求分析模型。

    • 面向对象分析与设计的定义
      面向对象方法解决问题的思路是从现实世界中的客观对象(如人和事物)入手,尽量运用人类的自然思维方式从多方面来构造软件系统,这与传统的开发方法构造系统的思想是不一一样的。面向对象方法是一种运用对象、类、继承、聚合、关联、消息和封装等概念和原则来构造软件系统的开发方法。

    • 面向对象分析与设计的分析设计方法
      面向对象分析强调用对象的概念对问题域中的事物进行完整的描述,刻画事物的静态特征和行为特征,同时也要如实的反映问题域中的事物之间的各种关系,包括分类关系、组装关系等静态关系以及动态关系。面向对象分析主要有五个步骤:标识对象(类);标识结构;标识主题;定义属性;定义服务。

面向对象分析模型
面向对象分析过程模型
  • 比较
    结构化分析设计主要是将现实世界的问题转化为计算机可以理解的对数据的加工处理,是面向过程的;而面向对象分析设计则是将现实世界的问题直接映射成对象及其接口,面向问题域,符合人们的思维习惯。

  • 任务分工

姓名 分工
周学铭 使用Visio,应用面向对象分析方法(OOA),完善团队项目的《软件需求规格说明书》
何飞 以任务2的成果为基础,使用Visio,应用面向对象设计(OOD)方法,撰写《团队项目软件系统设计说明书》
谢林江 查阅资料,完成任务三
常雅伦 完成任务一互评任务并撰写博文

2.从团队分工和协作学习角度,陈述团队实施项目需求分析建模、软件系统设计等学习活动的心得。

  • 周学铭

此次实验由于需要使用UML建模工具Visio,所以我们都各自学习了解了该工具,每位成员都就自己的使用心得进行了阐述,并且就该工具进行了讨论。在后续任务中,我们使用Visio,应用面向对象分析方法(OOA),在上次实验的基础上完善了团队项目的《软件需求规格说明书》。在软件系统设计过程中,我们使用Visio,应用面向对象设计(OOD)方法,撰写了《软件系统设计说明书》。在此次团队学习中,还是一如既往感受到团队协作的力量,争取在大家都认为的艰难阶段-编码阶段能更好的合作。

  • 常雅伦

该实验我们组内分工明确,各司其职。一开始学习使用UML建模工具Visio到后来编写团队项目需求说明书我们都有参与讨论,在进行整体设计和数据库中表的关系那部分时,我们也是商量和讨论之后确定了最终设计。本次团队协作的很融洽,在协作过程中,出现问题能够及时交流,互帮互助。

  • 谢林江

这次实验,各位成员之间分工明确,团结协作,共同掌握了使用Visio这一个建模工具,通过对上次实验的总结,对软件系统的总体结构,模块设计和设计模式等方面有了更深刻的理解,为后面的工作打下了更好的基础。并且在团队间的合作更有默契也有了更高的效率,希望以后也会越来越合作愉快。

  • 何飞

本次实验主要学习了建模工具以及面向对象的建模分析,我们在老师的推荐下学习了UML建模工具Visio的使用,并且学习了面向对象设计(OOD)方法和面向对象分析方法(OOA)。在本次任务分工中,我主要负责的是的撰写软件系统设计说明书,在撰写初期也有许多疑问,比如它的具体格式、需要包含哪些模块等,但这些问题都通过团队成员们的讨论及上网搜索找到了答案。通过此次的分析建模以及需求说明、系统设计说明的撰写,相信对我们之后的程序撰写大有益处。

posted @ 2021-06-08 22:33  卡其脱离太12138  阅读(134)  评论(1编辑  收藏  举报