《实用软件工程》复习知识点

 

参考书目:《实用软件工程》 

出版社:人民邮电出版社

编著:张海藩  吕云翔

---------------

很认真写的期末考试总结,供大家参考!

目录

第一部分:概念

第二部分:试卷


第一部分:概念

· 软件包括程序数据文档

· 按照功能的不同,软件可以分为系统软件支撑软件应用软件三类。

· 按照工作方式的不同,计算机软件划分为实时软件分时软件交互式软件批处理软件

· 软件与硬件相比,(1)软件是一种逻辑实体,具有抽象性;(2)软件的生产与硬件的制造不同;(3)软件在运行使用过程中不会磨损;(4)软件的开发至今尚未完全摆脱手工艺的开发方式;(5)软件的开发和运行必须依附于特定的计算机系统环境

· 软件危机(Software Crisis):软件危机就是指人们在开发软件和维护软件过程中所遇到的一系列的问题。

· 软件危机的主要表现为:(1)产品的功能或特性与需求不符;(2)相比越来越廉价的硬件,软件代价过高;(3)软件质量难以得到保证,且难以发挥硬件潜能;(4)难以准确估计软件开发、维护的费用以及开发周期;(5)难于控制开发风险,开发速度赶不上市场变化;(6)软件产品维护困难,集成遗留系统更困难;(7)软件文档不完备,并且存在着文档内容与软件产品不符的情况

· 软件危机出现的原因是:(1)忽视软件开发前期的需求分析;(2)开发过程缺乏统一的、规范化的方法论的指导;(3)文档资料不齐全或不准确;(4)忽视用户之间、开发组成员之间的交流;(5)忽视测试的重要性;(6)不重视维护或由于上述原因造成维护工作的困难;(7)从事软件开发的专业人员对这个产业认识不充分,缺乏经验;(8)没有完善的质量保证体系

· 软件工程(Software Engineering)1968年,在北大西洋公约组织举行的一次学术会议上,人们首次提出了软件工程这个概念。软件工程是借鉴传统工程的原则、方法,以提高质量、降低成本为目的,指导计算机软件的开发和维护的工程学科,软件工程本身是一个交叉学科,它是一种层次化的技术。

· 软件工程的3要素:软件工程以关注质量为目标,其中过程方法工具是软件工程的三要素。

· 软件工程知识体系

1.

软件需求

(software requirements)

软件需求涉及软件需求的获取、分析、规格说明和确认。

2.

软件设计

(software design)

软件设计定义了一个系统或组件的体系结构、组件、接口和其他特征的过程以及这个过程的结果。

3.

软件构建

(software construction)

软件构建是指通过编码、验证、单元测试、集成测试和调试的组合,详细地创建可工作的和有意义的软件。

4.

软件测试

(software testing)

软件测试是为评价和改进产品的质量、标识产品的缺陷和问题而进行的活动。

5.

软件维护

(software maintenance)

软件维护是指由于一个问题或改进的需要而修改代码和相关文档,进而修正现有的软件产品并保留其完整性的过程。

6.

软件配置管理

(software configuration management)

软件配置管理是一个支持性的软件生命周期过程,它是为了系统地控制配置变更,在软件系统的整个生命周期中维持配置的完整性和可追踪性,而标识系统在不同时间点上的配置的学科。

7.

软件工程管理

(software engineering management)

软件工程的管理活动建立在组织和内部基础结构管理、项目管理、度量程序的计划制定和控制三个层次上。

8.

软件工程过程

(software engineering process)

软件工程过程涉及软件生命周期过程本身的定义、实现、评估、管理、变更和改进。

9.

软件工程模型和方法

(software engineering models and methods)

软件工程模型特指在软件的生产、使用与退役等各个过程中的参考模型的总称,诸如需求开发模型、架构设计模型等都属于软件工程模型的范畴;软件开发方法,主要讨论软件开发各种方法及其工作模型。

10.

软件质量

(software quality)

软件质量特征涉及多个方面,保证软件产品的质量是软件工程的重要目标。

 

