软件系统分析与设计HW1

软件工程的定义

IEEE Standard 610.12

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).”

翻译

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

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

软件危机是计算机科学早期使用的一个术语,指在规定的时间内编写有用而高效的计算机程序的困难性。

软件危机的本质原因

软件危机是由于计算机能力的迅速提高和无法解决的问题的复杂性造成的。随着软件复杂性的增加,由于现有方法的不足,出现了许多软件问题。引用1972年图灵奖获得者 Edsger Dijkstra的话,软件危机的本质原因是"机器已经变得强大了几个数量级!坦率地说:只要没有机器,编程根本就不是问题;当我们有一些弱的计算机时,编程变成了一个温和的问题,现在我们有了巨大的计算机,编程也变成了一个同样巨大的问题。"计算能力已经超过了程序员有效利用这些能力的能力。在过去的几十年中,开发了各种过程和方法来改进软件质量管理,如过程编程和面向对象编程。然而,大型的、复杂的、没有详细说明的、涉及不熟悉方面的软件项目仍然容易受到大型的、未预料到的问题的影响。

软件危机的表现

  • 项目运行超预算
  • 项目运行超时
  • 软件效率很低
  • 软件质量很差
  • 软件通常不符合需求
  • 项目难以管理,代码难以维护
  • 软件从未交付过

克服软件危机的方法

  • 建立与系统化软件生产有关的概念、原则、方法、技术和工具,指导和支持软件系统的生产活动,以期达到降低软件生产成本 、改进软件产品质量、提高软件生产率水平的目标。
  • 研制和使用软件工具,用以辅助进行软件项目管理与技术生产,将软件生命周期各阶段使用的软件工具有机地集合成为一个整体,形成能够连续支持软件开发与维护全过程的集成化软件支援环境,以期从管理和技术两方面解决软件危机问题。
  • 基于程序变换、自动生成和可重用软件等软件新技术研究也已取得一定的进展,把程序设计自动化的进程向前推进一步。

软件生命周期

软件生命周期又称为软件生存周期或系统开发生命周期,是软件的产生直到报废的生命周期,周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段,这种按时间分程的思想方法是软件工程中的一种思想原则,即按部就班、逐步推进,每个阶段都要有定义、工作、审查、形成文档以供交流或备查,以提高软件的质量。常见有瀑布模型、螺旋模型、敏捷开发模型等。

SWEBoK 的 15 个知识域

  • 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涵盖了提供软件工程实践所必需的工程背景的基础主题。涵盖的主题包括经验方法和实验技术;统计分析;测量和指标;工程设计;仿真与建模;根本原因分析。

简单解释 CMMI 的五个级别

  1. 初始级(Initial):软件过程是无序的,有时甚至是混乱的,对过程几乎没有定义,成功取决于个人努力。管理是反应式的。

  2. 可管理级(Managed):建立了基本的项目管理过程来跟踪费用、进度和功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得的成功经验。

  3. 已定义级(Defined):已将软件管理和工程两方面的过程文档化、标准化,并综合成该组织的标准软件过程。所有项目均使用经批准、剪裁的标准软件过程来开发和维护软件,软件产品的生产在整个软件过程是可见的。

  4. 量化管理级(Quantitatively Managed):分析对软件过程和产品质量的详细度量数据,对软件过程和产品都有定量的理解与控制。管理有一个作出结论的客观依据,管理能够在定量的范围内预测性能。

  5. 优化管理级(Optimizing): 过程的量化反馈和先进的新思想、新技术促使过程持续不断改进。

用自己语言简述 SWEBok 或 CMMI

CMMI全称Capability Maturity Model Integration,是能力成熟度集成模型,是由美国国防部与卡内基-梅隆大学和美国国防工业协会共同开发和研制的,其整合传统上独立的组织功能,设定流程改进目标和优先级,为质量流程提供指导,并为评估当前流程提供参考。该架构能够用来度量你的有效性和实用性;能够找出这样的一些机会,继续改进的机会,包括在商业目标、策略还有降低项目的风险等方面。CMMI为改进一个组织的各种过程提供了一个单一的集成化框架,对于IT产业而言,其帮助IT企业对软件在工作的时候进行管理和不断的改进的,大大的帮助了企业的开发,也帮助企业增强了改进能力,从而可以帮助企业壮大。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值