《软件工程》 课件 第6章 面向对象设计_第1页
《软件工程》 课件 第6章 面向对象设计_第2页
《软件工程》 课件 第6章 面向对象设计_第3页
《软件工程》 课件 第6章 面向对象设计_第4页
《软件工程》 课件 第6章 面向对象设计_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件工程第六章面向对象设计6.1软件系统设计6.1软件系统设计6.1.1架构设计6.1.1架构设计从80年代末开始,软件的规模和复杂度急剧增加,适用于2~3层小楼房的传统架构已经远远不能满足几十层甚至更高的现代高楼大厦的需求了,软件开发面临着越来越多的风险和挑战。为了更好地开发出功能更加强大、更为复杂的软件系统,业内学者与技术人员在20世纪90年代初,提出了软件体系结构即软件架构。顾名思义,软件架构以类似建筑学的观点来构造软件系统,它能够在给出满足所有技术需求的解决方案的同时,优化诸如质量、安全性和可管理性之类的通用质量属性,对整个系统的可扩展性、可靠性、强壮性、灵活性、性能、功能、成本、可维护性和整体成功产生重大影响。6.1.1架构设计“软件体系结构”一词多用于学术研究领域使用,“软件架构”多用于工程实践领域,二者的英文名都是“SoftwareArchitecture”,在IEEE中的定义均为:“一个系统的基础组织,包含各个构件、构件互相之间与环境的关系,还有指导其设计和演化的原则。”软件架构师设计软件构架,以作为满足不同客户需求的实际系统设计方案的基础,包括软件的模块化、模块之间的交互、用户界面风格、对外接口方法、创新的设计特性、以及高层事物的对象操作、逻辑和流程。软件体系结构的开发是大型软件系统开发的关键环节。6.1.1架构设计基于同一个软件体系结构,可以创建具有不同功能的多个软件系统。在软件产品族之间共享体系结构和一组可重用的构件,可以增加软件工程的质量和降低开发和维护成本。如何选择一个好的框架应用在项目中,对项目开发的效率、可重用及成功是至关重要的。软件架构师需要有广泛的软件理论知识和相应的经验来实施和管理软件产品的高级设计。6.1.2数据库设计数据库(DataBase,DB)是永久性地存储和组织大量数据的“仓库”,是大量数据的集合。数据库DataBase6.1.2数据库设计若目标软件系统需要数据库,则需要根据目标软件系统的需求,选择适合的数据库管理系统;数据库设计;根据数据库设计在已选择的数据库管理系统上创建该数据库。数据库的主要挑战是“高速处理大容量的数据”。数据库的性能取决于两方面:数据库设计数据库管理系统6.1.2.1数据库数据库有两种类型:关系型数据库非关系型数据库6.1.2.1数据库1、关系型数据库(RelationalDataBase)6.1.2.1数据库结构化查询语言(StructuredQueryLanguage,SQL)关系型数据库采用结构化查询语言(StructuredQueryLanguage,SQL)来对数据库进行操作。SQL是为数据库行业的标准,它能够支持数据库的CRUD操作(增加create,查询require,更新update,删除delete),及求和、排序等功能。SQL可以采用类似索引的方法来加快查询操作。关系型数据库对于结构化数据的处理更合适,如学生成绩、订单信息、产品信息等。6.1.2.1数据库2、非关系型数据库(NoSQL)NotOnlyStructuredQueryLanguage优势:数据库结构相对简单,在大数据量下的读写性能好;能满足随时存储自定义数据格式需求,非常适用于大数据处理工作。NoSQL数据库对于非结构化数据的处理更合适。如文章、评论,这些数据如全文搜索、机器学习通常只用于模糊处理,并不需要像结构化数据一样,进行精确查询,而且这类数据的数据规模往往是海量的,数据规模的增长往往也是不可能预期的,而NoSQL数据库的扩展能力几乎也是无限的,所以NoSQL数据库可以很好的满足这一类数据的存储。6.1.2.2数据库管理系统数据库管理系统(DataBaseManagementSystem,DBMS)是一个能够科学地组织和存储数据,高效地获取和维护数据的系统软件,是位于用户和操作系统之间的数据管理软件。主要功能数据定义、组织、存储、操作、事务管理、数据库建立和维护管理、以及跟其他软件系统通信等。6.1.2.2数据库管理系统用户通过DBMS访问数据库中的数据。数据库管理员通过DBMS进行数据库的维护工作