· 软件产品的6个生命周期可行性研究需求分析软件设计编码软件测试软件维护

· 软件生命周期模型

 

名称

概念及适用范围

优缺点

1.

瀑布模型

概念:瀑布模型是将软件生存周期的各项活动规定为按固定顺序而连接的若干阶段工作,形如瀑布流水,最终得到软件产品;

适用范围:用户需求明确,且在开发过程中没有或很少变更,开发人员对软件应用领域很熟悉,用户使用环境稳定,开发过程对用户参与的要求很低;

优点:过程模型简单,执行容易;

缺点:无法适应变更,不可回溯(sù);

2.

快速原型模型

概念:快速原型模型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成功能的一个子集;

适用范围:进行产品移植或升级时,以及项目招投标时,对所开发的领域比较熟悉;

优点:开发费用低、开发周期短且对用户更友好;

缺点:准确的原型设计比较困难,不利于开发人员的创新;

3.

增量模型

概念:增量模型是把待开发的软件系统模块化,将每个模块作为一个增量组件,从而分批次地分析、设计、编码和测试这些增量组件;

适用范围:进行已有产品升级,对完成期限有严格要求;

优点:用户可以及时了解开发进展,降低了开发风险,开发顺序灵活;

缺点:要求待开发的软件系统可以被模块化;

4.

螺旋模型

概念:螺旋模型是一种演化软件开发过程模型,它兼顾了快速原型的迭代的特征以及瀑布模型的系统化与严格监控。螺旋模型最大的特点在于引入了其他模型不具备的风险分析;

适用范围:螺旋模型只适合于大规模的软件项目;

优点:有利于软件的重用,有助于把软件质量作为开发的重要目标,减少了不必要的测试或测试不足所带来的风险;

缺点:开发人员需要具有丰富的风险评估经验和专业知识;

 

· 软件开发方法有:结构化方法(自顶向下逐步求精的指导思想)、面向数据结构方法(Jackson方法)、面向对象方法(以对象建模为基础,自底向上和自顶向下相结合)。

· 可行性研究的概念:可行性研究就是指在项目进行开发之前,根据项目发起文件和实际情况,对该项目是否能在特定的资源、时间等制约条件下完成做出评估,并且确定它是否值得去开发。

· 可行性研究的8个内容:(1)战略可行性、(2)操作可行性、(3)计划可行性、(4)技术可行性*、(5)社会可行性*、(6)市场可行性、(7)经济可行性*、(8)风险可行性。

· 可行性研究的5个步骤明确系统目标分析研究现行系统设计新系统的高层逻辑模型获得并比较可行的方案撰写可行性研究报告

· 需求分析的2个任务建模阶段描述阶段,描述阶段输出软件需求规格说明书SRS

· 需求分析分为需求获取分析建模需求描述需求验证4步。

· 数据流图(DFD,Data Flow Diagram):数据流图是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经历的变换,便与分析员与用户沟通。数据流图有4种符号,正方形(或立方体)表示数据的源点或终点;圆角矩形(或圆形)代表变换数据的处理;开口矩形(或两条平行横线)代表数据存储;箭头表示数据流。

· 实体关系图(ER,Entity Relationship):描绘数据对象之间的关系,包含实体(矩形)关系(菱形框,一对一1:1一对多1:N多对多M:N)属性(椭圆形或圆角矩形)3种基本成分。

一对一联系(1:1)

一个部门有一个经理,而每个经理只在一个部门任职

一对多联系(1:N)

每位教师可以教多门课程,但是每门课程只能由一位教师来教

多对多联系(M:N)

一个学生可以学多门课程,而每门课程可以有多个学生来学

 

· 状态转换图(STD,State Transition Diagram)的3个基本符号:初态用实心圆表示;中间状态用圆角矩形表示;终态用一对同心圆(内圆为实心圆)表示。

