《系统设计与分析》第一周作业

1. 软件工程的定义

Software engineering is “(1) the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, that is, the application of engineering to software,” and “(2) the study of approaches as in (1).” –– IEEE Standard 610.12

软件工程是:
(1)将系统的、规范的、可量化的方法应用到软件开发、运营和维护中,也就是将工程应用于软件中。
(2)对(1)中方法的研究。

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

软件危机 (software crisis) 是计算科学早期使用的术语,用于描述在所需时间内编写有用且高效的计算机程序的困难性。

  • 软件危机出现的本质原因是:
    计算机能力的迅速提高和无法解决的问题的复杂性。随着软件复杂性的提高,由于现有方法不足,许多软件问题涌现了出来。
    通俗点说,没有计算机时,根本没有编程上的问题;有了一些没那么强的计算机时,编程的问题出现了,但问题不大;现在计算机越来越强大,编程也就越来越复杂,也随之成为一个庞大而复杂的问题。
  • 表现
    • 项目运行超预算
    • 项目运行超时
    • 软件效率很低
    • 软件质量很差
    • 软件通常不符合需求
    • 项目难以管理,代码难以维护
    • 软件从未交付过
  • 克服软件危机的方法
    针对软件危机的本质原因,当务之急就是构建软件生产的最佳实践与知识体系,发展更好的软件开发和管理方法,比如面向过程编程(PP)、面向对象编程(OOP)、面向切面编程(AOP)等都是过去十年来提出的用来改善软件质量管理的方法。但软件由于其自身的复杂性,很容易被这样那样的不可预测的问题所侵袭,所以只能说尽可能地避免或者减少其问题,而很难完全解决软件危机。

3. 软件生命周期

在时间维度,对软件项目任务划分为不同阶段,以改善设计、产品管理和项目管理,又称为软件开发过程。常见有瀑布模型、螺旋模型、敏捷开发模型等。

瀑布流模型:
瀑布流模型

4. SWEBoK 的 15 个知识域

An Overview of the SWEBOK Guide 请中文翻译其名称与简短说明)

软件工程实践:

  • Software Requirements:软件需求
    关注软件需求的启发,协商,分析,规范和验证。软件需求表达了对软件产品的需求(needs)和限制,有助于解决一些现实问题。
  • Software Design:软件设计
    定义系统或组件的体系结构,组件,接口和其他特征的过程以及该过程的结果。
  • Software Construction:软件构建
    指通过结合详细设计,编码,单元测试,集成测试,调试和验证来详细创建工作软件。
  • Software Testing:软件测试
    测试是一项旨在通过识别缺陷来评估产品质量并改进产品质量的活动。
  • Software Maintenance:软件维护
    软件维护包括增强现有功能,调整软件以在新的和修改的操作环境中运行,以及纠正缺陷。这些类别称为完善,自适应和纠正性软件维护。
  • Software Configuration Management:软件配置管理
    软件配置管理(SCM)是在不同时间点识别系统配置的规训(discipline),用于系统地控制配置的改变,以及在整个软件生命周期中维持配置的完整性和可追溯性。
  • Software Engineering Management:软件工程管理
    软件工程管理涉及规划,协调,测量,报告和控制项目或程序,以确保软件的开发和维护是系统化的,规范化的和量化的。
  • Software Engineering Process:软件工程过程
    关注软件生命周期过程的定义,实施,评估,测量,管理和改进。
  • Software Engineering Models and Methods:软件工程模型和方法
    解决了涵盖多个生命周期阶段的方法。
  • Software Quality:软件质量
    是许多SWEBOK V3 KAs中普遍存在的软件生命周期关心问题。
  • Software Engineering Professional Practice:软件工程专业实践
    关注软件工程师要专业、负责、道德地实践软件工程所必须具备的知识,技能和态度。

软件工程基础教育要求:

  • Software Engineering Economics :软件工程经济学
    软件工程经济学KA关注的是在业务环境中做出决策,以使技术决策与组织的业务目标保持一致。
  • Computing Foundations:计算基础
    计算基础KA涵盖了提供软件工程实践所需的计算背景的基础主题。
  • Mathematical Foundations:数学基础
    数学基础KA涵盖了提供软件工程实践所必需的数学背景的基础主题。涵盖的主题包括集合,关系和功能;基本命题和谓词逻辑;证明技巧;图论和树;离散概率;语法和有限状态机;数论。
  • Engineering Foundations:工程基础
    工程基础KA涵盖了提供软件工程实践所必需的工程背景的基础主题。涵盖的主题包括经验方法和实验技术;统计分析;测量和指标;工程设计;仿真与建模;根本原因分析。

5. 简单解释 CMMI 的五个级别

例如:Level 1 - Initial:无序,自发生产模式。

扫描二维码关注公众号,回复: 5404213 查看本文章
  • Level 1 - Initial
    无序,自发生产模式,不可预测地、不可控地、被动地。
  • Level 2 - Managed
    有基本的管理过程,但只针对现有项目,不够系统,常常较为被动。
  • Level 3 - Defined
    管理过程组织化,项目根据组织的标准进行,比较主动。
  • Level 4 - Quantitatively Managed
    高质量管理,标准化、量化管理,高可控。
  • Level 5 - Optimizing
    不断对管理过程进行优化与改善。
    Characteristics of the maturity levels

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

CMMI全称是Capability Maturity Model Integration,即能力成熟度模型集成,是能力成熟度模型(Capability Maturity Model for Software,英文缩写为SW-CMM,简称CMM)的最新版本。CMMI是一个过程级别的改进训练和评估程序,CMMI 为过程定义了如下几个成熟度级别: Initial, Managed, Defined, Quantitatively Managed, and Optimizing。CMMI模型为开发或改进流程提供指导,以满足组织的业务目标,也可以用作评估组织过程成熟度的框架。
SWEBoK 不合适度量一个企业的软件工程能力。出于成本的因素,企业在不同阶段难以完全遵循软件工程规范去做事。而CMMI正好迎合企业发展的需求,它通过使用知识(能力)的不同,用不同级别表示开发企业的成熟性,不仅给出了企业能力提升的路径,也给出了企业能力评估的事实标准。


References
[1] Software crisis
[2] Software development process
[3] An Overview of the SWEBOK Guide
[4] Capability Maturity Model Integration

猜你喜欢

转载自blog.csdn.net/Runner1st/article/details/88087631