软件课程设计_第1页
软件课程设计_第2页
软件课程设计_第3页
软件课程设计_第4页
软件课程设计_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

软件课程设计第一页,共四十页,编辑于2023年,星期三课程设计内容面向对象软件的开发过程基于UML的面向对象软件开发软件文件的编写第二页,共四十页,编辑于2023年,星期三面向对象软件的开发过程面向对象软件工程方法的特征与优势面向对象分析OOA面向对象设计OOD面向对象编程OOP面向对象测试OOT第三页,共四十页,编辑于2023年,星期三自软件工程问世以来,出现了很多种软件工程的方法学。方法、工具和过程是软件工程方法学的三个重要因素。方法是指为了完成软件开发的各项任务所采用的技术方法。工具是为方法的实行提供的自动或半自动的支持。过程是指为了获得高质量的软件产品所需要完成的一系列任务的框架。在软件工程领域,“方法学”是被广泛使用的一个词汇。在20世纪70年代,“方法学”一词用于表示“开发软件产品的方式”,而该词实际上是指“方法的科学”。“方法学”应用于整个软件工程的过程。第四页,共四十页,编辑于2023年,星期三面向对象的软件工程方法是当前最流行的软件工程方法,它主要有以下几个方面的特征。把数据和操作封装在一起,形成对象。对象是构成软件系统的基本构件。把特征相似的对象抽象为类。类之间可以存在继承或被继承的关系,形成软件系统的层次结构。对象之间通过发送消息进行通信。将对象的私有信息封装起来。外界不能直接访问对象的内部信息,而必须是发送相应的消息后,通过有限的接口来访问。形式化的软件工程方法基于严格的数学逻辑,多应用于对安全性和可靠性要求较高的特殊领域。第五页,共四十页,编辑于2023年,星期三面向对象的软件工程方法的优点符合人类的思维习惯。通常人类在认识客观世界的事物时,把静态的属性及动态的动作特征组合起来才能完整地表达一个事物。面向对象的软件工程方法最重要的特点就是把事物的属性和操作组成一个整体,以对象为核心,更符合人类的思维习惯。此外,面向对象的软件工程方法更加注重人类在认识客观世界时循序渐进,逐步深化的特点。稳定性好。传统的软件工程方法基于功能分析和功能分解。当软件功能发生变化时,很容易引起软件结构的改变。而面向对象的软件工程方法则是基于对象的概念,用对象来表示与待解决的问题相关的实体,以对象之间的联系来表示实体之间的关系。当目标系统的需求变化时,只要实体及实体之间的联系不发生变化,就不会引起软件系统结构的变化。可复用性好。面向对象技术采用了继承和多态的机制,极大地提高了代码的可复用性。从父类派生出子类,一方面复用了父类中定义的数据结构和代码,另一方面提高了代码的可扩展性。维护性好。由于利用面向对象软件工程方法开发的软件系统稳定性好和可复用性好,而且采用了封装和信息隐藏机制,易于对局部软件进行调整,所以系统的可维护性比较好。

