您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 软件工程导论(第6版)知识点总结、复习课
复习课--------酷爱YC第一章1、什么是软件危机,什么是软件工程软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。它包括两方面:(1)如何开发软件,以满足对软件日益增长的需求;(2)如何维护数量不断膨胀的已有软件。软件工程:采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件,并有效地维护它。2、完整的软件配置由哪些内容组成软件配置主要包括程序,文档和数据等成分。3、软件生命周期分为哪3个时期和8个阶段,每个阶段的任务(工作)分别是什么,重要性如何概括地说,软件生命周期由软件定义、软件开发和运行维护3个时期组成1、软件定义(系统分析)。软件定义时期的任务是:确定软件开发工程必须完成的总目标;确定工程的可行性;导出实现工程目标应该采用的策略及系统必须完成的功能;估计完成该项工程需要的资源和成本,并且制定工程进度表。这个时期的工作通常又称为系统分析,由系统分析员负责完成。软件定义时期通常进一步划分成3个阶段,即问题定义、可行性研究和需求分析。(1)问题定义,确定系统要解决的问题是什么。成果:关于问题性质、工程目标和工程规模的报告。(2)可行性研究,确定问题是否有可用的、能行得通的解(包括:技术、经济、操作、社会等方面的可行性)。这个阶段的任务不是具体解决问题,而是研究问题的范围,探索这个问题是否值得去解,是否有可行的解决办法。成果:可行性研究报告。(3)需求分析,确定软件系统的必须实现的功能、必须达到的性能、必须满足的运行环境要求。系统分析员在需求分析阶段必须和用户密切配合,充分交流信息,以得出经过用户确认的系统逻辑模型。通常用数据流图、数据字典和简要的算法表示系统的逻辑模型。在需求分析阶段确定的系统逻辑模型是以后设计和实现目标系统的基础,因此必须准确完整地体现用户的要求。成果:软件需求规格说明书(SRS),内容包括:系统的逻辑模型;系统(子系统)的名称、功能描述、接口、基本数据结构、性能、设计需求、开发标准、验收原则等。2、软件开发。开发时期具体设计和实现在前一个时期定义的软件,它通常由下述4个阶段组成:总体设计,详细设计,编码和单元测试,综合测试。其中前两个阶段又称为系统设计,后两个阶段又称为系统实现。(1)总体设计(概要设计),回答“怎样实现目标系统”。建立系统的总体结构,划分子系统;确定系统由哪些模块组成,各子系统间、各模块间的关系(包括定义各子系统接口界面和各功能模块的接口,设计全局数据库或数据结构,规定设计约束,制定组装测试计划)。成果:概要设计说明书、数据库或数据结构说明书、系统的组装(集成)测试计划等文档。(2)详细设计任务就是把解法具体化,也就是回答:“应该怎样具体地实现这个系统呢?”,设计每个程序模块的内部细节,包括数据结构、算法以及各程序模块间的接口信息,并设计模块的单元测试计划。成果:详细设计规格说明和单元测试计划等详细设计文档。以上(1)、(2)又合称为软件设计。(3)编码和单元测试这个阶段的关键任务是写出正确的容易理解、容易维护的程序模块。根据详细设计规格说明,选用某种程序设计语言把详细设计的结果转化为机器可运行的源程序模块;运行和调试每一个程序模块;每编写出一个程序模块的源程序,调试通过后,即对该模块进行单元测试。成果:按一定规则存在盘上的通过了单元测试的各功能模块的集合;详细的单元测试报告等文档。(4)综合测试通过各种类型的测试(及相应的调试)使软件达到预定的要求。最基本的测试是集成测试和验收测试。成果:①满足概要设计要求、可运行软件系统和源程序清单;组装测试报告等文档。②验收测试报告、项目开发总结报告,向用户提交的源程序清单、最终用户手册、操作手册等文档资料;由专家、用户负责人、软件开发和管理人员组成软件评审小组对软件验收测试报告、测试结果和软件进行评审,最终验收软件产品。以上(3)、(4)又合称为软件实现。三种不同的软件测试:单元测试、集成测试、验收测试。3、软件运行与维护软件技术人员通过各种维护活动使软件系统持久满足用户需要。通常有4类维护活动:改正性维护,也就是诊断和改正在使用过程中发现的软件错误;适应性维护,即修改软件以适应环境的变化;完善性维护,即根据用户的要求改进或扩充软件使它更完善;预防性维护,即修改软件为将来的维护活动预先做准备。成果:①更新后的软件产品;②准确记录维护活动的文档。4、几种传统软件工程生命周期模型:瀑布模型:基本思想、主要优点传统的瀑布模型基本思想:瀑布模型严格按照软件生存周期各个阶段来进行开发,上一阶段的输出即是下一阶段的输入,并强调每一阶段的严格性。它规定了各阶段的任务和应提交的成果及文档,每一阶段的任务完成后,都必须对其阶段性产品(主要是文档)进行评审,通过后才能开始下一阶段的工作。因此,它是一种以文档作为驱动的模型。优点:可强迫开发人员采用规范的方法;严格地规定了每个阶段必须提交的文档;要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。快速原型模型:基本思想基本思想:软件开发人员根据用户提出的软件基本需求快速开发一个原型,以便向用户展示软件系统应有的一部分或全部功能和性能,同时使用户熟悉系统。在征求用户对原型的初步意见后,进一步使需求全面化、精确化,并据此改进、完善原型。如此迭代,直到软件开发人员和用户都通过原型确认软件系统的需求并达成一致的理解为止。软件需求确定后,便可进行设计,编码、测试等以后的各个开发步骤。增量模型:基本思想、主要优点基本思想:把一个软件产品划分为一系列的增量构件来设计、编码、集成和测试,并逐个添加到软件产品中去,逐步向用户提交产品。每个构件能够完成特定的功能优点:(1)软件的实现和维护阶段没有明显的分界线;(2)用户在很短时间内就可以使用产品的部分功能(3)用户适应新产品的时间较充裕(4)构件的分解要易于测试、规模适中(5)软件的体系结构是开放的,易于扩充和维护螺旋模型:引入的原因,与瀑布模型、快速原型模型的联系基本思想:软件风险是任何软件开发项目中都普遍存在的实际问题,项目越大,软件越复杂,承担该项目所冒的风险也越大。软件风险可能在不同程度上损害软件开发过程和软件产品质量。构建原型是一种能使某些类型的风险降至最低的方法。螺旋模型的基本思想是,使用原型及其他方法来尽量降低风险。联系:简化的螺旋模型是在快速原型模型的基础上扩展而成的,把它看作在每个阶段之前都增加了风险分析过程的快速原型模型。完整的螺旋模型,将瀑布模型与原型模型结合起来,并且加入前两种模型均忽略了的风险分析瀑布模型的优点:有利于大型软件开发过程中人员的组织、管理,有利于软件开发方法和工具的研究,从而提高了大型软件项目开发的质量和效率。瀑布模型的缺点:(1)开发过程一般不能逆转,否则代价太大;(2)实际的项目开发很难严格按该模型进行;(3)客户往往很难清楚地给出所有的需求,而该模型却要求如此。(4)软件的实际情况必须到项目开发的后期客户才能看到,这要求客户有足够的耐心。瀑布模型的使用范围:(1)用户的需求非常清楚全面,且在开发过程中没有或很少变化;(2)开发人员对软件的应用领域很熟悉;(3)用户的使用环境非常稳定;(4)开发工作对用户参与的要求很低。快速原型模型的优点:(1)可以得到比较良好的需求定义,容易适应需求的变化;(2)有利于开发与培训的同步;(3)开发费用低、开发周期短且对用户更友好。快速原型模型的缺点:(1)客户与开发者对原型理解不同;(2)准确的原型设计比较困难;(3)不利于开发人员的创新。快速原型模型的使用范围:(1)对所开发的领域比较熟悉而且有快速的原型开发工具;(2)项目招投标时,可以以原型模型作为软件的开发模型;(3)进行产品移植或升级时,或对已有产品原型进行客户化工作时,原型模型是非常适合的。增量模型的优点:(1)采用增量模型的优点是人员分配灵活,刚开始不用投入大量人力资源;(2)如果核心产品很受欢迎,则可增加人力实现下一个增量;(3)可先发布部分功能给客户,对客户起到镇静剂的作用。增量模型的缺点:(1)并行开发构件有可能遇到不能集成的风险,软件必须具备开放式的体系结构;(2)增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而是软件过程的控制失去整体性。增量模型的使用范围:(1)进行已有产品升级或新版本开发,增量模型是非常适合的;(2)对完成期限严格要求的产品,可以使用增量模型;(3)对所开发的领域比较熟悉而且已有原型系统,增量模型也是非常适合的。螺旋模型的优点:(1)设计上的灵活性,可以在项目的各个阶段进行变更;(2)以小的分段来构建大型系统,使成本计算变得简单容易;(3)客户始终参与每个阶段的开发,保证了项目不偏离正确方向以及项目的可控性;(4)随着项目推进,客户始终掌握项目的最新信息,从而他或她能够和管理层有效地交互。螺旋模型的缺点:(1)采用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失;(2)过多的迭代次数会增加开发成本,延迟提交时间。螺旋模型的使用范围:螺旋模型只适合于大规模的软件项目。第二章什么是:经济可行性、技术可行性、运行与操作可行性、法律可行性(1)经济可行性:这个系统的经济效益能超过它的开发成本吗?估算项目的开发成本和系统投入使用后可能带来的利润,进行成本/效益分析,从经济角度判断系统开发是否“合算”。(2)技术可行性:使用现有的技术能实现这个系统吗?根据客户提出的系统功能、性能要求,从开发者的技术实力、以往工作基础、问题的复杂性等出发,判断系统开发在时间、费用及其他各项约束条件限制下成功的可能性。(3)运行、操作可行性:系统的操作方式在这个用户组织内行得通吗?主要研究系统的运行方式在用户单位是否可以被有效地实施,是否与原有其他系统相矛盾;系统的操作规程在用户单位内是否可行,它包括人事、科技政策、管理方法等等。(4)法律可行性:系统的开发使用,在当国当地当时合法吗?利用软件工程的方法设计开发软件系统的过程第三章需求分析的基本任务1.确定需求--确定对系统的综合要求(1)功能需求(2)性能需求(3)可靠性和可用性需求(4)出错处理需求(5)接口需求(6)约束(7)逆向需求(8)将来可能提出的要求2.建立数据模型--利用图形工具描述系统数据结构并将数据结构规范化,建立数据模型3.导出系统的逻辑模型--通常用数据流图、实体--联系图、状态转换图、数据字典和主要的处理算法描述整个逻辑模型4.编写需求规格说明书5.修正系统开发计划本阶段结束形成的基本文档软件需求规格说明书结构化分析应建立哪三大模型,分别用什么工具描述数据模型—数据流图功能模型—实体-联系图(E-R图)行为模型—状态图数据流图、E-R图、状态转换图的构成数据流图--系统逻辑功能的描述工具4种成分:源点和终点,处理,数据存储,数据流E-R图:实体(即数据对象)----矩形框,关系----菱形框,属性----椭圆形或圆角矩形状态转换图:状态,事件,状态转换数据字典:数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素进行定义的集合。它的作用正是在软件分析和设计的过程中给人提供关于数据的描述信息。数据流图和数据字典共同构成系统可行性研究阶段的逻辑模型。数据字典的实现(1)用Case工具中的数据字典处理程序对数据字典进行生成和编辑;(2)通过手工制作卡片来制作数据字典。每张卡片上保存描述一个数据的信息,主要应该包含下述这样一些信息:名字、别名、描述、定义、位置。第五章1、总体设计过程包含哪两个工作阶段,各完成什么任务第一阶段:系统设计阶段,确定系统的物理实现方案(1)设想(完善)供选择的方案(2)选取合理的方案(3)推荐最佳方案第二阶段:结构设计阶段,确定软件的结构(1)功能分解,从实现的角度细化逻辑模型(2)设计软件结构(3)设计数据库(4)制定测试计划(5)书写文档(6)审查和复审2、软件
本文标题:软件工程导论(第6版)知识点总结、复习课
链接地址:https://www.777doc.com/doc-1666311 .html