复习提纲对应教材为《软件工程(第3版)》,清华大学出版
以下考点是笔者所在大学对应课程期末考试的考点,仅涉及全书部分知识点
软件工程定义
软件工程是应用计算机科学理论和技术以及工程管理原则和方法,安远和进度实现满足用户要求的软件产品的工程,或以此为研究对象的学科。
《计算机科学技术百科全书》中的定义
软件危机解释
软件危机指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
随着计算机在各个领域的广泛应用,软件的需求量越来越大,软件的复杂度也越来越高,导致软件的开发远远满足不了 会发展的需要,超出预算的经费、超过预期的交付时间的事情经常发生。
由于缺乏文档以及没有好的开发方法的指导,使得大量已有的软件难以维护,到20世纪60年代中期出现了人们难以控制的局面,即“软件危机”。
软件生存周期
-
计算机系统工程
计算机系统工程的任务是确定待开发软件的总体要求和范围,以及该软件与其他计算机系统元素之间的关系,进行成本估算,作出进度安排,并进行可行性分析。
-
需求分析
需求分析主要解决待开发软件要“做什么”的问题,确定软件的功能、性能、数据、界面等要求,生成软件需求规约(也称软件需求规格说明)。
-
设计
系统设计的任务是设计软件系统的体系结构,详细设计的任务是设计各个组成成分的实现细节,包括局部数据结构和算法。
-
编码
编码阶段的任务是用某种程序设计语言,将设计的结果转换为可执行的程序代码。
-
测试
测试阶段的任务是发现并纠正软件中的错误和缺陷。
-
运行和维护
软件交付使用后,在软件运行期间,当发现了软件中潜藏的错误或需要增加新的功能或使软件适应外部环境的变化等情况出现时,对软件进行修改。
典型软件工程模型
-
瀑布模型
上一阶段的活动完成并经过评审才能开始下一阶段的活动,接受上一阶段活动的结果作为本阶段活动的输入,依据上一阶段活动的结果实施本阶段应完成的活动,对本阶段的活动进行评审。
-
原型模型
开发人员和用户在“原型”上达成一致,缩短了开发周期,加快了工程进度,降低成本。
-
喷泉模型
各个阶段没有明显的界限,开发人员可以同步进行开发,可以提高软件项目开发效率,节省开发时间,适应于面向对象的软件开发过程。
-
内聚
内聚(cohesion)是一个模块内部各个元素彼此结合的紧密程度的度量,内聚类型如下。
-
巧合内聚:讲几个模块中没有明确表现出独立功能的相同程序代码段独立出来建立的模块称巧合内聚模块。
-
逻辑内聚:逻辑内聚是指完成一组逻辑相关任务的模块,调用该模块时,由传送给模块的控制性参数来确定该模块应执行哪一种功能。
-
时间内聚:时间内聚是指一个模块中的所有任务必须在同一时间段内执行。
-
过程内聚:过程内聚是指一个模块完成多个任务,这些任务必须指定的过程执行。
-
通信内聚:通信内聚是指一个模块内所有处理元素都集中在某个数据结构的一块区域中。
-
顺序内聚:顺序内聚是指一个模块完成多个功能,这些功能又必须顺序执行
-
功能内聚:功能内聚是指一个模块中各个部分都是为完成一项具体功能而协同工作,紧密联系,不可分割。
结构图的几个概念
- 深度:结构图中控制的层数。
- 宽度:结构图中同一层次上模块总数的最大值。
- 扇出:模块直接调用的模块数目。
- 扇入:直接调用该模块的模块数目。
JSP方法的分析和设计步骤
- 分析并确定输入和输出结构的逻辑结构,并用Jackson图画出
- 找出输入数据结构和输出数据结构中有对应关系的数据元素
- 从描述数据结构的Jackson图导出描述程序结构的Jackson图
- 列出所有操作和条件,并将它们分配到程序结构图的适当位置
- 用伪码表示
软件测试的概念及目的
设计若干测试用例(test case),一个测试用例由测试输入数据和预期结果组成,测试时通过输入数据,运行被测程序,比对输出结果和预期结果。
软件测试的目的是发现软件中的错误和缺陷,并加以纠正。
白盒测试和黑盒测试的概念
-
白盒测试
白盒测试又称结构测试,这种方法把测试对象看做一个透明的盒子,测试人员根据程序内部的逻辑结构及有关信息设计测试用例,检查程序中所有逻辑路径是否都按预定的要求正确地工作。白盒测试主要用于对程序模块的测试。包括:
-
程序模块中的所有独立路径至少执行一次。
-
对所有逻辑判定的取值(“真”与“假”)都至少测试一次。
-
在上下边界及可操作范围内运行所有循环
-
测试内部数据结构的有效性等
-
-
黑盒测试
黑盒测试又称行为测试,这种方法吧测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符和它的功能需求。黑盒测试可用于各种测试,它试图发现以下类型的错误:
-
不正确或遗漏的功能
-
接口错误,如输入输出参数的个数、类型等
-
数据结构错误或外部信息(如外部数据库)访问错误
-
性能错误
-
初始化和终止错误
-
白盒测试主要方法
- 逻辑覆盖测试
- 逻辑表达式错误敏感的测试
- 基本路径测试
- 数据流测试
- 循环测试
黑盒测试主要方法
- 等价类划分
- 边界值分析
- 比较测试
- 错误猜测
- 因果图方法
软件维护概念及分类
软件维护是指软件系统交付使用之后。为了改正错误或满足心得需要而修改软件的过程,其分类如下。
- 纠错性维护
- 适应性维护
- 改善性维护
- 预防性维护
软件维护过程
- 维护组织
- 维护过程
- 维护记录
- 维护评价
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!