系统分析与设计作业(一):基本概念

简答题

1. 软件工程的定义

软件工程是对软件的开发、操作和维护应用系统的、有纪律的、可量化的方法,即工程对软件的应用和对方法的研究。

2. 解释导致 software crisis 本质原因、表现,述说克服软件危机的方法

软件危机是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象

导致软件危机的原因有以下几个:一是用户需求不明确;二是缺乏正确的理论指导;三是软件开发规模越来越大;四是软件开发复杂度越来越高。

软件危机的表现有以下几个:一是软件开发进度难以预测;二是软件开发成本难以控制;三是用户对产品功能难以满足;四是软件产品质量无法保证;五是软件产品难以维护;六是软件缺少适当的文档资料。

软件危机的解决方法: 软件工程学科的应用和发展可以解决软件危机。软件工程是对软件的开发、操作和维护应用系统的、有纪律的、可量化的方法,即工程对软件的应用和对方法的研究。利用软件工程的知识理论可以指导和支持软件系统的生产活动,以期达到降低软件生产成本 、改进软件产品质量、提高软件生产率水平的目标。并且使用各种软件工具以协助软件项目的开发与管理,有助于解决软件危机。还有吗,软件的标准化有助于提高软件的可重用性,这对缓解软件危机方面起到了重要作用。

3. 软件生命周期

软件生命周期可以用瀑布模型来描述,如下图:

在这里插入图片描述

软件生命周期可以分为6个部分:

  1. 软件计划:这个阶段主要的是任务是研究项目的可行性,需要的文档是可行性分析报告。
  2. 需求分析:这个阶段是软件设计,验收的依据。主要文档是软件需求规格说明书,使用的工具是DFD图(数据流图),DD图(数据字典),判定树与判定表。
  3. 软件设计:将软件需求转换为软件表示。主要文档是概要设计说明书和集成测试。使用的工具包括PAD图,程序流程图,系统结构图。
  4. 程序编码:将软件需求转换为软件。
  5. 软件测试:要严格执行测试计划,通过黑盒测试和白盒测试,来发现错误。
  6. 运行维护:对软件进行日常的维护升级。