第六页,共四十页,编辑于2023年,星期三面向对象软件工程(OOSE)方法是面向对象方法在软件工程领域的全面应用,包括:面向对象分析(OOA):针对问题论域中客观存在的各项事物建立OOA模型中的对象,用对象的属性和服务分别描述事物的静态特征和行为。面向对象设计(OOD):针对系统的某个具体实现来运用OO方法(1)将OOA模型作为OOD的一部分;(2)针对具体实现中的人机界面、数据存储和任务管理等因素补充实现相关操作。面向对象编程(OOP):用一种面向对象的编程语言将OOD模型中的每个成分书写出来。面向对象测试(OOT):在测试中运用OO技术,以对象的类作为基本测试对象,查错范围主要是类定义之内的属性及服务,以及继承中类之间关系。面向对象软件维护(OOM):程序与问题论域保持一致,降低理解难度;对象的封装减小对象的修改对系统的影响。第七页,共四十页,编辑于2023年,星期三面向对象分析(OOA)的一般步骤是:在客户和软件工程师之间沟通基本的用户要求,获取客户对系统的需求,包括标识场景(Scenario)和用例(UseCase),以及建造需求模型;以基本的需求为指南来选择和标识类与对象(包括定义属性和基本操作);定义类的结构和层次;表示类(对象)之间的关系,建立对象---关系模型;建立对象---行为模型;利用用例/场景来复审模型,递进地重复任务1~5,直至完成建模。第八页,共四十页,编辑于2023年,星期三面向对象(OOD)设计一般步骤如下:系统设计将子系统分配到处理器。选择实现数据管理、界面支持和任务管理的设计策略。为系统设计合适的控制机制。复审并考虑权衡对象设计在过程级别设计每个操作。定义内部类。为类属性设计内部数据结构消息设计:使用对象间的协作和对象-关系模型,设计消息模型。复审:复审设计模型,并在需要时迭代。OOD通常分为高层设计和低层设计两个阶段,高层设计建立应用的体系结构,低层设计集中于类及关系的详细设计。第九页,共四十页,编辑于2023年,星期三第十页,共四十页,编辑于2023年,星期三高层设计阶段开发软件的体系结构,构造软件的总体模型。主要是标识在计算机环境中解决问题所需要的概念,并增加一批新类(可使应用软件与系统的外部世界交互的类)。此阶段的输出是适合应用软件要求的类、类之间的关系和应用的子系统视图规格说明。系统级的抉择将影响对应用软件各个子系统的任务分配,但不影响各个类的结构。客户/服务器(C/S)模型是一个典型的高层设计模型,这个模型导出的体系结构既可以在过程性系统中使用,又可在面向对象的系统中使用。建立高层设计模型旨在让系统的一个部分(服务器子系统)提供一组服务给另一个部分(客户子系统)。请求服务的对象都归于客户子系统,而接受请求提供服务的就是服务器。第十一页,共四十页,编辑于2023年,星期三第十二页,共四十页,编辑于2023年,星期三类的模块设计还有以下一些方针:信息隐蔽。软件设计通过信息隐蔽可增强抽象,并可保护类的存储表示不被数据类型实例的用户直接存取。对其表示的惟一存取途径只能是界面。消息限制。类的设计者应当为类的命令设计一个明确的界面,该类的实例的用户应当只使用界面提供的操作。狭窄界面。不是所有的操作都是公共的。只有对其他类的实例必要的操作才放到界面上,其他操作应是隐蔽实现的。强内聚。模块内部各个部分之间应有较强的关系,它们不能分别标识。第十三页,共四十页,编辑于2023年,星期三类的模块设计还有以下一些方针:弱耦合。在面向对象方法中是最基本的对象,耦合主要指不同对象之间相互关联的紧密程度。耦合程度依赖于所使用的分解方法,“一般/特殊”的继承结构损害了弱耦合的概念。包括交互耦合和继承耦合。显式信息传递。除了依赖于最少的类外,还应该明确在这些类之间的信息流。在类之间全局变量的共享隐含了信息的传递,并且是一种依赖形式。因此,两个类之间的交互应当仅涉及显式信息传递。显式信息传递是通过参数表来完成的。第十四页,共四十页,编辑于2023年,星期三类的模块设计还有以下一些方针:派生类当作派生类型。每个派生类应该当做基类的特殊化来开发,而基类所具有的公共界面成为派生类的共有界面的一个子集。C++允许设计者选择类的基类是公有的或私有的。如果基类是公有的,则其公有界面将成为新的派生类的共有界面部分,这表明基类的行为成为派生类的行为部分。如果基类是私有的,它的行为将不是继承类的公共行为部分而是实现部分。对基类的划分是为了实现新类中的服务。抽象类。某些语言提供了一个类,用它作为继承结构的开始点,所有用户定义的类都直接或间接以这个类为基类。因此,每个继承结构的根类应当是目标概念的一个抽象模型。这个抽象模型生成一个类,它不用于产生实例。它定义了一个最小的共有界面,许多派生类可以加到这个界面上以给出概念的一个特定视图。第十五页,共四十页,编辑于2023年,星期三面向对象编程(OOP)

