202202 发际线跟我作队 实验八 团队作业5:团队项目需求建模与系统设计(2)

一、实验目的与要求

项目
内容
课程班级博客链接 https://edu.cnblogs.com/campus/xbsf/2019nwnucs
本次作业要求链接 https://edu.cnblogs.com/campus/xbsf/2019nwnucs/homework/12662
团队名称 发际线跟我作队
团队成员分工描述 (1)毛玉贤:博客撰写、WBS、UML、软件总体结构设计、重点类服务、说明书
(2)蒋敏敏:示例图、数据库逻辑设计、需求规格说明书
(3)张颖:四象限、任务二、结构设计与面向对象设计的异同、系统设计说明书
团队的课程学习目标 (1)学习使用UML建模工具Visio;
(2)掌握面向对象需求分析建模技术;
(3)理解和掌握面向对象软件系统设计原理、设计过程和技术;
这个作业在哪些方面
助团队实现学习目标
(1)团队成员线上交流学习,使得我们对于讨论的问题可以清晰的抒发各自的观点;
(2)成员彼此讲解自己对所学内容的理解,解答他人疑惑,提升了团队对基本概念的理解,加深印象;
(3)团队一起学习用Visio帮助我们更快的掌握软件的使用以及各种类型图形的绘制;
团队博客链接 发际线跟我作队
团队项目Github仓库链接 传送门

二、实验内容与步骤

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

1.1 下载Visio

  • 毛玉贤

  • 蒋敏敏

  • 张颖

1.2 面向对象分析方法(OOA)学

  • 基本原则:开发软件的方法与过程尽可能接近人类认识世界解决问题的方法过程,即使描述问题的问题空间(也称为问题域)与实现解法的解空间(也称为求解域)在结构上尽可能一致;
  • 核心概念对象的特点
    • 对象=数据+数据上的操作;
    • 对象与传统数据的本质区别:对象不是被动的等待外界对它施加操作,相反,它通常发消息主动请求执行他的某些操作,处理它的私有数据,但不能从对象外部直接对他的私有数据进行操作;
  • 四个要点
    • 客观世界由对象组成
    • 所有对象都划分为各种对象类(Class);
    • 若干对象类组成一个层次结构的系统(类等级);
    • 对象彼此间仅通过传递消息互相联系;

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

  • 用例图:用例图(use case diagrams)是指由参与者(actor)、用例(use case)、系统边界以及他们之间的的关系构成的用于描述系统功能的静态视图。

    • 例图用来描述系统的需求,从用户的角度来描述系统的功能,强调谁在使用系统,系统实现了哪些功能,总的来说,用例图就是描述用户的需求和系统的功能,从外部用户的角度来描述系统的功能。
    • 基本元素
      • ①用例(use case):功能的描述,参与者要系统做什么,例如:机房中的查看信息,结账,修改信息;
      • ②角色(actor):是指系统以外的,在使用系统的过程中与系统发生交互的角色,可以是人也可以是事或者其他系统,例如机房中的一般用户、操作员和管理员;
      • ③关系:角色之间、用例之间、用例和角色之间
  • 总用例图

  • 管理员
    • 系统管理员首先可以注册登录,系统只有一个超级管理员,管理员可以有多个,超级管理员可以进行用户管理,可给用户授权成为管理员,文献资源也要由管理员审核后才能上传。
  • 用户
  • 登录模块:用户使用电话或邮箱注册,注册完成后登录,然后服务端对用户名和密码进行验证,验证通过即登录成功,进入首页。用户可以修改密码,修改个人信息等。
  • 论坛模块:用户发帖时可以设置公开或私密,公开的帖子,其他用户可以看到,也可以点赞、评论和收藏,用户间可以相互交流学习,提供了一个资源丰富的社区平台。
  • 资源模块:资源模块,用户可以在此浏览所有通过审核的资源,包括数据集,代码以及相关文献,同时用户也可以上传、下载、删除自己的相关资源。
  • 题库和笔记模块:用户可以根据自己的喜好选择题库,进行练习,每道题都会有相应的解析,还可以记录笔记,将自己对这部分知识点的理解记录下来,有丰富的学习资料,可以帮助用户理解的更深入并更好地掌握。
  • 个人信息模块:用户可以修改一些自己的个人信息,并对联系人进行拉黑操作,对自己的个人信息和发布的帖子设置权限,还可以查看笔记,个人热度,自己收藏的帖子和关注的博主等。
  • 消息模块:用户可选择接收某人的信息,显示未读信息并可选择一键已读或一个个地点开查看,对已接收的邮件进行删除操作。

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

  • 功能分析四象限介绍
    • 一个团队的资源有限,要保证投入得到较大的回报,就可以考虑用四个象限来划分产品功能的特点,以便更准确地、理性地了解我们产品的核心价值,从而优化投资策略。要把用户从竞争对手那里吸引过来,团队自己的产品要有一个差异化的焦点,在这个焦点上,我们的团队能做得比别人好10倍,高一个数量级,这种功能又叫杀手功能,其他功能也很重要,但是它们都是(相对来说)外围的。产品也许有很多功能,但是应该只有一两个功能是杀手级的。于是我们有了两种不同类型的功能:杀手功能(Core)/外围功能(Context)
    • 除此之外,我们的竞争对手和用户已经决定了一些此类产品必须要满足的需求,不能满足这些需求,产品就入不了用户和评论员的法眼,当然,还有许多功能是辅助性的。这样,我们又得到另一种划分:必要需求(Mission Critical)/辅助需求(Enabling)
    • 对四个象限的不同建议:
      • 第一象限:建议采取“差异化”的办法,全力以赴投资在这个领域
      • 第二象限:建议采取“抵消”的办法,快速地达到“和别人差不多”,对于大家都特别着重的功能,采取“优化”的办法,达到行业最佳
      • 第三象限:建议采取“维持”的办法,以最低代价维持测功能
      • 第四象限:建议采取“维持”的办法,或者现在“不做”,等待好的时机或者小规模实验
  • 本团队项目功能分析的四个象限