4. SWEBoK 的 15 个知识域(An Overview of the SWEBOK Guide 请中文翻译其名称与简短说明)

  1. Software Requirements: 软件要求,软件要求KA关注软件需求的启发,协商,分析,规范和验证。 在软件行业中,人们普遍认为,当这些活动表现不佳时,软件工程项目非常容易受到攻击。 软件需求表达了对软件产品的需求和限制,这些需求和约束有助于解决一些现实问题。
  2. Software Design:软件设计,设计被定义为定义系统或组件的体系结构,组件,接口和其他特征的过程以及[该]过程的结果(IEEE 1991)。 软件设计KA涵盖了设计过程和最终产品。 软件设计过程是软件工程生命周期活动,其中分析软件需求以产生软件内部结构及其行为的描述,其将作为其构造的基础。 软件设计(结果)必须描述软件体系结构 - 即软件如何分解和组织成组件以及这些组件之间的接口。 它还必须描述能够构建它们的详细程度的组件。
  3. Software Construction:软件构建,软件构建是指通过结合详细设计,编码,单元测试,集成测试,调试和验证来详细创建工作软件。 软件构建KA包括与满足其要求和设计约束的软件程序开发相关的主题。 该KA涵盖了软件构建基础; 管理软件建设; 建筑技术; 实际考虑; 和软件构建工具。
  4. Software Testing:软件测试,测试是一项旨在评估产品质量并通过识别缺陷来改进产品质量的活动。 软件测试涉及在有限的测试用例集上针对预期行为动态验证程序的行为。 这些测试用例是从(通常非常大的)执行域中选择的。 软件测试KA包括软件测试的基础知识; 测试技术; 人机界面测试与评估; 与测试有关的措施; 和实际考虑。
  5. Software Maintenance:软件维护,软件维护包括增强现有功能,调整软件以在新的和修改的操作环境中运行,以及纠正缺陷。 这些类别称为完善,自适应和纠正性软件维护。 软件维护KA包括软件维护的基础知识(维护的性质和需求,维护类别,维护成本); 软件维护中的关键问题(技术问题,管理问题,维护成本估算,软件维护测量); 维护过程; 软件维护技术(程序理解,重新设计,逆向工程,重构,软件退役); 灾难恢复技术和软件维护工具。
  6. Software Configuration Management:软件配置管理,系统的配置是硬件,固件,软件或这些的组合的功能和/或物理特征。 它还可以被视为根据特定构建过程组合的特定版本的硬件,固件或软件项的集合,以满足特定目的。 因此,软件配置管理(SCM)是在不同时间点识别系统配置的规则,用于系统地控制配置的改变,以及在整个软件生命周期中维持配置的完整性和可追溯性。 软件配置管理KA涵盖SCM过程的管理; 软件配置识别,控制,状态核算,审计; 软件发布管理和交付; 和软件配置管理工具。
  7. Software Engineering Management:软件工程管理,软件工程管理涉及规划,协调,测量,报告和控制项目或程序,以确保软件的开发和维护是系统化的,规范化的和量化的。 软件工程管理KA涵盖了启动和范围定义(确定和协商要求,可行性分析以及要求的审查和修订); 软件项目计划(过程计划,工作量估算,成本和进度,资源分配,风险分析,质量计划); 软件项目制定(计量,报告和控制;收购和供应商合同管理); 产品验收; 审查和分析项目绩效; 项目结束; 和软件管理工具。
  8. Software Engineering Process:软件工程过程,软件工程KA关注软件生命周期过程的定义,实施,评估,测量,管理和改进。 涵盖的主题包括流程实施和变更(流程基础架构,流程实施和变更模型以及软件流程管理); 流程定义(软件生命周期模型和流程,流程定义,流程适应和流程自动化的符号); 过程评估模型和方法; 测量(过程测量,产品测量,测量技术和测量结果的质量); 和软件处理工具。
  9. Software Engineering Models and Methods:软件工程模型和方法,软件工程模型和方法KA解决了涵盖多个生命周期阶段的方法; 其他KAs涵盖特定生命周期阶段的特定方法。 涵盖的主题包括建模(软件工程模型的原理和属性;语法与语义与不变量;前置条件,后置条件和不变量); 模型类型(信息,结构和行为模型); 分析(分析正确性,完整性,一致性,质量和相互作用;可追溯性;以及权衡分析); 和软件开发方法(启发式方法,形式方法,原型方法和敏捷方法)。
  10. Software Quality:软件质量,软件质量是许多SWEBOK V3 KAs中普遍存在的软件生命周期问题。 此外,软件质量KA还包括软件质量的基础知识(软件工程文化,软件质量特性,软件质量的价值和成本以及软件质量改进); 软件质量管理流程(软件质量保证,验证和确认,审核和审核); 和实际考虑(缺陷表征,软件质量测量和软件质量工具)。
  11. Software Engineering Professional Practice:软件工程专业实践,软件工程专业实践关注软件工程师必须具备的专业,负责和道德的软件工程知识,技能和态度。 软件工程专业实践KA涵盖专业性(专业行为,专业协会,软件工程标准,雇佣合同和法律问题); 道德准则; 小组动态(团队合作,认知问题复杂性,与利益相关者互动,处理不确定性和模糊性,处理多元文化环境); 和沟通技巧。
  12. Software Engineering Economics:软件工程经济学,软件工程经济学KA关注的是在业务环境中做出决策,以使技术决策与组织的业务目标保持一致。 涵盖的主题包括软件工程经济学的基本原理(提案,现金流量,货币时间价值,计划视野,通货膨胀,折旧,替代和退休决策); 非营利性决策(成本效益分析,优化分析); 估计,经济风险和不确定性(估算技术,风险决策和不确定性); 和多属性决策(价值和衡量尺度,补偿和非补偿技术)。
  13. Computing Foundations:计算基础,计算基础KA涵盖了提供软件工程实践所需的计算背景的基础主题。 涵盖的主题包括问题解决技术,抽象,算法和复杂性,编程基础,并行和分布式计算的基础知识,计算机组织,操作系统和网络通信。
  14. Mathematical Foundations:数学基础,数学基础KA涵盖了提供软件工程实践所必需的数学背景的基础主题。 涵盖的主题包括集合,关系和功能; 基本命题和谓词逻辑; 证明技术; 图形和树木; 离散概率; 语法和有限状态机; 和数论。
  15. Engineering Foundations:工程基础,工程基础KA涵盖了提供软件工程实践所必需的工程背景的基础主题。 涵盖的主题包括经验方法和实验技术; 统计分析; 测量和指标; 工程设计; 仿真与建模; 和根本原因分析。

5. 简单解释 CMMI 的五个级别。例如:Level 1 - Initial:无序,自发生产模式。

  1. Level 1 - Initial:无序,自发生产模式
  2. Level 2 - Managed:以项目为特征的过程,通常具有反应性
  3. Level 3 - Defined:以组织为特征的流程,具有前瞻性
  4. Level 4 - Quantitatively Managed:过程测量和控制
  5. Level 5 - Optimizing:专注于流程改进

6. 用自己语言简述 SWEBok 或 CMMI (约200字)

CMMI全称为Capability Maturity Model Integration,即能力成熟度模型集成,是一个过程级别改进培训和评估计划。其目的是帮助软件企业对软件工程过程进行管理和改进,增强开发与改进能力,从而能按时地、不超预算地开发出高质量的软件。其所依据的想法是:只要集中精力持续努力去建立有效的软件工程过程的基础结构,不断进行管理的实践和过程的改进,就可以克服软件开发中的困难。

坚持原创技术分享,您的支持将鼓励我继续创作!