是在完成面向对象分析、面向对象设计的基础上,利用一种或多种面向对象语言,具体实现软件各项功能的过程。面向对象程序设计语言适合用来实现面向对象设计结果,具有方便的开发环境和丰富的类库的面向对象语言,是实现面向对象设计的最佳选择。不论采用何种面向对象语言进行编码,它们都有共性的一面,即符合面向对象编程的规范,具有面向对象的编程风格,必须支持下面的概念:封装的对象类和实例的概念类的继承类的多态性OOP中的基本构件是对象和类;基本机制是方法、消息和继承性。提高软件开发的抽象层次和软件的重用性,是面向对象编程的基本思想和手段。设计重点集中在类和类层次结构的设计、实现和重用上,是面向对象编程和传统程序设计的本质区别。第十六页,共四十页,编辑于2023年,星期三面向对象的软件测试(OOT)要面对某些新挑战。同时,作为增量开发过程的一部分,良好的面向对象软件为改善传统测试过程提供了机遇。在面向对象编程语言中,继承和多态的特征对测试者来说是一个新的技术难点。面向对象技术不仅给编程语言带来了变化,而且给软件开发的很多方面也带来了变化。对于面向对象的软件测试,使用了增量开发过程,重新调整并使用新的符号来分析和设计,并充分利用编程语言的新特性,这些变化提高了软件的可维护性、复用性和灵活性等等:面向对象技术中特有的封装、继承和多态机制,给面向对象测试带来了一些新的特点,增加了测试和调试的难度。在面向对象程序中,对象是属性和操作的封装体。对象彼此之间通过发送消息启动相应的操作,并通过修改对象状态达到转换系统运行状态的目的。第十七页,共四十页,编辑于2023年,星期三基于UML的面向对象软件开发UML的基本构造块基于UML的面向对象分析基于UML的面向对象设计PowerDesigner实践第十八页,共四十页,编辑于2023年,星期三UML由图和元模型组成,图是语法,元模型是语义。UML主要包括三个基本构造块:事物(建模元素)、图和关系。

事物是是实体抽象化的最终结果,是模型中的基本成员,UML中包含结构事物、行为事物、分组事物和注释事物。关系是将事物联系在一起的方式,UML中主要定义了六种关系:依赖、关联、聚合、组合、泛化和实现。图是事物集合的分类,UML中包含9种图:类图、对象图、用例图、组件图和部署图五种描述静态结构;

顺序图、状态图、活动图、协作图四种描述动态性质。第十九页,共四十页,编辑于2023年,星期三事物是实体抽象化的最终结果,是模型中的基本成员,包括:结构事物(Structuralthings):结构事物是模型中的静态部分,用以呈现概念或实体的表现元素,是软件建模中最常见的元素,共有以下七种:

类(Class):类是指具有相同属性、方法、关系和语义的对象的集合;

接口(Interface):接口是指类或组件所提供的服务(操作),描述了类或组件对外可见的动作;

协作(Collaboration):协作描述合作完成某个特定任务的一组类及其关联的集合,用于对使用情形的实现建模;

用例(UseCase):用例定义了执行者(在系统外部和系统交互的人)和被考虑的系统之间的交互来实现的一个业务目标;

活动类(ActiveClass):活动类的对象有一个或多个进程或线程。活动类和类很相象,只是它的对象代表的元素的行为和其他的元素是同时存在的;

组件(Component):组件是物理的、可替换的部分,包含接口的集合,例如COM+、JAVABEANS等;

节点(Node):节点是系统在运行时存在的物理元素,代表一个可计算的资源,通常占用一些内存和具有处理能力。第二十页,共四十页,编辑于2023年,星期三事物是实体抽象化的最终结果,是模型中的基本成员,包括:行为事物(Behavioralthings):行为事物指的是UML模型中的动态部分,代表语句里的“动词”,表示模型里随着时空不断变化的部分,包含两类:

交互(ineraction):交互是由一组对象之间在特定上下文中,为达到特定的目的而进行的一系列消息交换而组成的动作;