· 数据字典(DD,Data Dictionary):数据字典是描述数据的信息的集合,是对系统中使用的所有数据元素的定义的集合。数据字典是为了描述在结构化分析过程中定义对象时的内容以及所有与系统相关的数据元素的有组织的列表。

· 软件设计就是要把需求规格说明书中归纳的需求转换为可行的解决方案,并把解决方案反映到设计说明书里,需求分析解决的是“做什么”的问题,而软件设计解决了“怎么做”的问题。

· 从工程管理角度来看,软件设计分为概要设计详细设计。概要设计确定软件的结构以及各组成部件之间的相互关系,确定目标系统的总体架构,用层次图结构图HIPO图表示;详细设计确定模块内部的算法和数据结构,描述系统中每个模块的实现算法和细节,用程序流程图、判定表判定树表示。

· 面向对象设计分为系统设计对象设计

· 模块独立:模块的内聚是指模块内部各个元素之间彼此结合的紧密程度;耦合是对各个模块之间互连程度的度量。高内聚(顺序内聚、功能内聚)低耦合(无直接耦合、数据耦合、标记耦合)。

· 启发规则:深度、宽度、扇入、扇出都应适当。

深度

深度表示软件结构中控制的层数,它往往能粗略地标志一个系统的大小和复杂程度

宽度

宽度是软件结构内同一个层次上的模块总数的最大值

扇入

一个模块的扇入表明有多少个上级模块直接调用它

扇出

扇出是一个模块直接控制(调用)的模块数目,扇出过大意味着模块过分复杂

 

· 层次图:用于描述软件的层次结构,矩形框表示一个模块,矩形框之间的直线表示模块之间的调用关系,同结构图一样未指明调用顺序。

· 层次图加输入/处理/输出图(HIPO,Hierarchy plus Input-Process-Output):是IBM 公司在层次图的基础上推出的一种描述系统结构和模块内部处理功能的工具。

· 结构图:Yourdon提出的结构图和层次图类似,也是描绘软件结构的图形工具,图中一个方框代表一个模块,框内注明模块的名字或主要功能;方框之间的箭头(或直线)表示模块的调用关系。

· 数据流分为变换型数据流事物型数据流两种。

· 面向数据结构的设计方法是根据/数据结构/设计程序处理过程/的方法,如Jackson图

· 结构化软件设计的工具:程序流程图*、盒图(N-S图)*、PAD图(二维树形结构)、判定表(一张判定表由4部分组成,左上部列出所有条件,左下部是所有可能做的动作,右上部是表示各种条件组合的一个矩阵,右下部是和每种条件组合相对应的动作)*、判定树*。

· 过程设计语言(PDL,Process Design Language:也称伪码,又称为程序描述语言Program Description Language),它是一种用于描述模块算法设计和处理细节的语言

· 面向对象与面向过程

 

面向对象

面向过程

定义

面向对象顾名思义就是把现实中的事务都抽象成为程序设计中的“对象”,其基本思想是一切皆对象,是一种“自下而上”的设计语言,先设计组件,再完成拼装。

面向过程是“自上而下”的设计语言,先定好框架,再增砖添瓦。通俗点,就是先定好main()函数,然后再逐步实现mian()函数中所要用到的其他方法。

特点

封装、继承、多态

算法+数据结构

优势

适用于大型复杂系统,方便复用

适用于简单系统,容易理解

劣势

比较抽象

难以应对复杂系统,难以复用

语言

Java、C++、C#、Python等

C

 

· 选择编程语言需要考虑的因素:(1)待开发系统的应用领域、(2)用户的要求、(3)软件开发人员的喜好和能力、(4)系统的可移植性要求、(5)算法和数据结构的复杂性、(6)平台支持、(7)避免大量使用循环嵌套和条件嵌套

· 良好的编码风格程序内部的文档数据说明语句构造输入/输出效率

· 软件测试的目的:软件测试的目的是为了发现软件产品中存在的软件缺陷,进而保证软件产品的质量。

· 软件测试的分类:按照测试技术划分,软件测试可分为白盒测试黑盒测试灰盒测试;按照开发阶段分,软件测试可分为单元测试集成测试确认测试系统测试验收测试

