软件工程重点总结由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“软件工程复习重点总结”。
软件的定义:软件是计算机系统中与硬件相互依存的另一部分,软件包括程序、数据及其相关文档的完整集合。
在结构化程序设计时代,程序的最小单位是向对象程序设计时代,程序的最小单位是类,在类中封装了相关的数据及指令代码。软件的特性:形态特性、智能特性、开发特特性、维护特性、废弃特性、应用特性。软件的分类:系统软件、应用软件、支撑软 软件危机的表现:软件开发周期长、成本高、软件危机发生的原因:(1)缺乏软件开发的工作的计划很难制定。(2)软件人员与用户的交流存在障碍。(3)软件开发过程不规范,缺少方法论和规范的指导,开发人员各自为战,缺少整体的规划和配合,不重视文字资料工作,软件难以维护。(4)随着软件规模的增大,其复杂性往往会呈指数级升高。(5)缺少有效的软件测评手段,提高用户的软件质量差,在运行中暴露出大量的问题,轻者影响系统的正常使用,重者发生事故,甚至造成生命财产的重大损失。
首次提出“软件工程”的概念的时间是1968年。
按工程化的原则和方法组织软件开发工作是 软件工程的定义:软件工程是指导软件开发和维护的工程性学科,它以计算机科学理论和其他相关学科的理论为指导,采用工程化的概念、原理、技术和方法进行软件的开发和维护,把经过时间考验而证明是正确的管理技术和当前能够得到的最好的技术方法结合起来,以较少的代价获得高质量的软件并维护它。
软件工程的目标是运用先进的软件开发技术 衡量软件的质量的六个特性:功能性、可靠
软件生存期的三个时期:软件定义、软件开定义时期的主要任务是解决“做什么”的问地满足用户的需要。
开发过程中的典型文档包括:软件需求规格计说明书、用户手册。
各个阶段所要完成的基本任务:问题定义与可行性研究、需求分析、软件设计、程序编码和单元测试、集成测试和系统测试、软件运行和维护。
典型的软件生存期模型包括瀑布模型、原型模型、增量模型、螺旋模型等(喷泉模型)。
瀑布模型的特点:1)阶段间具有顺序性和依赖性。2)推迟实现的观点。3)质量保证的观点。
瀑布模型的优点:①可强迫开发人员采用规范化的方法。②严格地规定了每个阶段必须提交的文档。③要求每个阶段交出的所有产品都必须是经过验证(评审)的。
瀑布模型的缺点:①由于瀑布模型几乎完全依赖于书面的规格说明,很可能导致最终开发出的软件产品不能真正满足用户的需要。如果需求规格说明与用户需求之间有差异,就会发生这种情况。②瀑布模型只适用于项目开始时需求已确定的情况。
快速原型模型的优点:①有助于满足用户的互而得到验证,据此产生的规格说明文档能够正确地描述用户需求。③软件产品的开发基本上是按线性顺序进行。④因为规格说明文档正确地描述了用户需求,因此,在开发过程的后续阶段不会因为发现规格说明文档的错误而进行较大的返工。⑤开发人员通过建立原型系统已经学到了许多东西,因此,在设计和编码阶段发生错误的可能性也比较小,这自然减少了在后续阶段需要改正前面阶段所犯错误的可能性。⑥快速原型的本质是“快速”。开发人员应该尽可能快地创造出原型系统,以加速软件开发过程,节约软件开发成本。原型的用途是获知用户的真正需求,一旦需求确定了,原型可以抛弃,当然也可以在原型的基础上进行开发。
增量模型的优点:①能够在较短的时间内向构件交付之日起,用户就能做一些有用的工作。②逐步增加产品的功能可以使用户有较充裕的时间学习和适应新产品,从而减少全新的软件可能给用户组织带来的冲击。③项目失败的风险较低,虽然在某些增量构件中可能遇到一些问题,但其他增量构件将能够成功地交付给客户。④优先级最高的服务首先交付,然后再将其他增量构件逐次集成进来。一个必然的事实是:最重要的系统服务将接受最多的测试。这意味着系统最重要的部分一般不会遭遇失败。
螺旋模型的优点:①对可选方案和约束条件软件质量作为软件开发的一个重要目标。②减少了过多测试或测试不足所带来的风险。③在螺旋模型中,维护只是模型的另一个周期,因而在维护和开发之间并没有本质区别。螺旋模型的缺点:螺旋模型是风险驱动的,因此要求软件开发人员必须具有丰富的风险评估经验和这方面的专门知识,否则将出现真正的风险:当项目实际上正在走向灾难时,开发人员可能还以为一切正常。
方法学:通常把在软件生命周期全过程中使用的一整套技术的集合称为方法学,也称为范型。
软件工程方法学三个要素:方法、工具和过传统方法也称为生命周期方法或结构化范项任务。这种方法学把软件生命周期的全过程依次划分为若干个阶段,然后顺序地逐步完成每个阶段的任务。每个阶段的开始和结束都有严格的标准,对于任何两个相邻的阶段而言,前一阶段的结束标准就是后一阶段的开始标准。在每个阶段结束之前都必须进行正式评审,评审通过之后这个阶段才结束,否则就需要返工,返工之后还要评审。评审的一条主要标准就是每个阶段都应该交出高质量的工作产品,其中,前面阶段的工作产品主要是文档,如需求规格说明书、软件设计说明书等。
面向对象方法的基本原则,是尽量模拟人类习惯的思维方式,使开发软件的方法和过程尽可能接近人类认识问题和解决问题的方法与过程,从而使描述问题的问题空间与其解空间在结构上尽可能一致。
封装的定义:封装是一种信息隐蔽技术,就作封装在一起。①清楚的边界②接口③受保护的内部实现
软件需求分析阶段的主要工作产品有“软件需求规格说明书”和“初步的用户手册” 需求获取的主要任务是与客户或用户沟通,想要实现什么,系统和产品如何满足业务的要求,最终系统或产品如何用于日常工作
需求获取产生困难的原因:系统的目标或范围问题,需求不准确性问题,需求的易变问题
需求获取活动需解决的问题:1.发现和分析问题,并分析问题的原因/结果关系2.与用户进行各种方式的交流,并使用调查研究方法收集信息3.按照三个成分即数据、过程和接口观察问题的不同侧面4.将获取的需求文档化,形式有例图、决策表、决策树等 软件需求分析阶段的工作4个步骤:需求获取,需求分析,需求定义,需求验证
数据字典以词条方式定义在数据模型、功能息的特性,给出它们的准确定义
设计是技术世界和人类的目标世界结合在一
软件设计的原则:(1)分而治之(2)模块独立(4)复用性设计(5)灵活性设计
模块独立性,是指软件系统中每个模块只涉
复用是指同一事物不做修改或稍加修改就可质量及生产率的重要方法,软件复用已不再局限于软件代码的复用,复用范围已经扩展到软件开发的各个阶段,包括需求模型和规格说明、设计模型、文档、测试用例等复用。模块间的耦合和内聚两个准则来度量模块独的紧密程度)的度量,内聚是模块功能强度(一个模块内部各个元素彼此结合的紧密程度)的度量。模块独立性比较强的模块应是高度内聚、松散耦合的模块。
在最高的抽象层次上,可以使用问题所处环境的语言概括地描述问题的解决方法:在较低的抽象层次上,采用更过程化的方法,将面向问题的术语和面向实现的术语结合起来描述问题的解法;在最低的抽象层次,则用某种程序设计语言来描述问题的解法。从工商管理的角度,可以将软件设计分为两个阶段:概念设计阶段和详细设计阶段。结构图是精确模块结构的图形表示工具。清联系。(1)模块的条用关系和接口(2)模块间的信息传递(3)辅助符号(4)结构图的形态特征(结构图的深度、宽度、扇入和扇出)过程描述工具有:图形工具、表格工具、语
自顶向下、逐步求精方法的优点:1)自顶向遍规律,可提高软件开发的成功率和生产率2)用先全局后局部、先整体后细节、先抽象后具体的逐步求精的过程开发出来的程序具有清晰地层次结构,因此程序更容易阅读和理解3)程序自顶向下,逐步细化,分解成树形结构4)程序清晰和模块化,使得在修改和重新设计一个软件时,可复用的代码量最大5)程序的逻辑结构清晰,有利于程序正确性证明6)每一步工作尽在上层结点的基础上做不多的设计扩展,便于检查7)有利于设计的分工和组织工作
软件测试:在软件投入生产性运行之前,对复审,是软件质量控制的关键步骤。软件测试是为了发现错误而执行程序的过程。
软件测试的目的:①测试是程序的执行过程,目的在于发现错误;②一个好的测试用例在于能发现至今未发现的错误;③一个成功的测试是发现了至今未发现的错误的测试。软件测试的目标是想以最少的时间和人力系 软件测试的原则:
1、尽早地和不断地进行软之对应的预期输出结果这两部分组成;
3、程序员应避免检查自己的程序。测试过程需要三类输入:软件配置、测试配控制流图是描述程序的控制流的一种图示方
环路复杂性V(G)的计算方法:
1、环路复
2、设E为控制流图的边数,N为图中的结点数,则V(G)=E-N+2;
3、设P为控制流图中的判定结点数,则V(G)=P+1.独立路径:是指包括一组以前有没有处理的语句或条件的一条路径。等价类划分是一种典型的黑盒测试方法。有效等价类:是指对于软件的规格说明来说,合理的、有意义的输入数据构成的集合。利用它可以检查程序是否实现了规格说明预先规定的功能和性能。无效等价类:是指对于软件的规格说明来说,软件测试过程的4步骤:单元测试、组装测试、确认测试和系统测试。
驱动模式:相当于被测模块的主程序。它接受测试数据,把这些数据传送给被测模块,最后再输出实测结果。桩模块:也叫存根模块。用以代替被测模块 把模块组装为系统的方式通常有:一次性组确认测试又称有效性测试。它的任务是验证软件的有效性,即验证软件的功能和性能及其他特征是否与用户的要求一直。对软件的功能和性能要求在软件需求规格说明书中已经明确规定。
面向对象分析模型由3个独立的模型构成:用类和对象表示的静态模型(对象模型);有状态图和顺序图表示的动态模型(交互模型)。
以上3个模型的重要程度是不同的。用例模型是整个后续工作的基础,也是测试与验收的依据。由于面向对象系统中,类、接口、及对象是软件的基本组成单元,因此对象模型是必须建立的,也是核心模型,几乎解决任何一个问题都需要从客观世界实体及实体间的相互关系抽象出极有价值的对象模型;当问题涉及交互作用和时序是,动态模型是重要的。
复杂的大型系统的对象模型由5个层次组 在系统分析阶段,对象建模的主要任务是建世界中的类与对象以及它们之间的关系,而非实际的软件类或实际构件。
软件维护类型:改正性维护,适应性维护,影响维护工作量的因素:1.系统规模;2.系4.数据库技术的应用水平;5.所采用的软件开发技术及软件开发工程化的程度;6.其他。针对三种典型的维护,提出策略以控制维护成本。改正性维护的策略方法:数据库管理高级(第四代)语言。软件维护性定义:指当对软件实施各种类型能力。软件维护性子特性:易分析性,易变更性,提高软件维护性的开发技术和工具:1.使用2.实施开发阶段产品的维护性审查;3.改进文档。