系统分析与设计 - Homework1

简答题

1. 软件工程的定义

软件工程是指导计算机软件开发和维护的工程学科,结合了工程、管理和技术的方法,是将系统的、规范的、可度量的方法应用于软件的开发、运行和维护的过程。

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

根本原因

造成软件危机的本质原因是计算机性能和软件复杂性的快速增长导致了当前的解决方案不能胜任,是软件的大量需求和软件生产效率之间的矛盾和软件系统复杂性和软件开发方法之间的矛盾。

表现

其表现为下列几点:

  1. 项目超预算
  2. 项目超时
  3. 软件低效
  4. 软件低质量
  5. 软件经常不满足需求
  6. 程序不能管理、代码不易维护
  7. 软件不发布
克服软件危机的方法
  1. 采用工程项目管理的方法组织管理软件开发,使其成为一种组织良好、管理严密、协同配合的活动。
  2. 采用成熟的开发方法和技术,使用适合且高效的软件开发工具。
  3. 正确认识到软件的本质。

3. 软件生命周期

软件生命周期为软件产生直到报废的生命周期,其在时间维度将软件项目根据软件特点进行任务划分。

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

软件需求
  • 软件需求知识域关于软件需求的启发、商讨、分析、规格以及确认验证。
  • 如果上述关于软件需求的活动没有良好地执行,则软件工程项目将会十分脆弱,这一表述在软件工业界是被广泛认可的。
  • 软件需求表达了对于一个有益于解决现实世界问题的软件产品的需要和限制。
软件设计
  • 软件设计知识域包含了设计过程和结果产品。
  • 软件设计过程软件工程生命周期中的活动,其间为了得到对于软件内部结构和作为架构基础的行为的描述而进行软件需求分析。
  • 软件设计产生的结果必须描述软件架构——软件是如何分解、组织为一个个组件的,以及这些组件之间的接口;还需要较为详细的描述这些组件使得其构造过程可行。
软件构造
  • 软件构造为通过详细设计、编码、单元测试、综合测试、debug和验证的组合,得到的工作软件的详细构造。
  • 软件构造知识域涵盖了关于满足需求和设计规范的软件程序发展的话题。
  • 这一知识域覆盖了软件构造基础、管理软件构造、构造技术、实用性考虑和软件构造工具。
软件测试
  • 测试是一个用于评估产品质量、通过检测缺陷提升产品的活动。
  • 软件测试包括对于违背了预期行为的软件行为在有限测试集合的动态认证(这些测试样例是从通常较大的执行域中选取的)。
  • 软件测试知识域包括软件测试基础、测试技术、人及用户交互测试和评价、测试有关的方法和实用性考虑。
软件维护
  • 软件维护包括提升现有功能、调整软件使其能够在新的修复过的操作环境中执行和修正缺陷。这些类别被称为完善的、适应的和修正的软件维护。
  • 软件维护知识域涵盖了软件维护基础、软件维护中的关键事件、维护过程、软件维护技术、灾难恢复技术和软件维护工具。
软件配置管理
  • 软件配置管理是确定一个系统在不同时间点上为了系统控制配置变化的目的而进行的配置和在整个软件生命中其中维护配置的完整性和可追踪性的规范。
  • 软件配置管理知识域涵盖了SCM过程的管理、软件配置认证、控制、状态报告、审计,软件发布管理和交付和软件配置管理工具。
软件工程管理
  • 软件工程管理包含计划、协调、测量、报告和控制项目或程序确保软件开发和维护是系统的、规范的、量化的。
  • 软件工程管理知识域包含了初衷和范围定义、软件项目计划、软件项目设定、产品验收、产品性能重审和分析、项目关闭和软件管理工具。
软件工程过程
  • 软件工程过程知识域包含了软件生命周期过程中的定义、实现、评估、测量、管理和改进。其话题涵盖了过程的实现和修改、过程定义、过程评估模型和方法、测量和软件过程工具。
软件工程模型和方法
  • 软件工程模型和方法知识域提出了围绕多个生命周期阶段的方法。
  • 包括建模、模型类型、分析和软件开发方法。
软件质量
  • 软件质量是软件生命周期中无处不在的关注点。
  • 软件质量知识域涵盖了软件质量基础、软件质量管理过程和实际考虑。
软件工程专业实践
  • 软件工程专业实践关于知识、技术和为了在一种专业、负责和合乎道德的行为中进行软件工程实践的软件工程师必须的态度。
  • 软件工程专业实践知识域包含敬业精神、道德准则、小组活力和交流技巧。
软件工程经济学
  • 软件工程经济学知识域是关于在商业背景下为了将技术上的决策和组织的商业目标相统一而做决定,相关话题涵盖了软件工程经济学基础、非营利决策、评估、经济风险和不确定性和多属性决策。
计算基础
  • 计算基础知识域涵盖了提供软件工程实践所需的计算背景的基础话题,包括问题解决结束、抽象、算法和复杂度、编程基础、并行和分布式计算基础、计算机组成、操作系统和网络通信。
数学基础
  • 数学基础知识域涵盖了提供了软件工程实践所需的数学背景的基础话题,包括集合、关系、函数,基础命题和谓词逻辑、声明方法、图和树、离散概率、语法和有限状态机和数论。
工程基础
  • 工程基础只属于包含了提供软件工程实践所需的工程背景的基础话题,涵盖了经验方法和实验技术、统计分析、测量和指标、工程设计、模拟和建模和根本原因分析。

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字)

SWEBok为软件工程知识体系,主要目的是描述当今被广泛接受的软件工程的必备基础、规范等。

其确定了软件工程规范的内容、提成了软件工程在世界范围内的一致认识、划清软件工程范围以及和其他规范之间的界限、提供了软件工程的训练材料和课程开发的基础、为软件工程师的资质和准则奠定基础。是软件工程在开发中的重要指南,其从软件工程实践和软件工程教育需求两方面阐述了软件工程的过程和基础,涉及软件结构本身、软件生命周期和软件工程师等多个方面。

SWEBok主要针对软件以及其他影响因素对于软件产品结果的干扰和影响,而CMMI更面向软件开发企业整体。

CMMI为能力成熟度模型集成,CMU提出的度量企业的软件工程能力的指标。但是实际上,出于成本,企业不同阶段并不能完全遵守软件工程规范。随着人数的上升,管理和组织所占据的部分越来越大。

当然由于开发的软件也愈加复杂,根据随着代码行数增多人月呈指数增长的规律,组织和任务分配必将承担着很大的责任和经历。这诞生了软件开发过程中的管理、规范。

与此同时,除了员工之间的相互作用,这是组织和管理需要解决的问题,不考虑相互作用时的员工本身也是企业成熟度的影响因素。这大概是人才管理、数字报表管理诞生的原因。