软件工程基本概念

软件工程入门

简单题

  • 软件工程的定义

    1)将系统化、规范化、可度量的方法应用与软件的开发、运行和维护的过程,即将工程化应用于软件中。

    2)研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来的学科。

  • Software Crisis(软件危机)

    软件危机是指在软件开发及维护的过程中所遇到的一系列严重问题,这些问题皆可能导致软件产品的寿命缩短,甚至夭折。软件开发是一项高难度,高风险的活动,由于它的高失败率,故有所谓“软件危机”之说。

  • COCOMO模型(构造性成本模型)

    全称为Constructive Cost Model,是由巴里·勃姆(Barry Boehm)提出的一种软件成本估算方法。这种模型使用一种基本的回归分析公式,使用从项目历史和现状中的某些特征作为参数来进行计算。它是一种在软件项中估算工作量、成本以及时间表的模型。

  • 软件生命周期

    计算机软件有一个孕育、诞生、成长、成熟、衰亡的生存过程,即软件的生命周期(也称软件开发生命周期SDLC 或软件开发过程)。软件生命周期可分为六个阶段:

    • 可行性分析与计划阶段
    • 需求分析阶段
    • 设计阶段
    • 实现阶段
    • 测试阶段
    • 运行与维护阶段
  • 按照SWEBok的KA划分,本课程关注哪些KA或知识领域?

    SWEBok包含以下KA(Knowledge Areas,按老师的说法是Key Area?):

    • Software requirements(软件需求)
    • Software design(软件设计)
    • 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(工程基础)

    本课程关注的KA包括:

    • Software requirements(软件需求)
    • Software design(软件设计)
    • Software engineering management(软件工程管理)
    • Software engineering process(软件工程过程)
    • Software engineering models and methods(软件工程模型与方法
  • 解释CMMI的五个级别。

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

    CMMI:CMMI模型为开发或改进用于达成一个组织的商业目标的过程提供指导,它可以被用于引导横贯一个项目、一个部门或一个完整的组织的过程改进。一个CMMI模型也可能被用作用于评价组织的过程成熟度的框架。

    CMMI的前身是软件能力成熟度模型(Software CMM),在软件工程和组织发展中的CMMI,为软件工程所特有,它向组织提供用于有效的过程改进的基本元素。但是近年,CMMI通过将许多不同的模型集成到一个框架中,来改进成熟度模型的可用性。它已经被高度一般化,以包含其他兴趣范围,例如硬件产品的开发、所有种类的业务的交付,以及产品和服务的采购。CMMI目前致力于三个感兴趣的区域:

    • 产品和服务开发——CMMI开发方面(CMMI for Development)
    • 服务建立、管理和交付——CMMI服务方面(CMMI for Service)
    • 产品和服务采购——CMMI采购方面(CMMI for Acquisition)

解释PSP各项指标及技能要求:

  1. 阅读《现代软件工程》的 PSP: Personal Software Process 章节。 http://www.cnblogs.com/xinz/archive/2011/11/27/2265425.html
  2. 按表格 PSP 2.1, 了解一个软件工程师在接到一个任务之后要做什么,需要哪些技能,解释你打算如何统计每项数据?

psp2.1

接到任务后:

  • 计划阶段
    • 估计这个任务需要多少时间
  • 开发阶段
    • 需求分析(包括学习新技术)
    • 生成设计文档
    • 设计复审(和同事审核设计文档)
    • 代码规范(为目前的开发定制合适的规范)
    • 具体设计
    • 具体编码
    • 代码复审
    • 测试(自我测试,修改代码,提交修改)
  • 报告阶段
    • 测试报告
    • 计算工作量
    • 事后总结,并提出过程改进计划

需要的技能包括:

  • 对完整的软件开发过程有整体的把握
  • 编写和阅读设计文档的能力
  • 编码能力
  • 软件测试技能
  • 工作总结能力

统计数据可以使用如下方式:

首先将整个工程按阶段划分好,每当完成了一个阶段的工作,就记录下该阶段工作的完成时间。在整体工作完成后,再进行详细统计和分析。

本文为博主原创文章,转载请注明出处。