状态机(statemachine):状态机由一系列对象的状态组成。分组事物(Groupingthings):可以把分组事物看成是一个“盒子”,模型可以在其中被分解。目前只有一种分组事物,即包(package)。结构事物、动作事物甚至分组事物都有可能放在一个包中。包纯粹是概念上的,只存在于开发阶段,而组件在运行时存在。注释事物(Annotationalthings):注释事物是UML模型的解释部分。第二十一页,共四十页,编辑于2023年,星期三关系是将事物联系在一起的方式,UML定义的关系主要有六种:依赖(Dependency):元素A的变化会影响元素B,但反之不成立,那么B依赖A;UML中用带箭头的虚线表示Dependency关系,箭头指向被依赖元素。泛化(Generalization):即继承(特殊和一般)关系。UML中用带空心箭头的实线线表示Generalization关系,箭头指向一般个体。实现(Realize):元素A定义一个约定,元素B实现这个约定,则B和A的关系是Realize,BrealizeA。这个关系最常用于接口,UML中用空心空心箭头和虚线表示。关联(Association):元素间的结构化关系,是一种弱关系,被关联的元素间通常可以被独立的考虑。UML中用实线表示Dependency关系,箭头指向被依赖元素。聚合(Aggregation):关联关系的一种特例,表示部分和整体的关系。UML中用带空心菱形头的实线表示Aggregation关系,菱形头指向整体。组合(Composition):组合是聚合关系的变种,表示元素间更强的组合关系。如果是组合关系,如果整体被破坏则个体一定会被破坏,而聚合的个体则可能是被多个整体所共享的,不一定会随着某个整体的破坏而被破坏。UML中用带实心心菱形头的实线表示Composition关系,菱形头指向整体。第二十二页,共四十页,编辑于2023年,星期三第二十三页,共四十页,编辑于2023年,星期三第二十四页,共四十页,编辑于2023年,星期三第二十五页,共四十页,编辑于2023年,星期三图是事物集合的分类,UML中包含多种图:类图(ClassDiagram):描述系统所包含的类、类的内部结构及类之间的关系;对象图(ObjectDiagram):是类图的一个具体实例;组件图(CompomentDiagram,也称组件图):描述代码部件的物理结构以及各部件之间的依赖关系;部署图(DeploymentDiagram):定义系统中软硬件的物理体系结构;用例图(UsecaseDiagram):从用户的角度出发描述系统的功能、需求,展示系统外部的各类角色与系统内部的各种用例之间的关系;顺序图(SequenceDiagram):表示对象之间动态合作的关系;协作图(CollaborationDiagram):描述对象之间的协作关系;状态图(StatechartDiagram):描述一类对象的所有可能的状态以及事件发生时状态的转移条件;活动图(ActivityDiagram):描述系统中各种活动的执行顺序。第二十六页,共四十页,编辑于2023年,星期三基于UML的业务建模方法,该方法通过规范化的图形化标记语言,从人员、信息、活动、流程等方面对业务系统进行全面的、结构化的抽象和描述。UML业务建模方法是指对业务系统从静态和动态两个方面进行抽象,并利用UML标记语言记录下来。根据业务系统的特点,UML业务建模方法主要包括业务角色、业务实体、业务活动和业务流程等建模元素以及业务实体关系图、业务流程活动图和业务流程状态图等图形表示。建模的本质是通过抽象获得被建模对象的关键要素,然后基于特定的目的和视角利用图形把模型元素展示出来。图和建模元素之间是关联关系,而不是包含关系。基于UML的业务建模方法对业务进行结构化的抽象,并利用UML标记语言进行图形化展示,可确保对业务系统的全面、正确的理解,其成果并可被信息技术人员理解和重用。第二十七页,共四十页,编辑于2023年,星期三基于UML面向对象分析(OOA)的过程一般如下:获取问题陈述-->确定类-->准备数据字典-->确定关联-->使用继承来细化类型-->完善对象模型-->建立对象动态模型-->建系统功能模型。获取问题陈述就是与用户一起理解系统,搞清楚系统的业务逻辑,发现用户的需求。把问题中承现出来的物理实体和概念描述整理出来,暂时把这些标志成一个类实体,然后清除冗余类和与系统不相干的类.最终得到需要的模型实体。就要让各个实体信息之间产生联系,联系主要包括六种。.