· 黑盒测试:黑盒测试又叫功能测试,它主要关注被测软件功能的实现,而不是其内部逻辑。

· 黑盒测试的技术:等价类划分法(有效等价类、无效等价类划分、等价类划分表、有效等价类的测试用例、无效等价类的测试用例)、边界值分析法。

· 逻辑覆盖法:逻辑覆盖法是常用的一类白盒动态测试方法,以程序内部逻辑结构为基础,通过对程序逻辑结构遍历实现程序测试的覆盖。从覆盖原程序语句的详尽程度,可以分为语句覆盖判定覆盖条件覆盖(满足条件覆盖不能满足判定覆盖,同理,满足判定覆盖也不能满足条件覆盖)。操作步骤:(1)画程序流程图;(2)在图上标出路径A.B.C;(3)设计测试用例满足语句/判断/条件覆盖。

· 白盒测试:白盒测试关注软件产品的内部细节和逻辑结构,即把被测的程序看成是一个透明的盒子。

· 基本路径法:基本路径法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行的路径集合,从而设计测试用例的方法。复杂性计算:区域数+1判定节点数+1边数-节点数+2

· 白盒测试和黑盒测试的区别

黑盒测试

白盒测试

不涉及程序结构

考察程序逻辑结构

用软件规格说明书生成测试用例

用程序结构信息生成测试用例

可适用于从单元测试到系统验收测试

主要适用于单元测试和集成测试

某些代码段得不到测试

对所有逻辑路径进行测试

 

· 单元测试:单元测试是开发者通过编写代码检验被测代码的某单元功能是否正确而进行的测试。在进行单元测试时,被测试的单元本身不是独立的程序,需要为其开发駆动模块(也称驱动程序)和桩模块(也称存根程序)。驱动模块是用来模拟待测试模块的上级模块。驱动模块在集成测试中接受测试数据,将相关的数据传送给待测模块,启动待测模块,并打印出相应的结果。桩模块用来模拟待测模块工作过程中所调用的模块。柱模块由待测模块调用,它们一般只进行很少的数据处理,例如打印入口和返回,以便于检验待测模块与下级模块的接口。

· 集成测试:集成测试是在假定各个软件单元已经通过了单元测试的前提下,检查各个软件单元之间的接口是否正确。集成测试是构造软件体系结构的系统化技术,同时也是进行一些旨在发现与接口相关的错误的测试。集成测试策略有:非增量式集成测试和增量式集成测试,自顶向下需要桩模块;自底向上需要驱动模块。

· 确认测试:确认测试是通过检验和提供客观证据,验证软件是否满足特定预期用途的需求。它依据软件需求规格说明书

· 性能测试:性能测试是用来测试软件系统在实际的集成系统中运行的性能。

· 压力测试:压力测试是一种基本的质量保证行为,它是每个重要软件测试工作的一部分。

· 容量测试:容量测试是为了确定测试对象在给定时间内能够持续处理的最大负载或工作量。

· 验收测试以用户为主的测试,应由用户、测试人员、软件开发人员和质量保证人员一起参与,确定产品是否能够满足合同或者用户所规定需求的测试。α测试是在受控的环境中进行的,β测试是软件在开发者不能控制的环境中的“真实”应用。

· 回归测试:回归测试指软件系统被修改或扩充后重新进行的测试。

· 软件维护:软件维护就是指在软件产品交付给用户之后,为了弥补软件测试阶段未发现的缺陷,改进软件产品的性能,补充软件产品的新功能等所进行的修改软件的过程。软件维护可以分为纠错性维护适应性维护完善性维护预防性维护4种类型。

纠错性维护

为了识别并纠正软件产品中所潜藏的错误,弥补软件在性能上的缺陷所进行的维护;

适应性维护

为了使软件产品适应软硬件环境的变更而进行的维护;

完善性维护

它是针对用户对软件产品所提出的新需求所进行的维护;

