1、1软件工程自学指导书一、课程编码及适用专业课程编码:051432211总学时:80面授学时:24自学学时:56适用专业 :计算机应用(函授专科)二、课程性质软件工程是计算机专业的专业课,理论性较强。通过学习,学生应掌握软件工程的基本要求和软件的设计方法和设计过程,学会结构化的分析设计方法、面向对象的分析设计方法以及形式化方法和 UML 语言,为今后进行大型软件设计打下良好的理论基础。三、本课程的地位和作用软件工程是研究软件开发与设计的技术理论课。由于计算机科学发展十分迅速 软件开发与设计在计算机科学中占有重要的地位软件工程课程在高等工科院校成人教育计算机专业的教学计划中是一门重要的专业技术课。
2、通过本课程的学习,使学生获得1、 软件工程基本概念2、 软件生命周期各阶段任务3、 面向对象方法4、 软件项目管理等方面的基本概念、基础理论和基本方法,为今后学习后继课程,从事工程技术及项目开发工作奠定必要的软件分析基础。四、学习目的与要求1. 通过本课程的学习,使学生了解、掌握软件生存周期阶段的工程任务、具体过程、技术过程、技术方法和各种工具;2. 通过本课程的学习,使学生了解软件工程管理的重要性及基本的管理技术;3. 能将上述知识用于该课程的课程设计实习中,实现一个具体题目的全部软件开发过程。五、本课程的学习方法为了学好本课程,首先要具有正确的学习目的和态度,应为我国社会主义现代化事业而学
3、习。在学习中要刻苦钻研、踏踏实实、虚心求教、持之以恒。在学习时要抓住基本概念、基本理论、工作原理和分析方法;要理解问题是如何提出和引申的,又是怎样解决和应用的;要注意各部分内容之间的联系,前后是如何呼应的;要重在理解,能提出问题,积极思考,不要死记;通过习题可以巩固和加深对所学理论的理解,并培养问题分析能力2和运算能力,所以应按要求完成布置的作业题。除学习规定教材外,应参阅相关的参考书。如有条件,可通过实验验证和巩固所学理论,训练实验技能,培养严谨的科学作风。为学好软件工程这门课,学习时应注意以下几点:(1)要抓主要矛盾,有条件地略去一些次要因素,找出问题的本质。(2)要抓住重点,即应牢固掌握
4、基本概念、基本原理和方法。(3)学习是要理论联系实际,重视实践的应用六、自学内容与指导第一章 软件工程学概论(一)自学内容1、软件危机,包括 软件危机的概念 产生软件危机的原因及其 消除软件危机的途径。2、软件工程的基本概念、7 条基本原理、软件工程方法学,3、软件生命周期;4、软件过程模型。(二)本章重点1、软件工程的基本概念、7 条基本原理、软件工程方法学,2、软件生命周期、 软件过程模型。(三)本章难点软件工程的 7 条基本原理、软件工程方法学, 软件过程模型。(四)本章考点1、软件工程的 7 条基本原理、软件工程方法学, 软件过程模型(五)学习指导1、软件工程的目的:倡导以工程的原理、
5、原则和方法进行软件开发,以解决当时出现的软件危机。2、软件危机:在计算机软件开发和维护过程中所遇到的一系列问题。3、软件及组成:计算机系统中的程序和文档称为软件,程序是计算机任务的处理对象和处理规则的描述,文档是为了理解程序所需的阐述性资料。4、软件工程定义:软件工程是一类求解软件的工程,它应用计算机科学、数学及管理科学等原理,借鉴传统工程的原则、方法,创建软件以达到提高质量、降低成本的目的。其中,计算机科学、数学用于构造模型与算法,工程科学用于制定规范、设计范型、评估成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。软件工程是一门指导计算机软件开发和维护的工程学科。5、软件开发模型定
6、义:是软件开发全部过程、活动和任务的结构框架。31、)瀑布模型内容及特点:瀑布模型将软件生存周期的各项活动规定为依固定顺序连接的软干阶段工作,是一种线性模型。各阶段活动为,提出系统需求、提出软件需求、需求分析、设计、编码、测试和运行。每个开发阶段具有以下特征,从上一阶段接受本阶段工作的对象作为输入,对上述输入实施本阶段的活动,给出本阶段的工作成果作为输出传入下一阶段,对本阶段工作进行评审,若本阶段工作得到确认,则继续下阶段工作,否则返回前一阶段甚至更前阶段。瀑布模型最为突出的缺点是该模型缺乏灵活性。2、) 快速原型模型内容及特点:快速原型模型主要针对事先不能完整定义需求的软件开发,其开发过程一
7、般是首先快速建立一个能反映用户主要需求的原型系统,让用户试用,软件开发人员根据用户的反馈,实施开发的迭代过程,每一迭代过程均由需求、设计、编码、测试、集成等阶段组成,直到软件开发结束。快速原型模型在一定程度上减少了软件开发活动的盲目性。3)螺旋模型内容及特点:它是在瀑布模型和演化模型的基础上,加入两者所忽略的风险分析所建立的一种软件开发模型。沿螺旋模型顺时针方向,依次表达了四个方面的活动,制定计划、风险分析、实施工程、客户评估。4)增量模型内容:在设计了软件系统整体体系结构之后,首先完整的开发系统的一个初始子集,继之,根据这一子集,建造一个更加精细的版本,如此不断的进行系统的增量开发。5)瀑布
8、模型、快速原型模型、螺旋模型之间的联系:相同点是这三个模型都分为多个阶段,而瀑布模型一次完成软件,快速原型模型分为多次完成,每次迭代完成软件的一个部分,螺旋模型也分为多次完成,每次完成软件的一个新原型,并考虑风险分析。第二章 可行性研究 (一)自学内容1、可行性研究的任务及过程 2、系统流程图与数据流图 3、数据字典 4、成本效益分析(二)本章重点系统流程图与数据流图。(三)本章难点建立系统的数据流图,(四)本章考点1、 可行性研究的任务2、建立系统的数据流图,数据字典,成本效益分析4(五)学习指导1、可行性研究阶段位于软件开发的前期,它的基本任务是准确地定义未来系统的目标 确定系统的规模。2
9、、系统流程图:是描述物理系统的工具,是描述数据在系统各部件之间的流动情况;是描述系统的物理模型。3、数据流图:是描述数据在软件中流动和被处理的逻辑过程,是系统逻辑功能的图形表示,其描述的是系统的逻辑模型。4、数据流图的 4 种组成成分: 源点/终点(用正方形表示) 、变换数据的处理(用圆形表示) 、数据存储(用开口矩形表示) 、数据流(用箭头表示)5、数据流图的方法与过程:(1) 画出基本系统模型 确定系统的 4 种成分得到功能级数据流图;(2) 对功能级数据流图中描绘的系统主要功能进行细化 ,在细化时 必须保持信息连续性(3) 继续对上一步细化的数据流图的每个功能进一步细化,直到涉及到如何具
10、体实现时就不在分解细化。6、数据字典:数据字典以一种准确的和无二义的方式定义所有被加工引用的数据流和数据存储,通常包括三类内容,数据流条目、数据存储条目、数据项条目第三章 需求分析(一)自学内容1、解需求分析任务以及获取需求分析的方法2、掌握实体-联系图中的内容及状态转换图3、了解其他的图形工具(二)本章重点重点是系统的分析建模 即 系统的实体_联系图,状态转换图, (三)本章难点:建立系统的实体_联系图,状态转换图(四)本章考点:需求分析的任务;建立系统的实体_联系图、状态转换图。(五)学习指导1、需求分析阶段的主要任务是确定系统必须“做什么” ,形成软件的需求规格说明书;2、需求获取通常面
11、临三大挑战:问题空间理解、人与人之间的通信、需求的不断变化。3、用户需求的分类及内容:可以分为两大类,功能性需求和非功能性需求,前者定义了系统做什么,后者定了系统工作时的特性。4、需求获取的基本原则及内容: 需求获取过程中,划分、抽象和投影是人们常用的组织信息的三条基本原则,划分捕获问题空间的“整体/部分”关系,抽象捕获问题空间的“一5般/特殊”或“特例”关系,投影捕获问题空间的多维“视图” 。5、用况(use-case)及其内容,用况之间的关系:一个用况表示了一个系统、一个子系统或其他语义实体所提供的“一块”高内聚的功能,这样的功能是通过该语义实体与一个或多个外部交互者(称为参与者)之间所交
12、换的消息序列,以及该语义实体所执行的一些动作予以表现的,用况之间的关系为,包含、扩展、泛化。6、作为一个好的需求获取技术的显著特征:方便通信(可以通过易于理解的语言) ,提供定义系统边界的方法,提供定义划分、抽象和投影的方法,鼓励分析员用问题空间的术语而不是软件术语去思考问题和编制文档,允许并提醒分析员有多种可供选择的设计方案,适应需求的变化。7、需求规约的目的: 是对需求定义进行分析,解决其中存在的二义性和不一致性,并以一种系统化的形式准确地表达用户的需求,形成所谓的需求规格说明书。8、结构化方法及其手段: 结构化方法是一种系统化开发软件的方法,该方法基于模块化的思想,采用“自顶向下,逐步求
13、精”的技术对系统进行划分,分解和抽象是它的两个基本手段,结构化方法是结构化分析、结构化设计和结构化编程的总称9、实体联系图 描述系统的数据模型 ,有数据对象、数据对象的属性及其数据对象之间的相互关系组成。10、状态转换图 通过描述系统的状态及引起系统状态转换的事件,来表示系统的行为。11、IOP 图:描述系统的输入数据、对数据的处理和输出数据之间的关系。第四章 形式化说明技术(一)自学内容1、形式化说明技术的概述,有穷状态机 ,Petri 网,Z 语言(二)本章重点:有穷状态机,Petri 网,Z 语言(三)本章难点:1、有穷状态机,2、Petri 网,Z 语言(四)本章考点:有穷状态机的概念
14、及组成(五)学习指导1、 有穷状态机、 、Petri 网,Z 语言 是三种典型的形式化的系统的需求分析的规格说明的描述工具。其优点(1)形式化规格说明可以用数学方法研究验证 (2)形式化规格说明消除了二义性6第五章 总体设计(一)自学内容1、总体设计的任务及过程,软件设计的重要概念及规则;2、件设计的图形工具 ,面向数据流的设计方法(二)本章重点:1、总体设计的任务,软件设计的重要原理及规则;2、件设计的图形工具 ,面向数据流的设计方法(三)本章难点:1、面向数据流的设计方法(变换分析与事物分析)(四)本章考点:1、总体设计的任务,软件设计的重要原理2、面向数据流的设计方法(五)学习指导1、总
15、体设计阶段的主要任务及其内容:总体设计阶段的主要任务是把系统的功能需求分配给软件结构,形成软件的模块结构图(MSD),在结构图中矩形表示功能单元,称为“模块”,连接上下层模块的线段表示它们之间的调用关系,在总体设计阶段,每个模块还处于黑盒子级,模块通过外部特征标识,名字、输入、输出。2、 总体设计的表示形式及其内容(层次图、HIPO 图、结构图):层次图是软件总体设计阶段最常使用的表示形式之一,用来描绘软件的层次结构,图中的每个方框代表一个模块,方框间的连线表示模块的调用关系,层次图很适合于在自顶向下设计软件的过程中使用;HIPO 图是由美国 IBM 公司发明的“层次图+输入/处理/输出图”的
16、英文缩写,HIPO 图实际上由 H 图和 IPO 图两部分组成,H 图就是上面提到的层次图,为了能使 HIPO 图具有可跟踪性,在 H 图里除了最顶层的方框之外,每个方框都加了编号;结构图和层次图类似,图中每个方框代表一个模块,方框之间的箭头(或直线)表示模块的调用关系,在结构图中通常还用带注释的箭头表示模块调用过程中来回传递的信息,尾部是空心圆表示传递的是数据,实心圆表示传递的是控制信息。3、 模块及其组成:模块是执行一个特殊任务或实现一个特殊的抽象数据类型的一组例程和数据结构,模块由两部分组成,接口和实现模块功能的执行机制。74、 面向数据流的设计方法(综合应用):面向数据流的设计方法把数
17、据流图映射成为软件结构,数据流图的类型决定了映射的方法,数据流图可以分为变换型数据流图和事务型数据流图,具有较明显的输入、变换(或称主加工)和输出界面的数据流图称为变换型数据流图,数据沿输入通路到达一个处理模块,这个处理模块根据输入数据的类型在若干动作序列中选出一个来执行,这类数据流图称为事务型数据流图,并且称这个模块为事务中心,它完成如下任务,接收输入数据、分析数据并确定数据类型、根据数据类型选取一条活动通路。6、 评价软件设计质量的主要准则(模块化、抽象、耦合、内聚)及详细内容:模块化是好的软件设计的一个基本准则;抽象就是抽出事务的本质特性而暂时不考虑它们的细节,模块是按照不同的抽象级别安
18、排的,高层抽象模块向读者隐藏了功能实现的细节,这就是信息隐蔽,模块之间相互隐藏自身的实现细节对一个好的设计来说是至关重要的;耦合是对不同模块之间相互依赖程度的度量,紧密耦合是指两个模块之间存在着很强的依赖关系,松散耦合是指两个模块之间存在一些依赖关系,但他们之间的连接比较弱,无耦合是指模块之间根本没有任何连接;耦合的强度依赖于以下四个因素,一个模块对另一个模块的引用,一个模块向另一个模块传递的数据量,一个模块施加到另一个模块的控制的数量,模块之间接口的复杂程度;从强到弱的几种常见的耦合类型,内容耦合,一个模块直接修改或操作另一个模块的数据;公共耦合,两个以上的模块共同引用一个全局数据项;控制耦
19、合,一个模块在界面上传递一个信号控制另一个模块,接收信号的模块的动作根据信号值进行调整,称为控制耦合;标记耦合,若两个模块至少有一个通过界面传递的公共参数包含内部结构;数据耦合,模块间通过参数传递基本类型的数据,数据耦合是最简单的耦合形式,系统中至少必须存在这种类型的耦合;内聚度量的是一个模块内部各成分之间相互关联的强度,如果一个模块的所有成分都直接参与并且对于完成同一功能来说都是最基本的,则该模块是高内聚的;从低到高的几种常见的内聚类型,偶然内聚,一个模块的各个成分之间毫无关系;逻辑内聚,几个逻辑上相关的功能被放在同一模块中;时间内聚,一个模块完成的功能必须在同一时间内执行,但这些功能只是因
20、为时间因素关联在一起;过程内聚,一个模块内部的处理成分是相关的,而且这些处理必须以特定的次序执行;通信内聚,一个模块的所有成分都操作同一数据集或生成同一数据集;顺序内聚,一个模块的各个成分和同一个功能密切相关,而且一个成分的输出作为另一个的成分;功能内聚,最理想的内聚是功能内聚,模块的所有成分对于完成单一的功能都是基本的;内聚和耦合是密切相关的,在进行软件设计时,应力争做到强内聚、弱耦合。6、结构化设计的启发式规则:改进软件结构提高模块独立性,模块规模应该适中,深度、宽度、扇入和扇出应适中,模块的作用域应该在控制域之内,力争降低模块接口的复杂性,模块功能应该可以预测;模块的作用域定义为受该模块
21、内一个判定影响的所有模块的集合,模块的控制域是这个模块本身以及所有直接或间接从属于它的模块的集合。87、结构化分析与结构化设计的区别:结构化分析得到数据流图、数据字典等,属于逻辑模型,结构化设计得到模块结构图,属于程序模型。第六章 详细设计 (一)自学内容1、详细设计的任务,结构化程序设计;用户界面设计2、详细设计的图形工具 ,3、面向数据结构的设计方法 4、程序复杂程度的定量度量(二)本章重点:1、详细设计的任务,结构化程序设计;2、详细设计的图形工具 ,3、面向数据结构的设计方法(三)本章难点:1、面向数据结构的设计方法( jackson 方法)(四)本章考点:1、详细设计的任务,结构化程
22、序设计;2、详细设计的图形工具3、面向数据结构的设计方法(五)学习指导1、详细设计阶段的目标、表现、内容:详细设计阶段的根本目标是确定怎样具体的实现所要求的系统,详细设计以总体设计阶段的工作为基础,但又不同于总体设计,主要表现在,在总体设计阶段,数据项和数据结构以比较抽象的方式描述,详细设计要提供关于算法的更多细节;详细设计的模块包含实现对应的总体设计的模块所需要的处理逻辑,主要有,详细的算法,数据表示和数据结构,实施的功能和使用的数据之间的关系。2、结构化程序的三种基本结构,结构化设计的目标:结构化程序设计技术采用自顶向下逐步求精的设计方法和单入口单出口的控制结构,并且只包含顺序、选择和循环
23、三种结构,结构化程序设计的目标之一是使程序的控制流程线性化,即程序的动态执行顺序符合静态书写结构,结构化程序设计的观点是要求设计好结构的程序。3、详细设计的任务,详细设计的工具及其内容特点:详细设计的任务是给出软件模块结构中各个模块的内部过程描述,也就是模块内部的算法设计,详细设计的工具可以分为图形、表格、语言三种,包括程序流程图、盒图(N-S图) 、PAD 图、类程序设计语言(PDL) ;程序流程图中使用的主要符号包括顺序、选择、循环结构,它的主要缺点如下,程序流程图本质上不是逐步求精的好工具,它诱使程序员过早的考虑程序的控制流程,而不去考虑程序的全局结构,程序流程图中用箭头代表控制流,因此
24、程序员不受任何约束,可以9完全不顾结构程序设计的精神,随意转移控制,程序流程图不易表示数据结构;PAD 是问题分析图的英文缩写,它用二维树形结构的图表示程序的控制流,PAD 图的主要优点如下,使用表示结构化控制结构的 PAD 符号所设计出来的程序必然是结构化程序,PAD 图所描述的程序结构十分清晰,用 PAD 图表现程序逻辑,易读、易懂、易记,很容易将 PAD 图转换成高级语言源程序,既可用于表示程序逻辑,也可用于描述数据结构,PAD图的符号支持自顶向下逐步求精的使用,PAD 图是面向高级程序设计语言的;类程序设计语言也称为伪码,它是用正文形式表示数据结构和处理过程的设计工具,PDL 具有以下
25、特点,关键字的固定语法,提供了结构化控制结构、数据说明和模块化的手段,自然语言的自由语法,用于描述处理过程和判定条件,数据说明的手段,既包括简单的数据结构,又包括复杂的数据结构,模块定义和调用的技术,提供各种接口描述模式;PDL 作为一种设计工具有如下一些优点,可以作为注释直接插在源程序中间,可以使用普通的正文编辑程序或文字处理系统,很方面的完成 PDL 的书写和编辑工作,已经有自动处理程序存在,而且可以自动由 PDL 生成程序代码,PDL 的缺点是不如图形工具形象直观,描述复杂的条件组合与动作间的对应关系时,不如判定表或判定树清晰简单。4、Jackson 程序设计方法:根据模块输入与输出数据
26、结构之间的关系得到该模块的程序结构 。第七章 实现 (一)自学内容1、编码、程序语言的选择和编码风格、2、软件测试、软件测试方法(黑盒测试、白盒测试)、软件测试步骤(单元测试、集成测试、确认测试)3、黑盒测试与白盒测试方案的设计 4、软件调试及软件可靠性的估算(二)本章重点:1、软件测试方法(黑盒测试、白盒测试)2、黑盒测试与白盒测试方案的设计(三)本章难点:2、黑盒测试、白盒测试方案的设计(四)本章考点:1、 软件测试、软件测试方法(黑盒测试、白盒测试)2、 件测试步骤(单元测试、集成测试、确认测试)3、 盒测试与白盒测试方案的设计,4、软件调试及软件可靠性的估算(五)学习指导1、两种常用的
27、测试技术:软件产品与其他产品不同,其最大的成本是检验软件的错误、修正错误的成本,以及为了发现这些错误所进行的设计测试程序和运行测试程序的成本,两种常用的测试技术为,基于“白盒”的路径测试技术和基于“ 黑盒”的事务处理流程测试技术,白盒测试技术依据的是程序的逻辑结构,黑盒测试技术依据的是软件行为的描述。102软件测试及其目标:软件测试可以定义为,按照规定规程,发现软件错误的过程,软件测试有两个目标,一为预防错误,二为发现错误。3软件测试和软件调试的区别:测试从一个侧面证明程序员的“失败”,而调试是为了证明程序员的正确,测试以已知条件开始,使用预先定义的程序,且有预知的结果,不可预见的仅是程序员是
28、否通过测试,调试一般是以不可知的内部条件开始,除统计性调试外,结果是不可预见的,测试是有计划的,并要进行测试设计,而调试是不受时间约束的,测试是一个发现错误、改正错误、重新测试的过程,而调试是一个推理过程,测试的执行是有规程的,而调试的执行往往要求程序员进行必要推理以至直觉的“飞跃”,测试经常是由独立的测试组在不了解软件的条件下完成的,而调试必须由了解详细设计的程序员完成,大多数测试的执行和设计可由工具支持,而调试时,程序员能利用的工具主要是调试器。4测试用例:指的是为了发现程序中的故障而专门设计的一组或多组数据。5、软件错误类别:结构错误、数据错误、编程错误、接口错误。6、路径测试的基本策略
29、:路径测试技术的三种基本策略为,路径测试(PX) ,执行所有可能的穿过程序的控制流程路径,语句测试(P1) ,至少执行程序中所有语句一次,100%语句覆盖率(C1)的逻辑覆盖程序最弱,分支测试(P2) ,至少执行程序中每一分支一次(至少每个判定都获得一次“真”和“假”) ,100%分支覆盖率(C2)比 100%语句覆盖在逻辑上要强,条件组合测试,在逻辑上比 C1,C2 更强。7、路径选取的一般规则:选取最简单的、具有一定功能含义的入口/出口路径,对已选的路径进行演化,选取无循环的路径、短路径、简单路径,选取没有明显功能含义的路径。8、路径测试的目标:执行足够的测试,以确保最小的 C1+C2 覆
30、盖率。9、合理的测试序列:单元测试、集成测试、有效性测试、系统测试。10、单元测试及其内容:单元测试主要检验软件设计的最小单位模块,单元测试一般采用白盒测试技术,在单元测试期间,通常考虑模块的四个特征,模块接口、局部数据结构、 “重要的”执行路径、错误执行路径,单元测试步骤分四部分,首先测试穿过模块接口的数据流,继之进行数据结构的测试,还要进行执行路径的选择测试,边界测试是单元测试中的最后工作,也是最重要的工作。11、集成测试及其内容:集成测试是软件组装的一个系统化技术,其目标是发现与接口有关的错误,集成测试是以主控模块为测试驱动模块,设计承接模块替代其直接的下属模块,依据所选取的测试方式,在
31、组合模块时进行测试。12、有效性测试及其手段:有效性测试的目标是发现软件实现的功能与需求规格说明书不一致的错误,有效性测试通常采用黑盒测试技术。13、调试:在测试发现错误之后排除错误的过程。11第八章 维护(一)自学内容1、软件维护的定义及特点 2、维护的进行过程和可维护性 3、软件的可维护性4、软件的再生工程(二)本章重点:软件维护的定义及特点、软件的可维护性、软件的再生工程(三)本章难点:1、软件的再生工程(四)本章考点:软件维护的定义及特点、软件的再生工程(五)学习指导1、四类维护活动:改正性维护、 适应性维护、完善性维护、 预防性维护2、维护性是指纠正软件系统出现的错误和缺陷,以及满足
32、新的要求进行修改、扩充或压缩的容易程度。3、衡量软件质量的几个主要质量特性:可维护性、可使用性、可靠性4、提高可维护性的方法:(1)建立明确的软件质量目标和优先级(2)使用提高软件质量的技术和工具(3)进行明确的质量保证审查(4)选择可维护的程序设计语言(5)改进程序的文档(6)开发软件时考虑到维护5、软件再工程:是一类软件工程活动,是一个工程过程,它将逆向工程、重构和正向工程组合起来,将现存系统重新构造为新的形式。第九章 面向对象设计(一)自学内容1、面向对象基本概念2、面向对象建模:(对象模型,动态模型,功能模型)3、面向对象三种模型之间的关系(二)本章重点:1、面向对象基本概念,2、 、
33、向对象建模:(对象模型,动态模型,功能模型)12(三)本章难点:1、面向对象基本概念,2、面向对象建模:(对象模型,动态模型,功能模型)(四)本章考点:1、面向对象基本概念 2、面向对象建模:(对象模型,动态模型,功能模型)3、面向对象三种模型之间的关系(五)学习指导1、面向对象基本思想:(1)任何事物都是对象,客观世界是由各种互相联系的对象组成的;(2)每个对象都有自己的内部状态和运动规律;(3)不同对象之间相互作用构成了各种各样不同的系统。2、对象(object):一个对象包含了数据和使用这些数据的所有功能(一个封装体)33、类:是对具有相同属性和行为的一组对象的描述,类描述对象的属性名及
34、类型、对象方法的实现途径4、消息:是对象与外部世界关联的唯一途径,对象接收消息后执行某些方法,以便:获取对象状态、改变对象状态、完成某项计算或控制功能 5、继承:一个类可以定义为另一个更一般类的特殊情形,一般类是特殊类的父类,特殊类是一般类的子类;多态性(polymorphism)用相同的操作名在一个类层次的不同类中实现不同的功能,相同的消息由同一(父)类的不同对象接收时,导致不同的行为 7、关联:把一组具有相同结构特性、行为特征和语义的链的描述称为关联。8、链:是对象引用的元组(列表) 。9、依赖:一个依赖规约了两个模型元素(或两个模型元素集合)之间的一种语义关系。10、状态:一个状态是在对
35、象的生命期内的一个条件,或在对象满足某个条件,进行某个动作或等待某个事件的期间内的一个交互。11、事件:指可以引发状态转换的所发生的事情。12、对象模型:描述系统的对象与对象之间的关系 表示静态的、结构化的系统的数据性质。13、动态模型:表示瞬时的、行为化的系统的控制信息。14、功能模型:表示变化的系统的功能性质。第十章 面向对象设计(一)自学内容1、面向对象分析的基本过程及需求陈述,2、建立对象模型、动态模型、功能模型 3、定义服务13(二)本章重点:建立对象模型、动态模型、功能模型、定义服务(三)本章难点:建立对象模型、动态模型、功能模型、定义服务(四)本章考点:建立对象模型(类图) 、动
36、态模型(建立类的状态跟踪图(五)学习指导面向对象方法分析阶段的五个主要活动及其内容:1、标识类及对象、标识结构、标识主体、定义属性及实例连接、定义服务及消息连接;2、两层矩形符号表示类及对象,内层矩形表示类,分为三部分,类名、属性名、服务名,外层矩形表示该类的对象;3、标识的结构有两种,一般/特殊结构和整体/部分结构;4、精炼主题可以从问题域和接口复杂性两方面入手;5、可以从四方面考虑标识属性,原子概念,规范化,标识机制,保持一个可导出的属性。6、 (1)面向对象中特殊的关系集合:一般关系(is a) ,一个对象类中的每一对象是另一对象类的一个对象, (2)聚合关系(is part of) ,
37、一个对象,称之为聚合,是由一些称之为成分的对象构成的,(3)联合关系(is member of) ,该关系用于生成一个由对象构成的集合,并把该集合看作是一个对象,(4)成员类是联合的子集,对象是成员类的子集,对象是联合子集的子集弟第十一章 面向对象设计(一)自学内容1、面向对象设计的准则、启发规则及软件重用,系统分解,2、问题域、人-机交互、任务管理、数据管理等子系统的设计3、设计类中的服务、关联及设计优化(二)本章重点:问题域、人-机交互、任务管理、数据管理等子系统的设计(三)本章难点:问题域、人-机交互、任务管理、数据管理等子系统的设计(四)本章考点:问题域、人-机交互、任务管理、数据管理
38、等子系统的设计(五)学习指导14面向对象设计(OOD)分为四部分,问题域部分,保持系统总体结构的稳定性,人机交互部分,任务管理部分,简化总体设计和编码,数据管理部分,包括数据存放方法的设计和相应服务的设计。第十二章 面向对象测试(一)自学内容1、程序设计语言的选择,程序设计风格,2、面向对象测试(二)本章重点:面向对象测试,及其面向对象测试用例的设计(三)本章难点:面向对象测试,及其面向对象测试用例的设计(四)本章考点:面向对象测试,及其面向对象测试用例的设计(五)学习指导1、完成系统编码后,需要对系统进行测试,它通常包括:单元测试、集成测试、系统测试和验收测试。在单元测试中使用类图和类的规格
39、说明,对单独的类或一组类进行测试;在集成测试中,使用组件图和合作图,对各组件的合作情况进行测试;在系统测试中,使用用例图,以检验所开发的系统是否满足例图所描述的需求。 系统的配置是实际地交付系统,包括文档和组成模型等。第十三章 软件项目管理(一)自学内容1、成本估算 ,进度计划及人员组织2、软件的质量保证,项目计划的制定及管理3、软件工程的管理工具(二)本章重点:COCOMO 模型,GANTT 图,工程网络,关键路径.(三)本章难点:COCOMO 模型,GANTT 图,工程网络,关键路径.15(四)本章考点:COCOMO 模型,GANTT 图,工程网络,关键路径.(五)学习指导1、软件项目管理
40、的对象是软件工程项目。它所涉及的范围覆盖了整个软件工程过程。软件项目开发前需要了解的关键问题:软件开发项目的工作范围;可能风险;需要资源(人、硬件软件)要实现的任务;经历的里程碑;花费工作量(成本) ;进度安排等。软件项目管理可以提供上述信息。2、项目管理过程包括下列活动:启动一个软件项目、度量、估算、风险分析、进度安排、追踪和控制3、软件项目进度安排:(1)制定开发进度计划402040 规则在整个软件开发过程中,编码工作量仅占 20,编码前工作量占 40,编码后工作量占 40。进度安排的图形方法:Gantt,PERT&CPM,明确标明:各个任务的计划开始时间,完成时间;各个任务完成标志(即文
41、档编写和评审) ;各个任务与参与工作的人数,各个任务与工作量之间的衔接情况;完成各个任务所需的物理资源和数据资源。(2)在 GANTT 图中,每一任务完成的标准,不是以能否继续下一阶段任务为标准,而是以必须交付应交付的文档与通过评审为标准。因此在 GANTT 图中,文档编制与评审是软件开发进度的里程碑。(3)PERT 技术叫做计划评审技术,CPM 方法叫做关键路径法,它们都是安排开发进度,制定软件开发计划的最常用的方法。4、项目组织结构设计开发组织采用什么形式,要针对软件项目的特点来决定,同时也与参与人员的素质有关组织原则:(1) 尽早落实责任:在软件项目工作开始时,要尽早指定专人负责。使他有
42、权进行管理,并对任务的完成负全责。 (2)减少接口:一个组织的生产率随完成任务中存在的通信路径数目增加而降低。要有合理的人员分工、好的组织结构、有效的通信,减少不必要的生产率的损失。 (3)责权均衡:软件经理人员所负的责任不应比委任给他的权力还大。七、自学进度及各章节学时安排自学周数 19 周,每周保证 3-4 学时,总计 56 学时。在自学过程中,除了保证时间外一定要做练习,独立完成布置的作业分两次寄回学校。最好将各章后面的有关习题及所介绍参考书上的有关习题也做一下。只有通过练习才能达到对所学内容理解、消化的目的,进而掌握它。各章节学时安排如下(不包括作业学时)16自学进度表周次 学时 重要
43、内容 作业 备注 2 1.软件工程的基本原理 1.软件生命周期 1.4 软件过程 22 3,6,72 3 1 可行性研究的任务及过程3 系统流程图与数据流图数据字典 43 1、 4 1 需求分析的任务及过程3.4 实体联系图,7 图形工具 631,34 2 42 有穷状态机,43 petri网 79 55-6 5 5.1 设计过程 5.2 设计原理5.5 面向数据流的设计方法 1043.(1) 7-8 5 6.1 结构化程序设计原理,6.2 人机界面设计,6.3 过程设计工具 6.4 面向数据结构的程序设计方法 130 4,99 3 7.2 软件测试基础 7.3 单元测试 ,7.4 集成测试,
44、 7.6 白盒测试技术,7.7 黑盒测试技术7.8 调试 7.9 软件的可靠性 173410 2 8.1-8.2 软件维护的定义及特点8.3 软件维护过程,8.4 可维护性 192 1,2第 10 周交作业1112 6 9.2 面向对象的基本概念, 9.3面向对象建模 9.4 对象模型, 9.5 动态模型 9.76 功能模型P2202,3,4,5,6,7,813-14 4 10.110.6 面向对象分析过程 248 115-17 9 11.1-11.3 面向对象的准则11.4-11.10 面向对象子系统的设计 278 1,2第 16 周交作业17-18 4 12.1 程序设计语言12.2 程序设计风格12.3 面向对象的测试 294 1,2,3,4,519-20 7 13.1 估算软件的规模,13.2 工作量估计,13.3 进度计划,13.5质量保证 13.6 软件配置管理八、参考资料1、 软件工程导论 (第四版) 张海藩 主编 清华大学出版社