实验八 团队作业5:团队项目需求建模与系统设计
项目 | 内容 |
---|---|
课程班级博客链接 | 班级博客链接 |
这个作业要求链接 | 作业要求链接 |
团队名称 | TheSuperego |
团队成员分工描述 | 公 * 瑜:团队项目软件系统设计说明书,系统数据库逻辑结构 陈 * 弟:完善WBS,软件系统总体结构设计 杨 * 霞:撰写整体博客,项目互评,任务三 张 * 盼:项目系统需求规格说明书,任务二 |
团队的课程学习目标 | 1.学习使用UML建模工具Visio 2.掌握面向对象需求分析建模技术 3.理解和掌握面向对象软件系统设计原理、设计过程和技术 |
这个作业在哪些方面帮助团队实现学习目标 | 1.学会熟练使用Visio常用UML图形绘制工具 2.选择适当的UML模型,建立问题域对象模型 3.应用面向对象分析方法,完善软件需求设计说明书 4.完善需求建模与系统设计说明书 |
团队博客链接 | 团队博客 |
团队项目Github仓库地址链接 | Github仓库地址链接 |
任务1:按团队项目互评名单,对互评方《实验七 项目需求分析建模与系统设计(1)》的项目成果进行评价
对结对方博客整体的内容阅读后,互评方作业成绩为98分
任务2:使用Visio,应用面向对象分析方法(OOA),完善团队项目的《软件需求规格说明书》,并将该文档上传到团队项目Github仓库
(1)采用用例图表示项目功能需求,模型使用规范一致的图形符号和文字描述内容;
- 本系统拟实现学生注册登录本系统,通过查看教师发布的选题信息与教师信息来选择课题,并进行个人信息的增、删、改功能; 教师则通过注册登录进入本系统,对学生的毕业设计进行课题管理,对学生上传的毕业设计进行选题确认,并进行个人信息的增、删、改功能;管理员则在进入该系统后对基础信息、学生的选题情况及用户进行管理。
(2)参考《构建之法—现代软件工程》8.5节功能的定位和优先级,给出功能分析的四个象限;
- 四象限分析法:源于四象限图,又叫二维象限图。四象限分析法是在平面内通过对两个相互独立的指标(属性、性质、特征)的正反两个方向进行两两组合,最终将事务划分到四个组合区域,对每一个区域进行分析并制定相应的策略。
用四象限分析法将对我们项目进行划分如下:
(3)选择适当的UML模型,建立问题域对象模型;
- 在学习面向对象分析之后,我们知道它的首要的工作,是建立问题域的对象模型,模型描述了现实世界中的“类与对象”以及它们之间的关系,表示了目标系统的静态数据结构。建立对象模型的工作步骤,首先确定对象类和关联,对于大型复杂的问题还要进一步划分若干个主题,然后给类和关联增添属性,以进一步描述它们,接下来利用适当的继承关系进一步合并和组织类。而对象类中的操作的最后确定,则需要建立了动态模型和功能模型确定之后,因为这两个子系统模型更准确地描述了对类中的提供的服务需求。根据建立问题域的对象模型步骤,我们建立了系统的UML模型:
(4)采用OOA技术编制《XXX软件需求规格说明书1.2》上传到团队项目Github仓库截图
(5)完善项目的WBS,估计各项任务所需时间
任务3:查阅资料,回答以下问题:
(1)什么是C/S结构?
- C/S结构:Client/Server,是一种软件系统体系结构,即客户机和服务器结构。C/S结构通常采取两层结构。服务器负责数据的管理,客户机负责完成与用户的交互任务。在C/S结构中,应用程序分为两部分:服务器部分和客户机部分。服务器部分是多个用户共享的信息与功能,执行后台服务,如控制共享数据库的操作等;客户机部分为用户所专有,负责执行前台功能,在出错提示、在线帮助等方面都有强大的功能,并且可以在子程序间自由切换。
- C/S结构可以看做是胖客户端架构。客户端实现绝大多数的业务逻辑处理和界面展示,作为客户端的部分需要承受很大的压力,从分利用客户端的资源,对客户机的要求较高。
(2)什么是B/S结构?
- B/S结构:即浏览器和服务器结构,Browser/Server。它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层3-tier结构。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本。
- B/S结构可以看作是瘦客户端,只是把显示的较少的逻辑交给了Web浏览器,事务逻辑数据处理在放在了Server端,这样就避免了庞大的胖客户端,减少了客户端的压力。B/S结构的系统无须特别安装,只有Web浏览器即可。当然AJAXFlex等等的普遍使用也有富客户端的发展方向。
(3)什么是MVC设计模式?
-
MVC是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。
- Model(模型),是程序的主体部分,主要包含业务数据和业务逻辑。在模型层,还会涉及到用户发布的服务,在服务中会根据不同的业务需求,更新业务模型中的数据。
- View(视图),是程序呈现给用户的部分,是用户和程序交互的接口,用户会根据具体的业务需求,在View视图层输入自己特定的业务数据,并通过界面的事件交互,将对应的输入参数提交给后台控制器进行处理。
- Controller(控制器),Controller是用来处理用户输入数据,已经更新业务模型的部分。控制器中接收了用户与界面交互时传递过来的数据,并根据数据业务逻辑来执行服务的调用和更新业务模型的数据和状态。MVC模式将它们分离以提高系统的灵活性和复用性,不使用MVC模式,用户界面设计往往将这些对象混在一起。MVC模式实现了模型和视图的分离。
任务4:以任务2的成果为基础,使用Visio,应用面向对象设计(OOD)方法,撰写团队项目软件系统设计说明书,以回答:软件是如何实现用户需求的?
(1)采用适合的软件设计模式设计软件系统总体结构;
(2)设计软件系统数据库逻辑结构;
(3)说明软件重用方案;
- 代码的重用性
在开发系统的过程当中,我们采用的代码都是比较简单的,所以在某种程度上来说,如果有人想在我们的代码上继续研究开发,可以继续使用我们的代码去开发,但是如果他们想用自己的代码去实现自己的系统目标,也可以采用我们系统的相关类,以及对象的重用,这些都是相对来说比较简单的,开发者可以简单的读懂代码的类以及对象,然后可以根据他们的想法去开发自己的项目。 - 项目的重用性
在开发项目的过程中,因为我们设计的是毕业设计选题系统,所以在各项功能方面相对于一些高要求的高校来说,可能还村子啊一定的欠缺,但是基本上是适用的。那么在后期的开发研究的过程当中,我们还是可以继续在这个项目的研究上进行开发,当然,一些同行要是想在我们的系统上继续进行开发,也是相对来说可以的,因为在一些功能的设计上,可能还是不太健全,但是在经过后期的修改之后,这样的情况相对来说是可以改变的,然后将系统的功能完善,争取适合所有高校。 - 项目的领域上
在项目的领域方面,我想我们的项目是跟着社会的发展走,随着在校大学生人数的不断增加,教务系统的数据量也不断的上涨。以往的毕业设计选题是随堂报名。这种方法虽然直接,但是造成选题的盲目性和教务处处理数据的繁重性。为了减轻教务处工作,以及每个学生更好的选择自己所喜欢的课题。针对学生选题这一环节,本系统从学生网上自主选题以及教师的课题发布两个大方面进行了设计,基本实现了学生的在线信息查询、选题功能以及教师对课题信息发布的管理等功能。
(4)设计关键类的重点服务。
- 用户登录
毕业设计选题设计系统使用时段比较集中,要保障在学生、教师、管理员在登录高峰期系统不会崩溃。 - 权限管理
管理员对角色和用户进行权限信息的配置。 - 课题管理
此模块的功能是老师设置课题,学生来浏览课题。教师在系统上报课题,设置课题难度,修改课题,添加课题和删除课题;学生能够浏览本专业所有老师上报的可选课题。
(5)采用OOD技术编制《XXX软件设计说明书1.2》上传到团队项目Github仓库的截图
完成各项任务所花费的时间:
任务类型 | 预计花费时间(h) | 实际花费时间(4) |
---|---|---|
任务一 | 0.3 | 0.5 |
任务二 | 3 | 5 |
任务三 | 0.25 | 0.3 |
任务四 | 4 | 6 |
任务五 | 3 | 3.5 |
对比陈述结构化软件分析与设计、面向对象分析与设计两类软件开发技术的异同
-
相同点:
- 结构化开发方法和面向对象的方法都是软件系统的开发方法。
- 结构化开发方法和面向对象的方法在运用分解和抽象原则上的要求是完全一致的。分解即化整为零,将问题剥茧抽丝,层层消化﹔抽象则是通过分解体现﹐在逐层分解时,上层是下层的抽象,下层是上层的具体解释和体现,运用抽象可以不用一次考虑太多细节,而逐渐的有计划有层次的了解更多细节。
- 局部化和重用性设计上的一致。局部化是软件开发中的一个重要原则,即不希望软件一部分过多地涉及或影响软件的其它部分。而面向对象方法则采用数据﹑代码的封装,即将数据﹑代码和操作方法封装成一个类似“黑箱”的整体对象,提高了程序的可靠性和安全性,同时增强了系统的可维护性。也就是说面向对象方法比结构化方法的运用更加深入更彻底。
-
不同点:
- 结构化方法是一种面向数据流的开发方法,面向对象方法是一种面向对象的开发方法。
- 处理问题时的出发点不同。结构化方法是强调过程抽象化和模块化,以过程为中心构造或处理客观世界问题的,它是一种面向过程的开发方法﹔面向对象方法强调把问题域的要领直接影射到对象及对象之间的接口上,是用符合人们通常的思维方式来处理客观世界的问题。
- 处理问题的基本单位和层次逻辑关系不同。结构化方法把客观世界的问题抽象成计算机可以处理的过程,处理问题的基本单位是能清晰表达过程的模块,用模块的层次结构概括模块或模块间的关系和功能﹔面向对象方法是用计算机逻辑来模拟客观世界中的物理存在,以对象的集合类作为处理问题的基本单位,尽可能使计算机世界向客观世界靠拢,以使问题的处理更直截了当,面向对象方法是用类的层次结构来体现类之间的继承和发展。
实验总结:
- 杨丽霞:本次团队作业,首先是要学会Visio建模工具学习,然后用此工具设计系统软件并且用面向对象设计方法对系统进行设计,基本学会使用Visio绘图软件,其次是应用面向对象设计方法设计项目需求分析建模和软件系统设计,虽然在设计的过程中方存在很多的问题,但是经过和组员探讨修改,以及前期合理的分工如期的完成了本次的任务。
- 公海瑜:在此次实验中,我主要负责使用Visio,应用面向对象设计(OOD)方法,撰写团队项目软件系统设计说明书。编写过程中需要绘制软件系统总体结构和软件系统数据库逻辑结构,我们选择使用Visio软件,然后用此工具设计系统软件UML,多次练习之后已基本掌握该软件使用方法。编写过程中应用新方法,让我对我们团队系统更为了解,能够及时查漏并加以完善,讨论其他任务时,我对面向对象软件系统设计原理、设计过程和技术掌握更为扎实。在我们团队组员的明确分工和大家积极配合的情况下,我们顺利完成了本次实验,经历了几次团队作业,慢慢地大家有了默契,任务完成也积极,大家继续保持。
- 张兴盼:本次任务主要是对项目实施Visio建模工具学习、项目需求分析建模与系统设计,我主要负责的是用Visio建模工具设计完善项目需求分析规格说明书。在制作项目 用例图、象限图及UML模型的过程中我意识到,想要实现一个系统的前提是一定要对我们期待系统能实现的功能有一个深刻的规划,否则就会觉得任务繁琐难以推进。大家都积极地查资料、参照其他已上线的系统所具有的功能,因此项目系统的预期功能也逐渐趋于完整。
- 陈来弟:通过完成此次实验,基本掌握了如何使用Visio画图,如何使用软件设计模式设计软件系统总体结构,设计软件系统数据库逻辑结构,以及掌握了软件设计模式等概念,在协作过程中,出现问题及时交流,互帮互助,深切体验到了合理分配任务能提高完成效率。希望在以后的协作中能更加顺利,取得满意的答案。