预防性维护

主要是采用先进的软件工程方法对已经过时的、很可能需要维护的软件系统的某一部分进行重新设计、编码、测试,以达到结构上的更新,它为以后进一步维护软件打下了良好的基础。

 

· 面向对象建模的3种类型:描述系统数据结构的对象模型、描述系统控制结构的动态模型(状态图)、描述系统功能的功能模型(由一组数据流图DFD组成)

· 面向对象

序号

名词

概念

1

对象

在应用领域中有意义的、与所要解决的问题有关系的任何事物都可以作为对象;

2

类是对具有相同属性和行为的一组相似的对象的抽象;

3

属性

属性就是类中所定义的数据,它是对客观世界实体所具有的性质的抽象;

4

封装

封装就是把数据和实现操作的代码集中起来放在对象内部;

5

继承

继承是子类自动地共享父类中定义的数据和方法的机制;

6

多态

在类等级的不同层次中可以共享(公用)一个行为(方法)的名字,然而不同层次中的每个类却各自按自己的需要来实现这个行为;

7

实例

实例就是由某个特定的类所描述的一个具体的对象;

8

消息

消息就是/要求某个对象执行/在定义它的那个类中/所定义的某个操作的规格说明;

9

方法

方法就是对象所能执行的操作,也就是类中所定义的服务;

10

重载

函数重载是指在同一作用域内的若干个参数特征不同的函数可以使用相同的函数名字。

 

· 在UML中,用一端为空心三角形的连线表示泛化(继承)关系;用空心菱形表示关联(共享聚集)关系;用实心菱形表示组成(组合)关系。

· 用例图的4种主要元素:系统(矩形方框)、用例(椭圆)、行为者(箭头)、用例之间的关系(线条人)。

· 建立对象模型:找出候选的类与对象,把陈述中的名词作为类与对象的候选者,用形容词作为确定属性的线索,把动词作为服务(操作)的候选者,然后画出类图。

· 软件工程学/的主要内容是软件开发技术软件工程管理技术

· 软件工程管理是通过计划、组织和控制等一系列活动,合理的配置和使用各种资源,以达到既定目标的过程。内容包括:(1)软件开发成本、(2)控制、(3)开发人员、(4)组织机构、(5)用户、(6)软件开发文档、(7)软件质量。

· 计算程序规模的估计值,最小规模a,最大规模b,最可能的规模m,分别计算出这3种规模的平均值。

· 代码行技术的优缺点

优点

缺点

· 代码行是所有软件开发项目都有的“产品”,而且很容易计算

· 源程序仅是软件配置的一个成分,用它的规模代表整个软件的规模不太合理

· 许多现有的软件估算模型使用LOC或KLOC作为关键的输入数据

· 用不同语言实现同一个软件产品所需要的代码行数并不相同

· 已有大量基于代码行的文献和数据存在

· 这种方法不适用于非过程语言

 

· 处理软件开发风险的策略应该包含3方面的内容风险避免(或缓解)风险监控风险管理和意外事件计划

· 软件开发工作的范围包括软件需求分析、设计、实现、测试、运行和维护。

· 软件工程标准可分为国际标准国家标准行业标准企业规范项目(课题)规范5个等级。

· 软件项目管理与软件工程的关系:软件工程与软件项目管理都是围绕软件产品开发的管理。软件工程是软件开发方法论,是关于如何开发出好的软件产品;软件项目管理是软件产品的生产管理形式,项目目标是项目的绩效。软件工程对于任何软件项目具有指导性,而软件项目管理是落实软件工程思想的载体。

· 民主制程序员组:如果一个小组有n个成员,则可能的通信信道有n(n-1)/2条。

· 主程序员组核心人员的分工:主程序员、后备程序员、编程秘书。

 

第二部分:试卷

  1. 《实用软件工程》期末考试模拟试题A卷-直接打印版
  2. 《实用软件工程》期末考试模拟试题B卷-直接打印版

 

END.

  • 15
    点赞
  • 112
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值