计算机自考QQ群:193834516Queen@gmail.com-1-第一章第一章第一章第一章软件工程概论软件工程概论软件工程概论软件工程概论提出软件工程的目的提出软件工程的目的提出软件工程的目的提出软件工程的目的:倡导以工程的原理、原则和方法进行软件开发以解决软件危机。软件危机软件危机软件危机软件危机:软件开发维护的过程中出现的一系列问题。如:成本高、周期长、质量差、文档缺乏、维护困难、跟不上硬件的发展及用户的需求。软件的含义软件的含义软件的含义软件的含义:个体含义个体含义个体含义个体含义:计算机系统中的程序及其文档。程序程序程序程序:计算机任务处理对象及处理规则的描述。文档文档文档文档:理解程序所需的阐述性资料。整体含义整体含义整体含义整体含义:特定计算机系统中上述个体含义下所有软件的总称。学科含义学科含义学科含义学科含义:研究、开发、维护和使用上述含义下的软件所涉及的理论、方法、技术所构成的学科。软件工程软件工程软件工程软件工程:是一类求解软件的过程。它应用计算机科学、数学、管理科学的原理,借鉴传统工程的原则、方法,创建软件以达到提高质量、降低成本的目的。计算机科学计算机科学计算机科学计算机科学、、、、数学数学数学数学:用于构造模型和算法。工程科学工程科学工程科学工程科学:用于制定规范、设计范型、评估成本、确定权衡。管理科学管理科学管理科学管理科学:用于对计划、资源、质量、成本的管理。软件工程框架软件工程框架软件工程框架软件工程框架:目标、活动、原则。目标目标目标目标:制造具有正确性正确性正确性正确性、可用性可用性可用性可用性、开销合宜开销合宜开销合宜开销合宜的软件。活动活动活动活动:生产一个最终满足用户需求,并且达到工程目标的软件,而从事的的一系列活动,包括:需求、设计、实现、确认、支持。原则原则原则原则:选取适宜的开发模型、采用合适的设计方法、提高质量的工程支持、重视开发过程的管理。软件工程的研究内容软件工程的研究内容软件工程的研究内容软件工程的研究内容:软件开发模型、软件设计方法、软件过程、软件工具、软件开发环境、计算机辅助软件工程(CASE)、软件环境、软件经济学。第二章第二章第二章第二章软件开发模型软件开发模型软件开发模型软件开发模型软件开发模型软件开发模型软件开发模型软件开发模型:软件开发全部过程、活动、任务的结构框架。瀑布模型瀑布模型瀑布模型瀑布模型:将软件生村周期的各项活动,规定为依固定顺序联接的若干阶段工作,形如瀑布流水,最终得到软件产品。每阶段每阶段每阶段每阶段的的的的特点特点特点特点:(1)从上一阶段接受本阶段的工作对象,作为输入。(2)对上述输入实施本阶段的活动。(3)将本阶段的工作成果传递给下一阶段,作为输出。(4)对本阶段的工作进行评审,若得到确认则进行下一阶段的工作,否则返回前一阶段,甚至更前阶段。突出的缺点突出的缺点突出的缺点突出的缺点:缺乏灵活性。阶段阶段阶段阶段:系统需求、软件需求、需求分析、设计、编码、测试、运行。演化模型演化模型演化模型演化模型:主要针对事先未能完整定义需求的软件开发。首先开发核心的系统,经过用户试用后,根据用户反馈进行开发的迭代过程。阶段阶段阶段阶段:每一迭代过程均由需求、设计、编码、测试、集成等阶段组成。螺旋模型螺旋模型螺旋模型螺旋模型:在瀑布模型、演化模型的基础上加入二者所忽略的风险分析。阶段阶段阶段阶段:制定计划、风险分析、实施工程、客户评估。喷泉模型喷泉模型喷泉模型喷泉模型:主要用于支持面向对象开发过程,体现了软件开发本身的无间隙性无间隙性无间隙性无间隙性和迭代性迭代性迭代性迭代性。计算机自考QQ群:193834516Queen@gmail.com-2-增量模型增量模型增量模型增量模型:在设计了软件系统的整体体系结构之后,首先完整的实现这一结构的一个初始子集;继之,根据这一子集,建造一个更精细的版本。如此不断地进行系统的增量开发。第三章第三章第三章第三章结构化需求分析结构化需求分析结构化需求分析结构化需求分析需求分析需求分析需求分析需求分析:时期时期时期时期:需求分析位于软件开发的前期。基本任务基本任务基本任务基本任务:是准确定义未来系统的目标,确定为了满足用户的需要系统必须做什么。人员人员人员人员:通常由系统分析员承担。阶段阶段阶段阶段:需求获取、需求规约。需求获取需求获取需求获取需求获取:三大挑战三大挑战三大挑战三大挑战:问题空间理解、人与人间的通信、需求的变化。需求分类需求分类需求分类需求分类:功能性需求、非功能性需求。功能性需求功能性需求功能性需求功能性需求:定义系统做什么。非功能性需求非功能性需求非功能性需求非功能性需求:定义系统工作时的特性。需求获取的原则需求获取的原则需求获取的原则需求获取的原则:抽象、划分、投影。抽象抽象抽象抽象:捕获问题空间的“一般/特殊”关系,是认知、构造问题的一般途径。划分划分划分划分:捕获问题空间的“整体/部分”关系,是降低问题复杂性的基本途径。投影投影投影投影:捕获问题空间的多维视图,是描述问题的基本手段。好的需求获取技术特征好的需求获取技术特征好的需求获取技术特征好的需求获取技术特征:(1)提供方便通信的基础设施,如易于理解的语言。(2)提供定义系统边界的方法。(3)提供支持抽象的基本机制,如“划分”、“映射”等。(4)鼓励使用问题空间术语。(5)提供多种可供选择的设计方法。(6)适应需求的变化。用况用况用况用况((((USECASE)))):用况是一个系统、一个子系统或其他语义实体,提供的一块高内聚的功能。这样的功能通过该语义实体与其他外部交互者交换的消息序列,以及该语义实体执行的一些动作予以表现。用况之间的关系用况之间的关系用况之间的关系用况之间的关系:包含、扩展、泛化。需求规约需求规约需求规约需求规约:需求规约的目的需求规约的目的需求规约的目的需求规约的目的:对需求陈述进行分析和,解决其中的不一致性和二义性,用一种系统的方法准确的表达用户的需求,形成需求规格说明书。结构化方法结构化方法结构化方法结构化方法:结构化方法是一种系统化开发软件的方法,是结构化分析、结构化设计、结构化编码的总称。结构化方法基于模块化的思想,采用“自顶向下,逐步求精”的技术对目标系统进行划分,“抽象”和“分解”是它的两个基本手段。结构化分析的模型表示结构化分析的模型表示结构化分析的模型表示结构化分析的模型表示:结构化分析方法将任何软件系统都看作一个数据变换装置。数据流图数据流图数据流图数据流图是描述数据变换的图形工具,同时辅以数据字典数据字典数据字典数据字典和小说明小说明小说明小说明共同构成备件系统的模型。数据流图数据流图数据流图数据流图:是描述数据变换的图形工具。系统接受输入数据,经过一些列变换,输出结果数据。数据流图的四个基本成分如下:数据加工数据加工数据加工数据加工:数据处理的单元,接受输入数据,经过处理产生输出。用圆圈表示。数据流数据流数据流数据流:数据及其流向。用箭头表示。计算机自考QQ群:193834516Queen@gmail.com-3-数据存储数据存储数据存储数据存储:信息的静态存储。用两条平行线表示。数据源和数据潭数据源和数据潭数据源和数据潭数据源和数据潭:是系统与环境的接口,是系统之外的实体,可以其他人、物或其他软件系统。用矩形表示。数据字典数据字典数据字典数据字典:以一种准确的无二义性的方式藐视所被加工引用的数据流和数据存储。包括数据流条目、数据存储条目、数据项条目。小说明小说明小说明小说明:用于描述一个加工的加工逻辑,以及其他一些和加工有关的信息。加工逻辑是指输入数据和输出数据之间的逻辑关系。小说明可以用自然语言、结构化自然语言、判定表、判定树描述。结构化自然语言结构化自然语言结构化自然语言结构化自然语言:介于形式语言和自然语言之间,采用内外两层语法,外层语法用于描述控制结构,内层语法一般使用自然语言。判定表判定表判定表判定表:分为四个区:条件类别、条件组合、操作、操作执行。实施步骤实施步骤实施步骤实施步骤:本质上说是运用抽象和分解的技术,“自顶向下,逐步求精”的过程。(1)确定系统边界,画出系统环境图。(2)自顶向下画出各层数据流图。(3)定义数据字典。(4)定义小说明。(5)汇总以上各步骤的结果。模型平衡规则模型平衡规则模型平衡规则模型平衡规则:(1)数据流图中的图形元素,按照其用法正确使用。(2)每个数据流和数据存储都在数据字典中有定义,数据字典应包括各层数据流的数据元素定义。(3)数据字典中的定义使用合法的逻辑构造符号。(4)数据流图的最底层加工必须在小说明中定义。(5)父图和子图必须平衡,即父图的输入输出必须和子图的输入输出相一致。(6)小说明和数据流图的图形表示必须一致。控制复杂性的一些规则控制复杂性的一些规则控制复杂性的一些规则控制复杂性的一些规则:(1)上层数据流可以打包,上下层数据流的对应关系用数据字典描述,同层数据流也可以编号对应,避免形成复杂的连线,包内流的性质必须一致。(2)一幅图的图形元素控制在7±2个以内。(3)检查每个加工相关的数据流,寻找是否有其他降低界面复杂性的划分方法。(4)分析数据内容,确定是否每一个输入信息都用于产生输出信息,每一个加工的输出信息都能由该加工的输入信息导出。结构化分析的基本步骤结构化分析的基本步骤结构化分析的基本步骤结构化分析的基本步骤:(1)基于据对现实系统的了解和分析,或者基于需求陈述,建立数据流图。(2)基于数据流图,建立数据字典。(3)基于数据流图,建立底层控制结构的描述。(4)依据需求陈述,建立人机接口及其他性能的描述。(5)分析、验证建立需求规约。需求规格说明书需求规格说明书需求规格说明书需求规格说明书:是需求分析阶段产生的一份最重要的文档,以一种一致的、无二义性的方式准确的表达用户的需求。具有以下重要性:计算机自考QQ群:193834516Queen@gmail.com-4-(1)开发机构和用户之间的事实上的技术合同。(2)下一步设计和编码的基础。(3)测试和验收的依据。第四章第四章第四章第四章结构化设计结构化设计结构化设计结构化设计设计阶段设计阶段设计阶段设计阶段::::主要任务主要任务主要任务主要任务:从需求规格说明书出发,形成具体的设计方案,即确定系统“怎么做”。阶段阶段阶段阶段:总体设计、详细设计。方法方法方法方法:结构化方法、面向数据结构方法、面向对象方法。总体设计总体设计总体设计总体设计:主要任务主要任务主要任务主要任务:将系统的功能需求分配给软件结构,形成软件模块结构图。软件软件软件软件模块模块模块模块结构图结构图结构图结构图((((MSD)))):矩形表示模块,上下层模块间的连线表示调用关系。*总体设计阶段的模块处于黑盒级,模块通过外部特征标识。模块模块模块模块:模块是执行一个特殊的任务,或者实现一个特殊的抽象数据类型的一组例程和数据结构。模块的两部分模块的两部分模块的两部分模块的两部分:接口、实现模块功能的执行机制。工具工具工具工具:层次图、HIPO图、结构图。结构化设计方法结构化设计方法结构化设计方法结构化设计方法:结构化方法是一种典型的模块化方法,采用“自顶向下、逐步细化”的方法将待开发的系统分解成若干个简单的模块。结构化方法提供一系列的映射,将数据流图转化为软件模块结构图,所以结构化方法又称为面向数据流的面向数据流的面向数据流的面向数据流的设计设计设计设计方法方法方法方法。基本思路基本思路基本思路基本思路:对数据流图数据流图数据流图数据流图进行分类,根据不同的类别采用不同的映射方法转化成初始模块结构初始模块结构初始模块结构初始模块结构图图图图,然后根据“高内聚、低耦合”的原则进行精化,得到模块结构图模块结构图模块结构图模块结构图。数据流图的类型数据流图的类型数据流图的类型数据流图的类型:变换型数据流图、事务型数据流图。变换型数据流图变换型数据流图变换型数据流图变换型数据流图:有明显的输入、变换、输出界面的数据流图,原则上所有的数据流图都可以归为变换型。事务型数据流图事务型数据流图事务型数据流图事务