860 软件工程背诵手册

第一章 软件工程概述

Q1 软件的定义

软件 = 程序 + 数据 + 文档

  1. 程序:按事先设计的功能和性能需求执行的指令序列。
  2. 数据:程序能正常操纵信息的数据结构。
  3. 文档:与程序开发、维护和使用有关的图文材料。

Q2 软件的特点/特征

  1. 软件是逻辑产品,是设计开发的,不是生产制造的。
  2. 软件开发的环境对产品影响较大。
  3. 软件开发的时间和工作量难以估计,几乎无客观的衡量标准。
  4. 软件生产是简单的拷贝,但大多数都是定制。
  5. 软件完全测试非常困难。
  6. 软件不会磨损和老化,但会经历多次修改。
  7. 软件维护易产生新的问题。

Q3 软件危机的概念

在计算机软件的开发和维护过程中所遇到的一系列严重问题。

  1. 项目超出预算
  2. 项目超过计划完成时间
  3. 软件运行效率很低
  4. 软件质量差
  5. 软件通常不符合要求
  6. 项目难以管理并且代码难以维护
  7. 软件不能交付

Q4 软件危机产生的原因:

  1. 客观原因:软件本身的特点
  • 软件是逻辑部件,缺乏可预见性。
  • 软件维护困难。
  • 软件越来越庞大复杂,需要分工协作。
  1. 主观原因:不正确的开发方法
  • 需求分析不充分或者存在错误。
  • 开发过程不规范,错误地认为软件开发等于程序编写。
  • 不注重文档工作,软件难以维护。

Q5 解决软件危机的方法

  1. 对计算机软件有一个正确的认识。
  2. 认识到软件开发是一个组织良好、管理严密、各类人员协同配合共同完成的工程项目。
  3. 推广和使用在实践中总结出来的成功开发软件的技术和方法。
  4. 开发和利用更好的软件工具。

Q6 IEEE计算机协会将软件工程定义为

  1. 应用系统化的、学科化的、定量的方法来开发、运行和维护软件,即将工程运用到软件。
  2. 对1中各种方法的研究。

Q7 软件工程的目标

软件工程的目标是在给定的时间和预算内,按照用户的需求,开发易修改、高效、可靠、可维护、适应力强、可移动、可重用的软件。

Q8 软件工程的层次(三要素)

  1. 工具:它为软件工程的过程和方法提供自动化或半自动化的工具支持。
  2. 方法:软件工程方法是完成软件工程项目的技术手段。
  3. 过程:过程贯穿于软件开发的各个环节,在各个环节之间建立里程碑。
    在这里插入图片描述

Q9 软件工程的发展已经历了四个重要阶段:

  1. 第一代软件工程 — 传统的软件工程
  2. 第二代软件工程 — 对象工程
  3. 第三代软件工程 — 过程工程
  4. 第四代软件工程 — 构件工程

Q10 软件工程的七原则

  1. 使用阶段性生命周期计划的管理。
  2. 进行连续的验证。
  3. 保证严格的产品控制。
  4. 使用现代化编程工具/工程实践。
  5. 保持清晰的责任分配。
  6. 用更少更好的人。
  7. 保持过程改进。

Q11 软件的分类

  1. 系统软件
    操作系统、数据库管理系统、设备驱动程序、通信处理程序。
  2. 支撑软件
    文本编辑程序、文件格式化程序、程序库程序。
  3. 应用软件

第二章 过程模型

Q1 软件过程的定义

软件过程可以定义软件生产的一系列活动,这些活动贯穿于软件开发的整个过程。
五个步骤(通用模型)

  1. 沟通:包括软件设计者与客户沟通、客户提出要求、软件设计者收集资料以及其他相关活动。
  2. 计划:软件开发小组讨论使用何种方法以及何种工具来实现客户需求。
  3. 建模:软件开发小组讨论选择何种模型来满足需求,不同的需求需要不同的模型。
  4. 构造:编码和测试。
  5. 部署:软件交付给客户,客户给出意见和反馈,软件实施小组改进软件。

软件生命周期的概念

软件有一个从孕育、诞生、成长、成熟到衰亡的生存过程,这个过程即软件生命周期。

Q2 能力成熟度模型

  1. 初始级:工作无序,缺乏健全的管理制度。(有能力的人和个人英雄主义)
  2. 可重复级:管理制度化,建立了基本的管理制度和规程,初步实现标准化。(基本的项目管理)
  3. 已定义级:过程标准化,工作和管理工作均已实现标准化、文档化。(过程标准化)
  4. 量化管理级:产品和过程已建立了定量的质量目标,开发活动中的生产率和质量是可度量的。(量化管理)
  5. 优化级:持续的过程改进,拥有防止出现缺陷、识别薄弱环节以及加以改进的手段。(持续的过程改进)

Q3 软件过程模型

软件过程模型是软件开发的全部过程、活动和任务的结构框架。它能直观地表达软件开发的全过程,明确规定要完成的主要任务和开发策略。
软件过程模型也常被称为:软件开发模型、软件生存周期模型、软件工程范型。