项目
内容
杀手功能(Core)/外围功能(Context) (1)专门研究背包问题的系统;
(2)可上传资源,有知识论坛,可发布帖子;
(3)拥有独家笔记功能,练习,可题目搜索;
(4)可选择管理员注册;
(5)首页查看热门帖子、文档等等;
外围功能 界面美观,在各个平台都能运行,广告少;
必要要求 用户及管理员的账户安全系数高、资源的准确度高;
辅助要求 操作便捷,编辑资料、更换皮肤、消息通知;

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

  • UML中的图可以分成两大类:结构图 、行为图;
    • UML结构图:表示系统的静态方面,描述系统的主要结构因此而稳定的那部分,静态结构图主要包括类图、对象图、组件图、部署图;
    • UML行为图:属于系统的动态部分,另一部分是系统的结构图。行为图捕捉系统的静态方面。主要包括:用例图、时序图、协作图、状态图、活动图;
  • 对象模型:对用例模型进行分析,把系统分解成互相协作的分析类,通过类图或对象图描述对象、对象的属性、对象间的关系,是系统的静态模型;
  • 对1.3得出的用例模型进行分析,将系统分解为互相协作的分析类,作出类图得出系统的静态模型如下;
  • 系统类图

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

  • 完善项目的WBS

  • 各项任务所需时间


1.7 系统需求规格说明书V1.2

1.8 上传需求文档说明书到项目仓库截图;

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

2.1 什么是C/S结构?

  • C是英文单词“Client”的首字母,即客户端的意思,C/S就是“Client/Server”的缩写,即“客户端/服务器”模式;

  • C/S结构是一种软件系统体系结构,也是生活中很常见的。这种结构是将需要处理的业务合理地分配到客户端和服务器端,这样可以大大降低通信成本,但是升级维护相对困难。比如我们手机中安装的微信、qq、王者荣耀等应用程序就是C/S结构;

2.2 什么是B/S结构?

  • B是英文单词“Browser”的首字母,即浏览器的意思;S是英文单词“Server”的首字母,即服务器的意思。B/S就是“Browser/Server”的缩写,即“浏览器/服务器”模式;

  • B/S结构是随着互联网的发展,web出现后兴起的一种网络结构模式。这种模式统一了客户端,让核心的业务处理在服务端完成。只需要在自己电脑或手机上安装一个浏览器,就可以通过web Server与数据库进行数据交互;

  • 在手机或电脑上用浏览器上百度搜索、看新闻等就是在使用“B/S”结构进行数据交互;

  • 这种“B/S”结构有很多好处,维护和升级方式更简单,客户端是浏览器,基本不需要维护,只需要维护升级服务器端就可以。