使用继承来细化类,一般可以使用以下两种方式来实现.自底向上:通过把现有类的共同性质一般化为父类,寻找具有相似的属性关系或操作的类来发现继承。这些结果常常是基于客观世界的现有分类,只有可能,应尽量使用现有概念。自顶向下:把现有的类细化为更具体的子类。第二十八页,共四十页,编辑于2023年,星期三基于UML面向对象分析(OOA)的过程一般如下:获取问题陈述-->确定类-->准备数据字典-->确定关联-->使用继承来细化类型-->完善对象模型-->建立对象动态模型-->建系统功能模型。建立对象动态模型。准备脚本:动态分析从寻找事件开始,然后确定各对象的可能事件顺序。确定事件:确定所有外部事件。准备事件跟踪表:把脚本表示成一个事件跟踪表,即不同对象之间的事件排序表,对象为表中的列,给每个对象分配一个独立的列。构造状态图:对各对象类建立状态图,反映对象接收和发送的事件,每个事件跟踪都对应于状态图中的一条路径。建立系统功能模型。功能模型是用来说明值是如何计算的,标明值与值之间的依赖关系及相关的功能。输入、输出值是系统与外界之间的事件的参数。第二十九页,共四十页,编辑于2023年,星期三面向对象设计(OOD)是把分析价段得到的需求转变成符合成本和质量要求的,抽象的系统实现方案的过程。面向对象的准则包括:模块化:对象就是模块,它把数据结构和操作这些数据的方法紧密地结合在一起构成模块。抽象:面向对象方法不仅支持对过程进行抽象,而具支持对数据进行抽象。抽象方法的好坏以及抽象的层次都对系统设计有很大影响信息隐藏:通过对象的封装来实现,对象暴露接口的多少以及接口的好坏对系统设计有很大影响。低耦合:低耦合是设计的一个重要标准,有助于使系统中某一部分的变化对其他部分的影响降到最低。高内聚:内聚度高的模块很容易理解,很容易被复用,扩展和维护。第三十页,共四十页,编辑于2023年,星期三面向对象设计是把分析价段得到的需求转变成符合成本和质量要求的,抽象的系统实现方案的过程。面向对象的实用规则主要包括:设计的结果应该清晰易懂.一般到具体结构的深度应适当.尽量设计小而简单的类.把设计变动减至最小.系统设计是问题求解及建立解答的高级策略,必须制定解决问题的基本方法。系统设计一般是先从高层入手;然后细化;系统设计要决定整个结构及风格,这种结构为后面设计阶段的策略提供基础.第三十一页,共四十页,编辑于2023年,星期三PowerDesigner的面向对象模型(OOM,object-orientedmodel)是利用UML(统一建模语言)的图形来描述系统结构的模型,它从不同的角度来表现系统的工作状态。在OOM中可以设计UML的所有图形,这些UML图形有助于系统分析人员、开发人员、测试人员、管理人员、用户以及其他人员之间进行信息交流。其中,用例图、顺序图和类图等共同组成了OOM的核心。第三十二页,共四十页,编辑于2023年,星期三软件文件的编写编写软件文件的目的和作用软件生存周期和各种文件的编制文件编制中需要考虑的因素文件编制的质量要求第三十三页,共四十页,编辑于2023年,星期三软件文档的目的和作用:提高软件开发过程的能见度。提高开发效率。作为开发人员在一定阶段内的工作成果和结束标志。记录开发过程中的有关技术信息,便于协调以后的软件开发、使用和维护。提供对软件的运行、维护和培训的有关信息。便于潜在用户了解软件的功能、性能等各项指标,为他们选购符合自己需求的软件提供依据。第三十四页,共四十页,编辑于2023年,星期三可行性研究报告项目开发计划软件需求说明书数据要求说明书测试计划概要设计说明书详细设计说明书数据库设计说明书模块开发卷宗

温馨提示

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

最新文档

评论

0/150

提交评论