——数据库管理员(DataBaseAdministrator,DBA)DBMS提供多种功能,可使多个应用程序和用户用不同的方法在同时或不同时刻去建立、修改和询问数据库。它使用户能方便地定义和操纵数据,维护数据的安全性和完整性,以及进行多用户下的并发控制和恢复数据库。6.1.2.3数据库设计数据库设计(DatabaseDesign)是指根据目标软件系统的需求,在某一具体的数据库管理系统上,设计数据库的结构和建立数据库的过程。绝大部分永久性数据保存在数据库中,因此数据库对软件系统的重要性不言而喻。只有设计良好的数据库,才能提高软件系统的整体性能,才能为用户提供更高质量的服务。6.1.3功能模块设计如果一个问题由多个问题组合而成,那么这个组合问题的复杂程度将大于分别考虑这些问题的复杂程度之和。软件系统功能模块化就是将程序划分成若干个功能模块,每个功能模块完成一个子功能,再把这些功能模块总起来组成一个整体,以满足整个系统的功能要求。要选择合适的功能模块数量。6.1.3功能模块设计血液循环系统淋巴系统呼吸系统消化系统内分泌系统......销售管理采购管理仓库管理生产计划管理财务管理……子系统人体企业管理信息系统6.1.3功能模块设计软件系统功能模块的设计原则:高内聚&低耦合通过抽象、数据封装和信息隐藏,可以做到高内聚、低耦合。6.1.4数据结构与算法设计曾经流行的一种说法:程序=数据结构﹢

算法数据结构与算法如同人的神经和肌肉,它分布在全身,让软件模块能够发挥功能。6.1.5用户界面设计用户界面(UserInterface,UI)——人的外在形象用户界面设计是指对软件系统的人机交互、操作逻辑、界面美观的整体设计。实用适用友好美观欢迎学习《软件工程》软件工程张爽东北大学软件学院第六章面向对象设计6.2面向对象设计概要6.2面向对象设计概要面向对象设计包括4项主要工作:构建交互图:为在OOA阶段获得的每一个用例情景构建交互图,即时序图或协作图。完成类图:基于交互图和OOA阶段获得的初始类图,完成一个涵盖所有的类及其属性和方法的详细类图,这些类包括实体类、边界类和控制类。构造客户-对象关系图:该图的重点是类的层次关系。方法的详细设计:对每一个类中的每个方法中的算法或逻辑进行详细设计。6.3交互图6.3交互图UML交互图InteractionDiagram,描述每一个用例情景实现过程中对象之间的交互内容和交互过程。交互图分为两种:顺序图协作图它们描述的对象是相同的,即参与该用例情景的对象们、以及对象之间传递的消息message,但是表达方式不同。顺序图顺序图SequenceDiagram,时序图、序列图强调顺序、时序,即对象之间传递的消息流的序列、以及每一条消息的发送者和接收者。序列图通常描述的是对象层次,而不是类层次。顺序图包括的要素有:参与者实例对象生命线对象之间传递的消息及其次序顺序图参与者actor实例,2种命名方式:参与者实例名:参与者名:参与者名顺序图对象(object),2种命名方式:对象名:类名:类名顺序图在顺序图中,需要标识出来边界类对象和控制类对象,在对象名的下面用“<<boundary>>”或“<<GUI>>”、和“<<control>>”标识其为边界类对象或界面类对象、和控制类对象。顺序图生命线lifeline

标识对象的存在时段顺序图生命线包括两种状态:休眠状态:休眠状态下生命线由一条虚线表示,代表对象在该时间段内没有信息交互。激活状态:激活状态就是激活期,用条形小矩形表示,代表对象在该时间段内有信息交互。顺序图有的顺序图中,在生命线的上出现