2.3 什么是MVC设计模式?

  • MVC设计模式简介

  • 模型-视图-控制器(MVC模式)是一种非常经典的软件架构模式,在UI框架和UI设计思路中扮演着非常重要的角色。从设计模式的角度来看,MVC模式是一种复合模式,它将多个设计模式在一种解决方案中结合起来,用来解决许多设计问题。MVC模式把用户界面交互分拆到不同的三种角色中,使应用程序被分成三个核心部件:Model(模型)、View(视图)、Control(控制器)。它们各自处理自己的任务:
    • 模型:模型持有所有的数据、状态和程序逻辑。模型独立于视图和控制器。
    • 视图:用来呈现模型。视图通常直接从模型中取得它需要显示的状态与数据。对于相同的信息可以有多个不同的显示形式或视图。
    • 控制器:位于视图和模型中间,负责接受用户的输入,将输入进行解析并反馈给模型,通常一个视图具有一个控制器。

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

3.1 采用适合的模式设计软件系统总体结构;

  • 在任务二中我们了解了MVC设计模式,该处采用此模式来设计软件系统总体结构,如下图;

3.2 设计软件系统数据库逻辑结构;

3.2.1 完善后的ER图如下

3.2.2 ER图向关系模型转换
  • 根据E-R图可以将系统中的概念模型转换为具体的表(即关系)结构,共分为7个关系,详细信息如下所示:
    • 用户(用户编号、姓名、年龄、生日、城市、学校、手机号、邮箱、简介、密码)
    • 资源(用户编号、资源编号、资源类别、上传时间、更新时间、审核状态)
    • 管理员(工号、姓名、性别、密码)
    • 笔记(用户编号、笔记编号、标题、更新时间,创建时间)
    • 题库(题目编号、题目名称、通过率、难度、类型)
    • 邮箱(用户编号、邮件编号、发件人姓名、接收时间、邮件标题、接收状态)
    • 帖子(帖子编号、标题、发表时间、发表用户、评论量、点赞量、收藏量)
3.2.3 关系模式

3.3 说明软件重用方案(详见文档);

重用
说明
源代码 (1)这是最简单也是最常见的重用形式,但由于软件系统的复杂性,很难大规模地重用已有源代码。
(2)本软件重用可使用其中的一部分用于其他项目开发,有前端页面代码和数据交互部分的代码可进行重用。
架构 (1)架构重用也很常见,随着软件架构风格和设计模式的推广和应用,架构重用已经对软件开发产生了重大的影响。
(2)在该软件基础上,可以继承其父类和子类,具有较高的可继承性,也可以用合成关系实现,软件代码模块化独立性较高,每个模块实现特定的功能,可以将其合成实现符合新软件要求的功能。
应用框架 (1)随着软件技术的发展,应用框架的重用变得越来越普遍,很多成熟的软件公司都建立了自己的开发框架。
(2)在开源社区中,世界各地的技术爱好者也在不断地推出应用了各种新技术的开发框架,该软件使用面向对象编程方法,可直接作为新软件的框架使用。
文档及过程 (1)软件文档和软件过程也是软件开发中不可或缺的元素,有效地重用这些文档和过程也有助于提高开发效率和软件质量 、降低开发成本。该软件附有软件设计说明书和系统需求规格说明书,具有较高的可阅读性,帮助软件开发人员理解,更好的进行改进和完善软件功能。

3.4 设计关键类的重点服务。

  • 用户类
    • 用户类主要包括普通用户类以及管理员类,两者共同继承了用户类的属性以及基本操作(注册、登录、修改密码等)。普通用户类着重设计对一些功能的基本操作以及对个人信息(如性别、年龄、简介、电话、城市等等)的修改操作,管理员类着重设计对系统资源、界面的审核以及管理操作;
  • 控制类
    • 控制类着重设计的是在接收用户的请求后,根据用户所要执行的动作(各类数据的增、删、改、查等操作),执行相关数据库方面的操作,进行数据的处理,并将最新数据返回到视图的界面当中显示。
  • 信息类
    • 信息类着重设计用户对资源的管理(上传、下载、删除等操作),该类是背包知识社区系统中非常重要的一类,该处的信息不仅仅包括系统中特指的资源、文档等,还包括笔记、发布的帖子、所做的习题、接收、发送的邮件等信息;

3.5 软件系统设计说明书V1.2

3.6 上传到团队项目Github仓库截图

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

4.1 发布博客到班级作业、github项目总体截图

  • 博客作业截图

4.2 记录完成《实验八 团队作业5:团队项目需求建模与系统设计(2)》各项任务实际花费的时间和分工;

