软件系统分析与设计指南–HOMEWORK1

简答题

软件工程的定义

(1)将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护,即将工程化方法应用于软件;
(2)在(1)中所述方法的研究

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

The major cause of the software crisis is that the machines have become several orders of magnitude more powerful! To put it quite bluntly: as long as there were no machines, programming was no problem at all; when we had a few weak computers, programming became a mild problem, and now we have gigantic computers, programming has become an equally gigantic problem.
—?Edsger Dijkstra, The Humble Programmer (EWD340), Communications of the ACM

本质原因:

计算能力的提高超过了程序员有效利用这些能力的能力。在过去的几十年中,开发了各种过程和方法,以改进软件质量管理,如过程编程和面向对象编程。然而,大型、复杂、不明确、涉及不熟悉方面的软件项目仍然容易受到大型、未预料到的问题的影响。

主要表现:

  • 超出预算的项目
  • 随着时间推移运行的项目
  • 软件效率很低
  • 软件质量低劣
  • 软件经常不满足需求
  • 项目无法管理,代码难以维护
  • 软件从未交付

应对方法:

要克服软件危机,就要认真分析软件危机的原因,探索用工程的方法进行软件生产的可能性,即用现代工程的概念、原理、技术和方法进行计算机软件的开发、管理、维护和更新。在软件开发过程中研制和使用软件工具,用以辅助进行软件项目管理与技术生产,并将软件生命周期各阶段使用的软件工具有机地集合成为一个整体,形成能够连续支持软件开发与维护全过程的集成化软件支援环境,从管理和技术两方面解决软件危机问题。

软件生命周期

软件生命周期(Software Life Cycle,SLC)是软件的产生直到 废或停止使用的生命周期。旧的解释是周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段,这种按时间分程的思想方法是软件工程中的一种思想原则,即按部就班、逐步推进,每个阶段都要有定义、工作、审查、形成文档以供交流或备查,以提高软件的质量。

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

  • Software Requirements:软件需求
    涉及软件需求的引出、协商、分析、规范和确认。软件行业普遍承认,当这些活动执行得不好时,软件工程项目极易受到攻击。软件需求表示对软件产品的需求和约束,这些需求和约束有助于解决一些实际问题。
  • Software Design:软件设计
    定义系统或组件的架构、组件、接口和其他特性的过程,以及该过程的结果(IEEE 1991)。
  • Software Construction:软件构建.
    指通过详细设计、编码、单元测试、集成测试、调试和验证的组合来详细创建工作软件。
  • Software Testing:软件测试
    是一项评估产品质量并通过识别缺陷来改进产品质量的活动。
  • Software Maintenance:软件维护
    包括增强现有的能力,使软件适应新的和修改过的操作环境,以及纠正缺陷。
  • Software Configuration Management:软件配置管理
    是一门在不同的时间点识别系统配置的学科,目的是系统地控制配置的更改,并在整个软件生命周期中保持配置的完整性和可追溯性。
  • Software Engineering Management:软件工程管理.
    软件工程管理包括计划、协调、测量、 告和控制项目或程序,以确保软件的开发和维护是系统的、有纪律的和量化的。
  • Software Engineering Process:软件工程过程
    涉及软件生命周期过程的定义、实现、评估、测量、管理和改进。
  • Software Engineering Models and Methods:软件工程模型和方法
    软件工程模型和方法描述了包含多个生命周期阶段的方法;特定于特定生命周期阶段的方法由其他涵盖。
  • Software Quality:软件质量
    软件质量包括软件质量基础(软件工程文化、软件质量特征、软件质量的价值和成本以及软件质量改进);软件质量管理过程(软件质量保证、验证和确认、评审和审计);以及实用性。
  • Software Engineering Professional Practice:软件工程专业实践
    软件工程专业实践涉及软件工程师以专业、负责和道德的方式实践软件工程所必须具备的知识、技能和态度。
  • Software Engineering Economics:软件工程经济学
    软件工程经济学关注于在业务环境中做出决策,以使技术决策与组织的业务目标保持一致。
  • Computing Foundations:计算基础
    计算基础涵盖了为软件工程实践提供必要计算背景的基本主题。所涵盖的主题包括问题解决技术、抽象、算法和复杂性、编程基础、并行和分布式计算基础、计算机组织、操作系统和 络通信。
  • Mathematical Foundations:数学基础
    涵盖了为软件工程实践提供必要数学背景的基本主题。所涉及的主题包括集合、关系和函数;基本命题和谓词逻辑;证明技术;图和树;离散概率;语法和有限状态机;以及数论。
  • Engineering Foundations:工程基础
    涵盖了为软件工程实践提供必要工程背景的基本主题。涵盖的主题包括经验方法和实验技术;统计分析;测量和度量;工程设计;模拟和建模;以及根本原因分析。

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

软件系统分析与设计指南--HOMEWORK1
  • Level 1 – Initial
    软件过程是无序的,有时甚至是混乱的,对过程几乎没有定义,成功取决于个人努力。管理是反应式的。
  • Level 2 – Managed
    建立了基本的项目管理过程来跟踪费用、进度和功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得的成功经验。
  • Level 3 – Defined
    已将软件管理和工程两方面的过程文档化、标准化,并综合成该组织的标准软件过程。所有项目均使用经批准、剪裁的标准软件过程来开发和维护软件,软件产品的生产在整个软件过程是可见的。
  • Level 4 – Quantitatively Managed
    分析对软件过程和产品质量的详细度量数据,对软件过程和产品都有定量的理解与控制。管理有一个作出结论的客观依据,管理能够在定量的范围内预测性能。
  • Level 5 – Optimizing
    过程的量化反馈和先进的新思想、新技术促使过程持续不断改进。

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

能力成熟度模型集成(CMMI)是一个过程级改进培训和评估计划。该项目由国际汽联下属的CMMI研究所管理,由卡内基梅隆大学(CMU)开发。它是美国国防部(DoD)和美国政府的许多合同所要求的,特别是在软件开发方面。CMMI为流程定义了以下成熟度级别:初始、管理、定义、定量管理和优化。CMMI是一个模型,而不是一个标准。换句话说,对于实践的每一个领域,它都以抽象的方式指定了一个一般的意图和不同的成熟度水平;它没有提供如何达到这些水平的处方。它确实提供了详细的抽象信息和示例,这些信息和示例可以作为理解和实现的指导方针,但是具体的实现方式取决于组织。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年4月5日
下一篇 2019年4月5日

相关推荐