实验八 团队作业5:团队项目需求建模与系统设计(2)
项目 | 内容 |
---|---|
课程班级博客链接 | https://edu.cnblogs.com/campus/xbsf/2018CST |
这个作业要求链接 | <https://www.cnblogs.com/nwnu-daizh/p/14813843.html |
团队名称 | 天马行空队 |
团队成员分工描述 | * 梦涛 :PM,主持项目会议 癿 * 盼:进行文档的编写 * 蕊媛 :进行项目开发 * 钦颖 :进行项目测试 各个阶段大家一起讨论思考 |
团队的课程学习目标 | 1. 学习使用UML建模工具Visio; 2. 掌握面向对象需求分析建模技术; 3.理解和掌握面向对象软件系统设计原理、设计过程和技术。 |
这个作业在哪些方面帮助团队实现学习目标 | 1. 通过团队协作学习,掌握了UML建模工具Visio的使用 2. 通过项目需求分析,完善了项目系统需求规格说明书和项目的WBS 3.择适当的UML模型,建立问题域对象模型 4. 学会了应用面向对象分析方法(OOA) |
团队博客链接 | https://www.cnblogs.com/tianmaxingkongdui |
团队项目Github仓库地址链接 | https://github.com/cuimt/tianma |
任务1:按教师公布团队项目互评名单,对互评方《实验六 项目需求分析与原型设计》的项目成果进行评价
- 结对方博客链接
https://www.cnblogs.com/makabakaxfd/p/14744285.html
- 结对方Github项目仓库链接
https://github.com/makabakaxfd/-
- 符合要求的博客评论
-
结合实验六评分标准,给出互评团队作业评分成绩
-
我们小组成员协商给出的成绩是105分。
任务2:使用Visio,应用面向对象分析方法(OOA),完善团队项目的《软件需求规格说明书》,并将该文档上传到团队项目Github仓库.
(1)采用用例图表示项目功能需求,模型使用规范一致的图形符号和文字描述内容;
- 用例图(User Case)是被称为参与者的来外部用户所能观察到的系统功能的模型图,呈现了一些参与者和一些用例,源以及它们之间的关系,主要用于对系统、子系统或类的功能行为进行建模。将每个系统中的用户分出工作状态的属性和工作内容,方便建模,防止功能重复和多余的类。用例图定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现。
(2)参考《构建之法—现代软件工程》8.5节功能的定位和优先级,给出功能分析的四个象限;
杀手功能:为了吸引用户,我们的产品就需要有自己的亮点,安迪·葛洛夫的10X原则这个亮点要比竞争对手做得好得高出一个数量级,这种功能叫做杀手功能。
外围功能:而其他的那些普通产品都具备的功能,虽然也很重要但是都是外围的,叫做外围功能。
必要需求:用户提出的明确要完成的需求,没有这些需求,用户不能接受这个产品。
辅助需求:辅助性的功能,比如可以有多种主题界面。
- 不同象限的应对方法
有五种应对方法:
维持:以最低成本维持此功能。
抵消:快速地达到“足够好”、“和竞争对手差不多”。
优化:花大力气做到并保持行业最好。
差异化:产生同类产品比不了的功能或优势(我有人无的优势,或者一个数量级以上的优势)。
不做:砍掉一个功能也是一个办法,我们并不一定要做所有的功能。
-
第一象限(杀手功能,必要需求):可以提取图片中的文字。
-
第二象限(外围功能,必要需求):可以上传图片,预览文字提取结果。
-
第三象限(外围功能,辅助需求):管理员查看用户信息。
-
第四象限(杀手功能,辅助需求):可以导出文字提取结果
-
针对每一象限
第一象限:建议采取“差异化”的办法,全力以赴投资在这个领域。
第二象限:建议采取“抵消”的办法,快速地达到“和别人差不多”,对于大家都特别看重的功能,采取“优化”的办法,达到行业最佳。
第三象限:建议采取“维持”的办法,以最低代价维持此功能。
第四象限:建议采取“维持”的办法,或者现在“不做”,等待好的时机,或者小规模实验。
(3)选择适当的UML模型,建立问题域对象模型;
(4)完善项目的WBS,估计各项任务所需时间。
- 团队项目的WBS
WBS即工作分解结构,是以可交付成果为导向对项目要素进行的分组,它归纳和定义了项目的整个工作范围每下降一层代表对项目工作的更详细定义。
WBS总是处于计划过程的中心,也是制定进度计划、资源需求、成本预算、风险管理计划和采购计划等的重要基础;同时也是控制项目变更的重要基础。创建WBS是把项目可交付成果和项目工作分解成较小的,更易于管理的组成部分的过程。项目范围是由WBS定义的,所以WBS也是一个项目的综合工具。
- 系统中类与类之间的关系图:
类图一般在详细设计过程中出现,主要用来描述系统中各个模块中类之间的关系,包括类或者类与接口的继承关系,类之间的依赖、聚合等关系。它还描述每一个类的详细信息,包括变量,和方法。通过类图,就能实际的把系统中的各个类,即对象描述清楚,下一步就是按照这个详细的设计编码了。
(5)完善团队项目的《软件需求规格说明书》,新增目录如下:
(6)完善团队项目的《软件系统设计说明书》,新增目录如下:
- 估计各项任务所需时间
任务 | 所需时间(h) |
---|---|
注册用户模块 | 6 |
注册 | 2 |
登录 | 2 |
上传需要识别的图片 | 2 |
图片处理模块 | 24 |
去除水印 | 3 |
图片格式转换 | 2 |
识别图片信息 | 7 |
提取所需文字信息 | 9 |
结果导出 | 3 |
管理模块 | 6 |
管理用户信息 | 4 |
检查信息提取准确率 | 2 |
任务3:查阅资料,回答以下问题
- 什么是C/S?
C/S(Client/Server)结构,即客户机/服务器结构,是一种软件系统体系结构。通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的两层结构。
传统的C/S体系结构虽然采用的是开放模式,但这只是系统开发一级的开放性,在特定的应用中无论是Client端还是Server端都还需要特定的软件支持。由于没能提供用户真正期望的开放环境,C/S结构的软件需要针对不同的操作系统系统开发不同版本的软件,加之产品的更新换代十分快,已经很难适应百台电脑以上局域网用户同时使用,而且代价高,效率低。
- 什么是B/S结构?
B/S结构(Browser/Server,浏览器/服务器模式),是WEB兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。客户机上只要安装一个浏览器,如Netscape Navigator或Internet Explorer,服务器安装SQL Server、Oracle、MYSQL等数据库。浏览器通过Web Server 同数据库进行数据交互。
- 什么是MVC设计模式?
MVC(Model View Controller)设计模式,是一种软件设计模式,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
MVC是一个框架模式,它强制地使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器,它们各自处理自己的任务。
最典型的MVC就是JSP + servlet + javabean的模式。在这种模式中,Servlet用来处理请求的事务,充当了控制器(Controller)的角色,Servlet负责响应客户对业务逻辑的请求并根据用户的请求行为,决定将哪个JSP页面发送给客户。JSP页面处于表现层,也就是视图(View)的角色。JavaBean则负责数据的处理,也就是模型(Model)的角色。
任务4:以任务2的成果为基础,使用Visio,应用面向对象设计(OOD)方法,撰写团队项目软件系统设计说明书,以回答:软件是如何实现用户需求的?
已将《网店工商信息图片文字提取软件系统设计说明书》上传到团队项目Github仓库
-
团队项目仓库链接:https://github.com/cuimt/tianma
-
团队项目仓库截图
任务5:完成《实验八 团队作业5:团队项目需求建模与系统设计(2)》团队博文作业:
- 完成各项任务实际花费的时间和分工
任务内容 | 实际花费的时间(min) | 分工 |
---|---|---|
任务1 | 20 | |
实验六团队互评 | 20 | 大家一起阅读互评方撰写的博客内容、项目需求分析建模与系统设计、软件需求规格说明书,给出总体的评论 |
任务2 | 110 | |
学习Visio的软件操作方法 | 30 | 每个人都注册并使用Visio,然后一起交流讨论 |
学习面向对象分析方法(OOA) | 30 | 大家聚在一起共同讨论,学习OOA方法 |
完善团队项目的《软件需求规格说明书》 | 50 | 癿 * 盼负责整理完善实验七中的系统需求规格说明书 |
任务3 | 30 | |
查找资料 | 30 | 大家共同查找资料,完成老师提出的三个问题。 |
任务4 | 90 | |
面向对象设计(OOD)方法 | 30 | 大家聚在一起共同讨论,学习OOD方法 |
编制团队项目的WBS,估计各项任务所需时间 | 30 | * 梦涛和 * 蕊媛负责编制WBS并估计时间,同时癿 * 盼和 * 钦颖协助完成 |
撰写团队项目软件系统设计说明书 | 30 | 癿 * 盼负责将资料总结起来编制最终的软件系统设计说明书,* 蕊媛负责补充,同时 * 梦涛和 * 钦颖协助完成,最后由癿 * 盼将所有文档资料上传至Github |
任务5 | 40 | |
以博客形式记录本次任务 | 40 | * 梦涛负责博客的撰写,同时 * 蕊媛、癿 * 盼、* 钦颖辅助完成 |
- 结合实验七、实验八的学习体验,对比陈述结构化软件分析与设计、面向对象分析与设计两类软件开发技术的异同
1.结构化软件分析与设计:
结构化方法首先关心的是功能,强调以模块(即过程)为中心,采用模块化、自顶向下、逐步求精设计过程,系统是实现模块功能的函数和过程的集合,结构清晰、可读性好,是提高软件开发质量的一种有效手段。
结构化设计从系统的功能入手,按照工程标准和严格规范将系统分解为若干功能模块。然而,由于用户的需求和软、硬件技术的不断发展变化,作为系统基本成分的功能模块很容易受到影响,局部修改甚至会引起系统的根本性变化。开发过程前期入手快而后期频繁改动的现象比较常见。
2.面向对象分析与设计:
面向对象方法从所处理的数据入手,以数据为中心来描述系统,数据相对于功能而言,具有更强的稳定性,这样设计出的系统模型往往能较好地映射问题域模型。对象、类,、继承性、多态性、动态定连概念和设施的引入使用,显然令面向对象的设计方法具有一定的优势,能为生产可重用的软件构件和解决软件的复杂性问题提供一条有效的途径。
面向对象的设计过程就是指通过建立一些类以及它们之间的关系来解决实际问题,这就需要对问题域中的对象作整体分析,类和类间关系的设计要求较高,否则设计出的并不是真正意义上的面向对象的软件系统,而只是一些类的堆砌而已,不能体现出面向对象设计方法的优势之处。
3.系统的分析设计是一个注重实践的领域,不仅仅依赖于一整套核心的概念与原理,要想设计出一个成功的系统来,还需要相应的语言、工具和技术的有力支持。在这方面,经过多年的实践和发展,适应结构化方法的技术和开发环境已经相当成熟稳定。而对面向对象方法而言,虽然近时期涌现了大量的新工具和新技术,但仍有待于不断的完善和改进,特别是面向对象的数据库技术。
- 从团队分工和协作学习角度,陈述团队实施项目需求分析建模、软件系统设计等学习活动的心得
1、* 梦涛:
-
团队实施Visio建模工具学习:本次团队作业,首先是要学会Visio绘图软件,然后用此工具设计系统软件UML,由于初次接触建模图过程比较繁琐,只能慢慢一步一步探索着学习,最后基本学会使用Visio绘图软件,发现它很方便也很使用也容易上手。从项目需求分析建模以及软件系统设计后把小型医疗机构系统清晰明了地展现了出来,虽然在设计的过程中方存在很多的问题,但是经过和组员探讨修改,初步完成了本次的模型设计。在我们组员同伴的分工明确和大家积极配合的情况下,我们顺利完成了本次实验,经历了几次团队作业,慢慢地大家有了默契,任务完成也积极,大家继续保持。
-
项目需求分析建模:在开发过程中对软件项目进行监控和控制,保证项目的顺利开展。软件开发公司不仅要严格监督项目的执行进度,实时指导进行合理调整,而且还要控制实施过程中的困难和阻力,提出专业性的建议和解决方案,避免项目延期。通过进一步的调研,优化总体的技术实施方案,再根据方案要求进行技术人员的合理配置,使得每个岗位各司其职,又相互协作推动项目的高效运作。
-
软件系统设计:本次实验是整个项目开发过程中内容最多而且最重要的一部分,我们团队在完成实验内容的过程中分工明确,合作有力,不仅按时完成了项目内容,而且在本次实验中学习到了很多知识,比如Visio的使用,以及使用UML建模,在软件开发中涉及到的一些规则和方法等都进行了讨论学习,并且编写了软件系统设计说明书,整理了项目开发的系统结构和框架,为下一步的编程工作打下了良好的基础。在团队合作完成的过程中积极的交流和探讨帮助我解决了很多力所不能及的难题,很大程度上提升了项目开发的整体效益。
2、* 钦颖:
-
团队实施Visio建模工具学习:在我们小组PM的带领下,通过小组内进行互相交流讨论,对Visio有了大致的认识并进行使用练习,另外我们利用Visio绘制了任务二中的用例图、UML、四个象限等图,对Visio的操作有了更深入的了解。
-
项目需求分析建模:通过对之前已完成的部分以及结果进行一个归纳总结,发现、补充并完善不足的地方,更好地对目标用户和管理者的需求多方面改进,最终完成需求说明书并建立模型等;小组成员之间相互交流学习极大地提高了效率与效果,成员之间的合作配合度越来越高,期待一起学习并进行项目的推进。
-
软件系统设计:我们对软件的系统逻辑结构和软件系统数据库逻辑结构有了更深的理解。之前对系统是脑海中的构想,目前按照计划逐步实施,框架功能越来越清晰。每一次实验任务就像是一个挑战,一点一点去学习新的内容知识,慢慢的将系统充实攻克难关。在过程中,大家对构建的内容有不同理解和意见,但是正因为矛盾碰撞出了更好的方案。
3、癿 * 盼:
-
团队实施Visio建模工具学习:本次的实验中,我们又接触到了一个新的建模工具Visio,通过组内的讨论,我们先学习了如何使用这个工具,大家一起积极讨论然后开始实践。在实践过程中我们不免遇到一些问题,但是在各位互相帮助和讲解下理解。其次,在本次实验中我们需要在上次的基础上添加用例图个功能分析的四个象限以及UMl模型,由于刚开始对这些内容知识的不熟练,我们很难将项目转换成我们所需要的模型,因此,在一步步的探讨下我们慢慢解析认真思考,一点一点修改完善,最终得到一个大家都满意的模型。
-
项目需求分析建模:在这个过程中,通过前几次的各项任务完成,我们已经对项目有了一个更深入的理解,对于各项功能的实现已经划分有了更好的实现。对于项目的整体架构理解清楚,实现了各个模块的功能划分。这将对我们今后代码的实现有个清晰连贯的思路。
-
软件系统设计:在这个过程中,通过前几次的各项任务完成,我们已经对项目有了一个更深入的理解,对于各项功能的实现已经划分有了更好的实现。对于项目的整体架构理解清楚,实现了各个模块的功能划分。这将对我们今后代码的实现有个清晰连贯的思路。
4、* 蕊媛:
-
团队实施Visio建模工具学习:Visio中提供了多种软件设计方面的模型图,其中的“UML模型图”模板为创建软件模型的面向对象模型提供了全面的支持。由于是第一次接触Visio,要绘制的模型图也比较专业,所以上手起来比较慢,大家学习了挺久。不过接触一个新的软件是个好事,大家都在慢慢学习中逐渐成长。
-
项目需求分析建模:在经过了之前的几次实验对项目进行分析之后,大家对项目的需求已经明确,但是在进行需求分析建模时,还是遇到了一些困难,比如在用Visio绘制类图时,Visio提供了许多种类之间的联系,在确定类之间的具体联系时还是比较生涩的。另外,在进一步进行需求分析建模时,会发现一些新的问题,大家需要商讨确定对之前的需求分析进行完善和修改。
-
软件系统设计:这部分是对上次实验中软件设计的一个迭代和完善,大家在经过需求分析建模后,对软件的结构有了一个更清晰的认识。通过再次梳理想法和设计,大家对软件的整体框架更加明确了。