Q4 瀑布模型

软件开发过程与软件生命周期是一致的。规定了各项软件工程活动,以及它们自上而下相互衔接的固定次序。是以文档为驱动的模型。

  1. 特点:
  • 阶段间具有顺序性和依赖性。
  • 推迟实现的观点。
  • 每个阶段必须完成规定的文档,每个阶段结束前完成文档审查,及早更正错误。
  • 每个阶段都有与其相关联的里程碑和可交付产品。
  1. 缺点:
  • 线性模型太过理想化
  • 各个阶段划分完全固定,阶段间产生大量文档,极大的增加了工作量。
  • 由于开发模型是线性的,用户只有等到整个开发过程的末期才能见到开发成果,从而增加了开发风险。
  • 早期的错误要等到开发后期的测试阶段才能发现,进而带来了严重的后果。
  1. 优点
  • 在消除软件非结构化,促进软件开发工程化方面起到了很大的作用,提供了软件开发的基本框架。
  1. 适用场合
  • 瀑布模型适用于需求明确、技术成熟、工程管理较为严格的场合。

Q5 推迟实现的观点

  1. 过早地考虑程序的实现,常常导致大量返工,有时甚至给开发人员带来灾难性的后果。
  2. 瀑布模型在编码以前安排了分析阶段和设计阶段,并且明确宣布,这两个阶段都只考虑目标系统的逻辑模型,不涉及软件的物理实现。
  3. 把逻辑设计与物理设计清楚地划分开来,尽可能推迟程序的物理实现,这是瀑布型软件开发的一条重要的指导思想。

Q6 增量过程模型(RAD、增量模型)

增量模型:是一种非整体的开发模型,进化式的开发过程。
具体方法:它允许从部分软件定义出发,先建立一个不完整的系统,通过测试这个系统取得经验和反馈,进一步扩充和完善系统。如此反复进行,直至软件人员和用户对所设计的软件系统满意为止。

  1. 增量模型的特点
  • 增量是小而可用的软件。
  • 在前面增量的开发基础上开发后面的增量。
  • 每个增量的开发可以使用瀑布模型或者原型模型。
  • 迭代的思路。
  1. 增量模型的优点
  • 不需要提供完整的需求,只要有一个增量包的出现,开发就可以进行。
  • 在项目初始阶段不需要投入太多的人力资源。
  • 增量可以有效地管理技术风险。
  • 软件能够较早的进入市场。
  1. 增量模型的缺点
  • 每个增量必须提供一些系统功能,这使开发者很难根据用户需求给出大小合适的增量。
  • 软件必须具备开放式的体系结构。
  • 易退化成边做边改的模式,使软件开发失去整体性。
  1. 适用场合
  • 适用于软件开发需求可能发生变化,具有较大风险或者希望尽早进入市场的项目。

Q7 快速应用开发模型

快速应用开发模型是一个增量过程模型,强调短暂的开发周期。快速应用开发模型是瀑布模型的高速变体,基于组件的构建方法实现。

  1. RAD模型的缺点
  • 对于大型项目而言,RAD需要足够多的人力资源。
  • 开发者和客户都要实现承诺,否则将导致项目的失败。
  • 并非所有的系统都适合(不能合理模块化的系统、高性能需求的系统、技术风险很高的系统均不适合)。

Q8 演化模型

演化模型的思想是首先实现软件最核心、最重要的功能。包括原型模型和螺旋模型。

Q9 原型模型

  1. 适用情况
  • 客户定义了一个总体目标集,但不清楚系统的具体输入输出。
  • 开发者不确定算法的效率、软件与操作系统是否兼容以及客户与计算机的交互方式。
  1. 优点
  • 减少需求不明确带来的风险。
  1. 缺点
  • 设计者在质量和原型之间有所折中。
  • 客户意识不到一些质量问题。
  • 快速建立起来的系统加上连续的修改可能会导致原型质量低下。
  • 构造原型所采用的工具不一定主流。

Q10 螺旋模型

螺旋模型结合了瀑布模型和原型模型的特点。螺旋模型强调风险管理,因此该模型适用于大型系统的开发。螺旋模型的四个象限分别代表了:制定计划、风险分析、实施工程、客户评估。

  1. 螺旋模型的优点
  • 支持用户需求的动态变化。
  • 原型可以看作形式的,可执行的需求规格说明,易于用户和开发者的共同理解,还可以作为继续开发的基础,并为用户参与所有关键决策提供了方便。
  • 螺旋模型强调原型的可扩充性和可修改性。原型的进化贯穿整个软件生存周期,有助于目标软件的适应能力。
  • 螺旋模型为项目管理人员及时调整管理决策提供了方便,进而降低了风险。
  1. 螺旋模型的缺点
  • 如果每次迭代的效率不高,致使迭代的次数过多,将会增加成本,推迟提交时间。
  • 需要丰富的风险评估经验和专门的知识,要求开发队伍水平较高。

Q11 喷泉模型

喷泉模型是一种以用户需求为动力,以对象为驱动的模型,主要用于描述面向对象的软件开发过程。

  1. 优点
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值