,是消除对象的标记,表示该对象的生命周期到此终结,该对象从系统中彻底销毁。顺序图对象之间通过相互间的消息message传递来实现对象之间的动态联系,而达成相互协作。在UML顺序图中,用一条有向线段从消息发送方对象的生命线,指向消息接收方对象的生命线,来显示一个对象传递消息给另一个对象或其自身。消息线要有描述,用来表示两个对象之间具体的交互内容。其中,操作和命令类的消息用实线表示,数据类的消息用虚线表示。顺序图消息可从一个对象传递给另一个对象顺序图消息可传递给对象自身,即自我调用顺序图消息可参与者实例与系统中的对象进行交互顺序图消息的无条件发送顺序图消息的条件发送顺序图消息的循环发送顺序图消息的循环发送顺序图方法的分配谁拥有该方法,就应该把该消息发送给谁;反之,消息发送给谁,也就意味着该方法分配给谁。方法的分配,集中体现了面向对象的设计原则“职责驱动”,所以面向对象设计也称职责驱动设计Responsibility-DrivenDesign。构建顺序图的步骤与原则确定交互过程上下文,要详细审阅有关资料,包括需求、用例建模、类建模和动态建模等文档。识别参与交互过程的对象,通过对用例情景实现过程的设计,识别在其实现过程中需要交互的对象,包括边界类、控制类、和实体类。在顺序图的上部列出所选定的一组对象(应该同时给出其类名),并为每个对象设置生命线。通常按照阅读习惯,把发起交互的对象放在左边。构建顺序图的步骤与原则按照通常的阅读习惯,一个顺序图中的第一条消息从顶端开始,并且一般位于图的左边,然后将继发的消息加入图中,稍微比前面的消息低些。全部消息按照发生的先后,从上向下纵向排列,而且全部消息从序号1开始排序,以减少歧异、便于阅读。如果因为条件判断出现多个分支,则用A、B、C等字母区分个分支,从而消息序号可能如6A、6B、6C、12A、12B等。构建顺序图的步骤与原则确定消息将怎样或以什么样的序列在对象之间传递。从首先发出信息的对象的视角,确定它需要哪些对象的协作,而它又向哪些对象提供协作。关于消息的指向,要进行深入的分析与设计,它体现的是面向对象范型的核心原则职责驱动和信息隐藏,是面向对象设计的核心问题之一。案例1:教学管理信息系统中用例“学生登录”

(采用的技术路线是JavaWeb)协作图协作图(CollaborationDiagram)顺序图强调用例情景实现过程中操作发生的时间先后顺序,而协作图强调的是用例情景实现过程中对象之间的协作关系;顺序图中有对象生命线,而协作图中没有;时序图和顺序图在语义上是等价的,二者之间可以相互转换,但二者并不能完全相互替代。图书馆管理信息系统中“借书”用例的协作图欢迎学习《软件工程》软件工程第六章面向对象设计6.4详细类图6.4详细类图用例情景交互图的完成,即意味着挖掘即设计出了所有可能涉及到的类(包括边界类、界面类、控制类、和实体类)、以及每个类的职责即方法。基于面向对象分析阶段获得的初始类图,补充上实体类的方法、以及边界类、界面类、和控制类。再确定这些类之间的关系,即可获得目标软件系统的详细类图。电梯控制系统详细类图6.5客户-对象关系图类图并不能反映类之间的层次关系,而客户-对象关系图(Client-ObjectRelationDiagram)就是要重点反映这些类的层次关系。类之间消息的传递就反映出这种客户-对象关系,消息的发送方就是客户,信息的接收方就是对象。在客户-对象关系图中,用箭头从客户指向对象。6.5客户-对象关系图6.6方法的详细设计对方法的详细设计是设计阶段不可或缺的工作。通常,采用程序描述语言(PDL,programdescriptionlanguage),或伪代码(pseudocode)来对方法进行设计,它是介于自然语言和编程语言之间的一种语言。6.6方法的详细设计以某登录顺序图中控制类LoginServlet中的方法run()为例,对其利用pseudocode做以一部分详细设计:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论