任务
步骤(时间min)
总计(min)
任务一 (1)设计用例图表示项目功能需求;(70)
(2)功能分析的四个象限;(66)
(3)选择适当的UML模型,建立问题域对象模型;(50)
(4)完善项目的WBS;(45)
(5)添加新形容到《软件需求规格说明书》,并上传到Github;(20)
251
任务二 (1)查阅资料,总结三个问题;(35) 35
任务三 (1)设计软件系统总体结构;(67)
(2)设计软件系统数据库逻辑结构;(35)
(3)说明软件重用方案;(40)
(4)设计关键类的重点服务;(30)
(5)编制《XXX软件设计说明书1.2》上传到团队项目Github仓库;(8)
(6)回答:软件是如何实现用户需求的;(10)
190
任务四 (1)完成博客;(70)
(2)记录时间;(15)
(3)对比陈述结构化软件分析与设计、面向对象分析与设计两类软件开发技术的异同;(65)
(4)心得体会;(12)
162

4.3 结合实验七、实验八的学习体验,对比陈述结构化软件分析与设计、面向对象分析与设计两类软件开发技术的异同;

  • 在传统的软件开发过程中多采用结构化技术完成软件开发的⼀系列工作,但这种⽅法并不适应大型软件产品的开发,而随着硬件发展,对于⼤型软件产品的需求又逐步提高,于是面向对象方法就应运而生。通过实验七、实验八的学习体验,我认为二者不同点主要有以下几个方面:
方面
结构化
面向对象
开发思想 (1)结构化⽅法学的思想是⾯向过程,⾃上⽽下、逐步地分解问题,把⼀个⼤问题分解成多个⼩问题,⼩问题再分解成多个更⼩的问题,直到保证底层的问题⾜够简单,容易解决; (1)面向对象⽅法学的思想是面向对象,以对象为中⼼,把数据封装在对象内部成为对象的属性,把⾯向过程的函数转为对象的⾏为⽅法,把对象抽象成为类,⽤以描述和设计、开发软件系统;
基本概念 (1)结构化⽅法学又被称⽣命周期⽅法学或传统⽅法学。软件从设计者诞⽣开发想法起始,到没有⼈⽤、被废弃结束,称为软件的⽣命周期;
(2)传统的软件开发⽅法中,软件的⽣存周期分为三个⼤的阶段,即软件定义阶段,开发阶段,维护阶段;
(3)详细又可以分为问题定义、可⾏性分析、需求分析、系统设计、系统实现、后期维护等阶段;
(1)面向对象⽅法学是⼀种把面向对象程序设计语⾔的思想应⽤于软件开发过程的⽅法;
(2)面向对象⽅法学由面向对象分析、面向对象设计、面向对象程序设计组成;
(3)面向对象开发是按照⼈的逻辑概念,思维⽅式去解决问题,使软件开发时的代码重用性和可靠性⼤⼤提⾼;
开发过程 (1)规划阶段的内容主要为明确软件的发展规划,确定用户软件需求,并制定软件开发的计划;
(2)分析阶段的内容有解析软件所对应的工作任务,工作任务中的数据和数据流图,软件的功能所需要的技术支持和选择;
(3)设计阶段的工作有设计系统总体的结构,相关硬件设施的建设,相关环境的建⽴与进⼀步确定和数据库、数据结构设计等;
(4)实施阶段的内容为按照上述阶段的成果,协调技术⼈员开始编程同时对软件编程开发⼈员展开培训,测试等相关任务;
(5) 运⾏阶段的⼯作包括对软件的运⾏管理,⽤户评价反馈,后台数据监省察。
(1)⾯向对象分析阶段(OOA):这⼀阶段的工作主要有需求分析以及建⽴相关需求模型;
(2)⾯向对象设计阶段(OOD): 主要任务就是将上⼀阶段得到的需求转化为有技术能⼒实现的,成本符合预算的并且能够达到⽤户需求的软件实现⽅案。具体为确定软件的高层架构,确定需要的类以及对外接⼝和实现算法等;
(3)⾯向对象编程阶段(OOP):此阶段的工作内容就是实现上一阶段的设计结果,并在编程的过程中修正出现的设计不到位的部分,实现预计的各项功能;
(4)面向对象测试阶段(OOT):主要⼯作任务就是测试软件各项功能是否存在问题,各项性能如容错性,稳定性,安全性等各项性能,以让软件不断完善。
优劣对比 (1)优点:①传统⽅法学吧软件的大生命周期分成了许多⼩的阶段,每个阶段的任务足够简单,实现相对独立,这样在开发时的分工合作就会比较简单,面对一些相同软件便可以流⽔线式快速高效开发;
②在传统⽅法学软件生命周期每⼀个阶段都会细细划分,⽽且由于传统⽅法学中有着⾮常严格的审查制度,只有审查合格之后才可以进⾏下⼀阶段的开发工作。这可以在⼀定程度上保证软件的质量及其可维护性;
(2)缺点:①由于传统⽅法学的开发只能串⾏开发,所以它的生产效率总体来说会比较低;
②由于其⾯向过程的局限性,软件的重用性很差,程序冗余⽐较严重;
③因为软件代码冗余⽐较多,这就会给后期的开发带来许多困难,软件可维护性低,由此带来的软件容错性、稳定性也比较低;
④开发出的软件无法很好地满足用户需求;
(1)优点:①面向对象⽅法学的开发逻辑和⼈的逻辑思维⽅法相近。开发⼤型软件难度相对降低,易理解,同时也可以更好的满足客户需求;
②可以灵活的修改软件,软件稳定性高,这就使的后期可维护性有了很⼤的提高;
③面向对象的程序可重用性提高,减少程序冗余,代码重复,在⼀定程度上也降低了开发难度,便于维护;
(2)缺点:①由于面向对象对环境的依赖,虽然⼤部分拥有了不错的跨平台性能,但需要依赖环境的支持,而相关的开发软件并不全面充分;
②面向对象开发不⼤适合⽐较⼤型的信息管理系统开发,而如果从整体设计划分不合理的情况下,会导致系统结构有较⼤缺陷,关系⽆法正常分配;
③由于其开发逻辑思维与⼈相似,所以无法从科学的角度管理和优化开发;

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

