SWAD | Homework1

简答题

  • 软件工程的定义

    软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来的学科。它涉及到程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。

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

    • 本质原因:由于软件的大量需求与软件生产力效率之间的矛盾以及软件系统的复杂性与软件开发方法之间的矛盾
    • 表现:
      • 项目运行超出预算
      • 项目运行超过时间
      • 软件质量低落
      • 软件通常不匹配需求
      • 项目无法管理,且代码难以维护
    • 克服软件危机的方法:
      • 借鉴其他工程项目中行之有效的原理、概念、技术与方法,特别是吸取人类从事计算机硬件研究和开发的经验教训。在开发软件的过程中做到良好的组织,严格的管理,相互友好的协作。
      • 推广在实践中总结出来的开发软件的成功的技术和方法,并研究更好、更有效的技术和方法,尽快克服在计算机系统早期发展阶段形成的一些错误概念和做法。
      • 根据不同的应用领域,开发更好的软件工具并使用这些工具。将软件开发各个阶段使用的软件工具合成一个整体,形成一个良好的软件开发环境。
  • 软件生命周期

    在时间维度,对软件项目任务进行划分,又成为软件开发过程。常见有瀑布模型、螺旋模型、敏捷的模型等。

  • SWEBoK 的 15 个知识域

    • Software Requirements 软件需求

      软件需求表达了对软件产品的需求和约束,这些需求和约束有助于解决一些实际问题。

    • Software Design 软件设计

      设计是定义系统或组件的体系结构、组件、接口和其他特征的过程、以及该过程的结果。

    • Software Construction 软件构造

      通过详细设计、编码、单元测试、集成测试、调试和验证相结合,对工作软件进行详细的创建。

    • Software Testing 软件测试

      为了验证产品质量并且通过指出缺陷来增进软件质量的活动。

    • Software Maintenance 软件维护

      包括增强现有的功能,使得软件在新的环境中运行以及修正缺陷。

    • Software Configuration Management 软件配置管理

      软件配置管理(Software Configuration Management): 系统的配置是硬件、固件、软件或它们的组合的功能和/或物理特征。它还可以看作是硬件、固件或软件项目的特定版本的集合,为了服务于特定的目的,将这些硬件、固件和软件项目根据特定的构建过程组合在一起。因此,软件配置管理(SCM)是在不同的时间点识别系统配置的规程,以便系统地控制配置的更改,并在整个软件生命周期中维护配置的完整性和可追溯性。

    • Software Engineering Management 软件工程管理

      包括计划、协调、测量、报告和控制一个项目或程序,确保软件的开发和维护是系统的、规范化的、可定量的。

    • Software Engineering Process 软件工程过程

      软件工程知识领域关注软件生命周期过程的定义,实现,评估,测量,管理和改进。主题包括过程实现和改变(过程基础设施,过程实现和改变模型,和软件过程管理),过程定义(软件生命周期模型和过程,过程定义,过程适应和自动化过程的符号),过程评估模型和方法,测量(过程测量,产品测量,技术测量和测量结果质量)和软件过程工具。

    • Software Engineering Models and Methods 软件工程模型和方法

      软件工程技术和管理的原理、原则、方法

    • Software Quality 软件质量

      软件质量是软件生命周期普遍关注的,存在于许多 SWEBOK V3 知识领域中。此外,软件质量知识领域包括软件质量基础(软件工程文化,软件质量特征,软件质量价值和成本和软件质量改进),软件质量管理过程(软件质量保证,认证和确认,审核和审计)和实际考量(缺陷特征,软件质量测量和软件质量工具)。

    • Software Engineering Professional Practice 软件工程专业实践

      软件工程专业实践关注软件工程师必须具备的知识,技巧和态度,以用一种专业,负责和正直的态度来时间软件工程。软件工程专业实践知识领域涵盖专业性(专业行为,专业协会,软件工程标准,雇佣合同和法律问题),道德准则,动态小组(团队合作,认知问题复杂性,与利益相关者交互,不确定性和模糊性的处理,多元环境处理)和交流技巧。

    • Software Engineering Economics 软件工程经济学

      软件工程经济学知识领域关注在商业环境中做出决策,以使技术决策和商业目标达成一致。

    • Computing Foundations 计算基础

      计算基础知识领域涵盖对于软件工程实践必须的计算背景的基础主题。涵盖主题包括问题解决技术,抽象,算法和复杂度,编程基础,并行和分布式计算基础,计算机组成,操作系统和网络通信。

    • Mathematical Foundations

      数学基础知识领域涵盖对于软件工程实践必须的数学背景的基础主题。涵盖的主题包括集合,关系和函数,基础命题和谓词逻辑,证明技术,图和树,离散概率,语法和有限状态机,数论。

    • Engineering Foundations

      工程基础知识领域涵盖对于软件工程实践必须的工程背景的基础主题。涵盖的主题包括经验方法和实验技术,统计分析,测量和指标,工程设计,模拟和建模,根本原因分析。

  • CMMI 的五个级别

    • Level 1 - Initial: 没有可预知的生产过程,缺乏控制和应变能力
    • Level 2 - Managed: 生产过程为每个项目特制,一般有一定的应变能力。
    • Level 3 - Defined: 生产过程为组织所定制,并且积极主动。
    • Level 4 - Quantitatively Managed: 生产过程可测度(预知)且可控。
    • Level 5 - Optimizing: 生产专注于过程优化。
  • 用自己语言简述 SWEBok 或 CMMI

    CMMI 全称为能力成熟度模型集成,其本质上就是衡量软件工程的成熟度的五个级别。CMMI可以帮助企业确认当前软件工程处于的级别并且对其进行管理和改进,增强软件的开发和改进能力。其目的就在于使得软件可以在限定时间和预算内完成并且保证其高质量。CMMI分为五个级别,分别是无序、已管理、已定义、量化管理和优化,这五个级别对于软件工程的管理规范一级比一级要严格,是一个渐进性的模型框架,指导了企业对于现有的软件工程进行评估和改进以及开始新的系统性规范化的软件工程。其主要关注点在于:成本效益、明确重过程集中和灵活性。