系统分析与设计 作业1

软件工程的定义

应用计算机科学理论和技术以及工程管理原则和方法,按预算和进度,实现满足用户要求的软件产品的定义、开发、和维护的工程或进行研究的学科

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

  • 软件危机(software crisis)本质原因主要是用户需求不明确、软件开发过程缺乏正确的理论指导、软件开发的规模越来越大且软件开发的复杂度越来越高,其根源为软件的大量需求与软件生产力效率之间的矛盾和软件系统的复杂性与软件开发方法之间的矛盾
  • 表现
    • 项目运行超出预算
    • 项目运行超出时间
    • 软件质量低落
    • 软件通常不匹配需求
    • 项目无法管理,且代码难以维护
  • 克服软件危机的方法
    • 正确认识计算机软件的内涵
    • 采用工程项目管理方法实施软件开发的管理(软件开发应该是一种组织良好、管理严密、协同配合的工程活动)
    • 采用成熟的软件开发技术和方法,开发和使用适当的软件工具

软件生命周期

计算机软件有一个孕育、诞生、成长、成熟、衰亡的生存过程,这样的过程称为软件的生命周期(也称软件开发生命周期SDLC)。软件生命周期将软件开发过程划分为若干阶段,每个阶段有明确的任务 目标和运行机制,从而使复杂的软件开发过程能够得到适当的控制 和管理。 软件生命周期一般包括可行性分析与计划、需求分析、设计(概要 设计和详细设计)、编码实现、测试、运行与维护等活动。这些活动应当以适当的方式分配到不同的阶段去完成。

软件生命周期的6个阶段:

  • 可行性分析与计划阶段
  • 需求分析阶段
  • 设计阶段
  • 实现阶段
  • 测试阶段
  • 运行与维护阶段

SWEBoK 的 15 个知识域(An Overview of the SWEBOK Guide

  • 软件要求 Software Requirements

    关注软件需求的启发,协商,分析,规范和验证。软件需求表达对软件产品的需求和限制,这些需求和约束有助于解决一些现实问题。

  • 软件设计 Software Design

    软件设计涵盖了设计过程和最终产品,软件设计的过程是软件工程生命周期活动,其中分析软件需求以产生软件内部结构及其行为的描述,其将作为其构造的基础。软件设计(结果)必须描述软件体系结构 - 即软件如何分解和组织成组件以及这些组件之间的接口。它还必须描述能够构建它们的详细程度的组件。

  • 软件构建 Software Construction

    软件构建是指通过结合详细设计,编码,单元测试,继承测试,调试和验证来详细创建工作软件。软件构建包括与满足其要求和设计约束的软件程序开发相关的主题,涵盖了软件构建基础、管理软件建设、建筑技术、实际考虑和软件构建工具。

  • 软件测试 Software Testing

    软件测试旨在评估产品质量并通过识别缺陷来改进产品质量的活动。软件测试涉及在有限的测试用例集上针对预期行为动态验证程序的行为。软件测试包括软件测试的基础知识、测试技术、人机界面测试与评估、与测试有关的措施和实际考虑。

  • 软件维护 Software Maintenance

    软件维护包括增强现有功能,调整软件以在新的和修改的操作环境中运行,以及纠正缺陷。软件维护包括软件维护的基础知识(维护的性质和需求,维护类别,维护成本)、软件维护中的关键问题(技术问题,管理问题,维护成本估算,软件维护测量)、 维护过程、软件维护技术(程序理解,重新设计,逆向工程,重构,软件退役)、灾难恢复技术和软件维护工具。

  • 软件配置管理 Software Configuration Management

    软件配置管理是在不同时间点识别系统配置的规则,用于系统地控制配置的改变,以及在整个软件生命周期中维持配置的完整性和可追溯性。软件配置管理涵盖SCM过程的管理、软件配置识别,控制,状态核算,审计、软件发布管理和交付;

  • 软件工程管理 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

    初始级。无序,自发生产模式。管理是反应式的。

  • Level 2 - Managed

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

  • Level 3 - Defined

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

  • Level 4 - Quantitatively Managed

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

  • Level 5 - Optimizing

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

用自己语言简述 SWEBok 或 CMMI

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