姓名
感悟
毛玉贤 (1)团队分工:在本次实验中,使用了Visio软件进行类图、示例图的设计,在这个过程中熟悉并掌握了Visio软件的使用,在使用过程中,我们小组一同学习,对于任务的划分合理有度,在示例图的设计、类图的设计、以及系统需求分析、软件系统设计上我们采用由上至下的方法,每个人负责一个模块,任务完成后各个模块进行任务的交接以及情况的说明;这使得我们小组的任务进度上,由于前期的合理规划,所以在任务进度上能够按时执行,顺利完成。
(2)学习角度:在不明白的问题上,我们团队会小组讨论,合力解决问题,这不仅使得每位成员的参与感增强,而且大家都在慢慢掌握这一知识点,提升了团队凝聚力,协作力;在此次实验中,无论是需求分析建模还是软件系统设计都是经过我们小组讨论后,在开始进行具体设计,在讨论的过程中,各自提出的疑问,有时也是其他人所不熟知的,通过这一过程,很好地帮助我们理解实验项目的各个要求;
蒋敏敏 (1)团队分工:本次作业分工明确,PM会根据团队成员擅长的方面进行分工,这样既能减少成员的工作量,也能提高团队成员的兴趣和凝聚力。经过几次的团队协作,我发现我们团队合作起来越来越顺利,不像以前一样磕磕碰碰,团队中各组员关系融洽,一起学习、一起进步,利于团队的发展;
(2)学习角度:在本次作业中,大家共同学习了Visio建模工具,完成了用例图、类图、WBS、数据流图等,还完成了一系列分析建模。本次作业中,我们采用的是面向对象分析方法来进行项目需求分析以及软件系统设计,我从中了解到了其与我们上次采用结构化分析方法有所不同,虽然在理论课上,老师已经向我们介绍了关于它们的理论知识,但是对其了解不深,后通过我们自己的项目,对项目采用不同的方法去分析,让我从中更能了解到它们的异同点,可以说这几次的作业给我带来了许多不一样的体验,收获满满;
张颖 (1)协作学习:我们小组协作学习了Visio建模、项目需求分析建模、软件系统设计等学习活动,通过小组讨论,互相启发,达到优势互补,解决我们个体无法解决的疑难的目的。我们在参与讨论,参与探究的过程中,必须要有自己的见解和前认知能力作为基础,而我们的独立思考是无法由别人或小组来替代的;
(2)团队分工:只有在我们通过团队分工来思考到达一定的程度展开讨论,才有可能出现一点即通、恍然大悟、豁然开朗、原来是这样的效果;也只有在此时展开讨论,才有可能出现观点的碰撞,因此我们参与在协作学习之前,一定要做好团队分工,有独立学习思考的时机。
posted @ 2022-06-14 00:15  发际线跟我作队  阅读(23)  评论(1编辑  收藏  举报