(2)掌握面向对象需求分析建模技术;
(3)理解和掌握面向对象软件系统设计原理、设计过程和技术。
(2)下载并阅读互评方团队项目资料。
结合实验七评分标准,给出互评团队作业评分成绩:140
面向对象分析与设计与结构化软件分析与设计的异同
二者的不同点主要有以下几个方面:
一、开发思想方面
结构化方法开发的背景是在上世纪六十年代末提出软件危机之后,为了应对软件危机,软件开发的先辈们模仿当时比较成熟的工程化生产而提出一种方法。而这种方法也确实减轻或者说缓解了软件危机。结构化方法学的思想是面向过程,自上而下、逐步地分解问题,把一个大问题分解成多个小问题,小问题再分解成多个更小的问题,直到保证底层的问题足够简单,容易解决。
面向对象方法学在开始,是编程语言而被引入的。而把对象作为编程的实体最早是上世纪六十年代由Simula67语言引入思维。在结构化方法学提出几年之后,上世纪八十年代面向对象方法学逐渐走上历史的舞台,并在之后乃至现在大放异彩。面向对象方法学的思想是面向对象,以对象为中心,把数据封装在对象内部成为对象的属性,把面向过程的函数转为对象的行为方法,把对象抽象成为类,用以描述和设计、开发软件系统。
二、基本概念方面
结构化方法学又被称生命周期方法学或传统方法学。软件从设计者诞生开发想法起始,到没有人用、被废弃结束,称为软件的生命周期。传统的软件开发方法中,软件的生存周期分为三个大的阶段,即软件定义阶段,开发阶段,维护阶段。详细又可以分为问题定义、可行性分析、需求分析、系统设计、系统实现、后期维护等阶段。
面向对象方法学是一种把面向对象程序设计语言的思想应用于软件开发过程,指导开发过程的方法。面向对象方法学由以下三部分面向对象分析、面向对象设计、面向对象程序设计组成。面向对象开发是按照人的逻辑概念,思维方式去解决问题,使软件开发时的代码重用性和可靠性大大提高。也使软件更容易被人理解,从而提高软件后期运行易维护性。
三、开发过程方面(1)结构化软件分析与设计开发分为以下五个阶段
1、系统规划阶段系统规划阶段的内容主要为明确软件的发展规划,确定用户对软件需求,并制定软件开发的计划。
2、系统分析阶段系统分析阶段的内容有解析软件所对应的工作任务,工作任务中的数据和数据流图,软件的功能所需要的技术支持和选择。
(2)面向对象分析与设计开发分为以下四个阶段
2、面向对象设计阶段(OOD)这个阶段的主要任务就是将上一阶段得到的需求转化为有技术能力实现的,成本符合预算的并且能够达到用户需求的软件实现方案。具体呢就是确定软件的高层架构,确定需要的类以及对外接口和实现算法等。
3、面向对象编程阶段(OOP)此阶段的工作内容就是实现上一阶段的设计结果,并在编程的过程中修正出现的设计不到位的部分,实现预计的各项功能。
4、面向对象测试阶段(OOT)面向对象测试阶段的主要工作任务就是测试软件各项功能是否存在问题,各项性能如容错性,稳定性,安全性等各项性能,以让软件不断完善。
四、优劣对比的方面(1)结构化软件分析与设计开发优点
1、传统方法学吧软件的大生命周期分成了许多小的阶段,每一个小阶段又可以分为其他多个不同的阶段,知道每个阶段的任务足够简单,实现相对独立,这样在开发时的分工合作就会比较简单,这样面对一些相同软件便可以流水线式快速高效开发。
缺点
1、由于传统方法学的开发只能串行开发,前面的工作如果没有做好,就会给后面的工作带来非常大的麻烦,所以它的生产效率总体来说会比较低。
2、由于其面向过程的局限性,软件的重用性非常差,程序冗余比较严重
3、因为软件代码冗余比较多,这就会给后期的开发带来许多困难,这就使得软件的可维护性很低,由此带来的软件容错性、稳定性也比较低。
4.开发出的软件无法很好地满足用户需求。由于用户一般是非专业人员,其所使用的语言逻辑,描述都可能有误差,这就导致呢软件在满足用户需求上效果不佳。
(2)面向对象方法开发优点
(1)采用用例图表示项目功能需求,模型使用规范一致的图形符号和文字描述内容;
《开饭了》网上订餐系统的参与者有:
(2)参考《构建之法—现代软件工程》8.5节功能的定位和优先级,给出功能分析的四个象限;
外围功能:辅助性的功能,比如良好的用户体验界面等。
必要需求:能够准确解决用户主要功能的需求,比如词典软件要保证短语释义的准确性。
辅助需求:非必要需求,比如换肤等功能。
(3)选择适当的UML模型,建立问题域对象模型;
uml(unifiedModelingLanguage)为面向对象软件设计提供统一的、标准的、可视化的建模语言。适用于描述以用例为驱动,以体系结构为中心的软件设计的全过程。
uml的定义包括UML语义和UML表示法两个部分。
UML语义:UML对语义的描述使开发者能在语义上取得一致认识,消除因人而异的表示方法造成的影响。
UML表示法:UML表示法定义UML符号的表示法,为开发者或者开发工具使用这些图形符号和文本语法为系统建模提供了标准。
UML模型图的构成
事物(things):UML模型中的最基本的构成元素,是具有代表性的成分的抽象。
关系(relationship):关系把事物紧密联系在一起。
图(Diagrams):图是关系和事物的可视化表示。
UML包括静态建模和动态建模:
静态建模包括:用例图、类图、对象图、组件图、部署图。
动态建模包括:时序图、协作图、状态图、活动图。
UML模型:
B/S和C/S都是随着互联网的发展而出现的一种网络结构模式,而其用的非常广泛,在我们生活中都很常见。
(1)什么是C/S结构?
C/S结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。
(2)什么是B/S结构
B/S结构(Browser/Server,浏览器/服务器模式),是WEB兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。客户机上只要安装一个浏览器(Browser),如NetscapeNavigator或InternetExplorer,服务器安装Oracle、Sybase、Informix或SQLServer等数据库。浏览器通过WebServer同数据库进行数据交互。
B/S结构和C/S结构的区别
硬件环境不同,C/S通常是建立在专用的网络上,小范围的网络环境。而B/S是建立在广域网上的,适应范围强,通常有操作系统和浏览器就行;
C/结构比B/S结构更安全,因为用户群相对固定,对信息的保护更强;
B/S结构维护升级比较简单,而C/S结构维护升级相对困难;
(3)什么是MVC设计模式?
ModelViewController,是模型-视图-控制器的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个组件里,在改进和个性化定制界面的及用户交互的时候,不需要重新编写业务逻辑。mvc用于映射传统的输入、处理、输出功能在一个逻辑的图形用户界面的结构中。mvc就是类似三层的一种架构,主要采用封装(分层)的思想,来降低耦合度,从而使我们的系统更灵活,扩展性更好。model是应用程序中用于处理数据逻辑的部分。通常模型对象负责在数据库中存取数据。view是应用程序中处理数据显示的部分。通常视图是依据数据模型创建的。controller是应用程序中处理数据交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送。
多个视图共享一个模型,大大提高代码的可重用性。
三个模块相互独立,改变其中一个不会影响其他两,所以依据这种设计模式能构建良好的松耦合性的组件。
控制器提高了应用程序的灵活性和可控制性。控制器可以用来连接不同的模型和视图去完成用户的需求,这样控制器可以为构造应用程序提高强有力的手段。
1)采用适合的软件设计模式设计软件系统总体结构,具体内容看《软件系统设计说明书》;
更改实验七的软件设计说明书版本号为1.1,采用OOD技术编制《“开饭了”软件设计说明书1.2》
(3)说明软件重用方案
软件重用:软件重用,是指在两次或多次不同的软件开发过程中重复使用相同或相似软件元素的过程。软件元素包括程序代码、测试用例、设计文档、设计过程、需求分析文档甚至领域知识。通常,可重用的元素也称作软构件,可重用的软构件越大,重用的粒度越大。软件重用可以直接提高软件的开发效率、降低软件的开发成本、缩短软件的开发周期、提高软件质量。
重用层次a.知识重用(例如,软件工程知识的重用);b.方法和标准的重用(例如,面向对象方法或国家制定的软件开发规范的重用);c.软件成分的重用。
构件技术构件的两个最重要的特性是自包容与可重用。自包容指的是构件的本身是一个功能完整的独立体,构件内部与外部的功能界限清晰明确,可以独立配置与使用。而可重用既是构件的特点,也是构件出现的目的。
目前应用比较广泛的构件标准有CORBA、JavaBean/EJB、COM/DCOM。
后台管理:a.系统管理员可查看各商家获得的评价信息,增加对用餐文评价本的情感分析,以此来为消费者用餐提供有价值的评判依据。b.系统管理员根据商家获得的评价信息,对各商家获得的评价信息按照评分升序查看,并且可自行移除哪些恶意营销商家。
(5)将文件上传到GitHub
更改实验七的软件需求规格说明书版本号为1.1,采用OOA技术编制《“开饭了”线上点餐软件需求规格说明书1.2》上传到团队项目Github仓库:
更改实验七的软件设计说明书版本号为1.1,采用OOD技术编制《“开饭了”线上点餐软件系统说明书1.2》上传到团队项目Github仓库:
结合实验七、实验八的学习体验,对比陈述结构化软件分析与设计、面向对象分析与设计两类软件开发技术的异同
结构化方法是强调过程抽象化和模块化,以过程为中心构造或处理客观世界问题,它是一种面向过程的开发方法,是一种典型的面向数据流分析设计方法;面向对象方法强调的是把问题域的要领直接映射到对象及对象之间的接口上,符合人们的通常思维。
结构化方法把客观世界的问题抽象成计算机可以处理的过程,处理问题的基本单位是能清晰表达过程的模块,用模块的层次结构来概括模块与模块之间的关系和功能;面向对象方法是用计算机逻辑来模拟客观世界中的物理存在,以对象的集合类作为处理问题的基本单位,面向对象方法是用类的层次结构来体现类之间的继承和发展。
结构化方法是直接通过程序来处理数据,处理完毕后就可显示出结果,在控制程序方式上是按照设计调用或返回程序不能自由导航,各模块程序之间存在着控制与被控制的关系;面向对象方法将数据与对应代码封装成一个整体,原则上其它对象不能直接修改其数据,即对象的修改只能由自身的成员函数完成,控制程序方式上是通过“事件驱动”来激活和运行程序。
结构化方法中的分析设计按规定的规则进行转换,分析设计之间实现的是一种有缝连接;面向对象方法从分析到设计采用的是一致性的模型表示,使得从分析到设计不存在转换,只需要做必要的修改和调整。面向对象分析与设计之间不存在传统方法中分析与设计之间的鸿沟,二者能够紧密衔接,实现的是一种无缝连接。
从团队分工和协作学习角度,陈述团队实施Visio建模工具学习、项目需求分析建模、软件系统设计等学习活动的心得
在团队实施Visio建模工具学习、项目需求分析建模、软件系统设计等学习活动的过程中,最明显的感受就是一听就会,一上手就废,听别人讲的时候觉得很简单,没那么难,自己实际上手结合项目做得时候状况百出,并没有看起来那么简单。从团队分工来看,每个人都承担了每个任务中的一部分,所以就需要经常沟通讨论。从安装软件visio到需求分析再到最后的系统设计,虽然我们也出现了一些分歧,但最后还是得到了统一且大家一致认同的答案。