系统分析与设计作业1

1. 简单题

软件工程的定义

  • 将系统化、规范化、可度量的方法应用与软件的开发、运行和维护的过程,即将工程化应用于软件中。
  • 对上面所述方法的研究。——IEEE[IEE93]

软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过实践考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,这就是软件工程。

阅读经典名著“人月神话”等资料,解释 software crisis、COCOMO 模型

  • software crisis:六十年代以来,随着计算机应用需求的驱动,系统软件和应用软件有很大的发展,如操作系统,编译系统和大型应用软件等。由于软件生产的复杂性和高成本,使大型软件的生产出现了很大的困难,即出现软件危机。虽然时至今日人们并没有完全克服软件危机,但软件工程却很大的改善了软件业的情况,让人们看到了希望,也说明我们还要继续努力,更深入地认识软件开发管理的规律、深化软件工程的研究和实践。
  • COCOMO模型:构造性成本模型,它是一种精确、易于使用的,基于模型的成本估算方法,最早由勃姆 (Boehm) 于 1981 年提出。从本质上说是一种参数化的项目估算方法,参数建模是把项目的某些特征作为参数,通过建立一个数字模型预测项目成本(类似于居住面积作为参数计算的整体的住房成本)。COCOMO模型可以分为三个层次:基本COCOMO,中级COCOMO,详细COCOMO。在COCOMO模型中,工作量调整因子(Effort Adjustment Factor, EAF)代表多个参数的综合效果,这些参数使得项目可以特征化和根据COCOMO数据库中的项目规格化。每个参数可以定为很低,低,正常,高,很高。每个参数都作为乘数,其值通常在0.5到1.5之间,这些参数的乘积作为成本方程中的系数

软件生命周期

计算机软件有一个孕育、诞生、成长、成熟、衰亡的生存过程,即软件的生命周期(也称软件开发生命周期SDLC或软件开发过程)。软件生命周期被划分为若干阶段,每个阶段有明确的任务,从而使规模、结构和管理复杂的软件开发过程得到适当的控制和管理。

软件生命周期包括可行性分析与开发计划、需求分析、设计(概要设计和详细设计)、编码实现、测试、运行与维护等活动,将这些活动以适当的方式分配到不同的阶段去完成。

从时间角度,把整个周期划分为若干个阶段。划分的原则:各阶段的任务彼此间尽可能相对独立,同一个阶段各项任务的性质尽可能相同,从而降低每个阶段任务的复杂性,简化不同阶段之间的联系,有利于软件开发过程的组织管理。受软件规模、性质、种类、开发方法等因素的影响。

按照 SWEBok 的 KA 划分,本课程关注哪些 KA 或 知识领域

已发布的SWEBOK V3版有以下15个KA:软件需求,软件设计,软件构建,软件测试,软件维护,软件配置管理,软件工程管理,软件工程过程,软件工程模型和方法,软件质量,软件工程专业实践,软件工程经济学,计算基础,数学基础,工程基金会。

根据上述划分,本课程关注的KA有:软件需求,软件设计,软件构建,软件测试,软件维护,软件工程管理,软件工程模型和方法,软件质量。

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

CMMI是能力成熟度模型集成,其目的是帮助软件企业对软件工程过程进行管理和改进,增强开发与改进能力,从而能按时地、不超预算地开发出高质量的软件。CMMI为改进一个组织的各种过程提供了一个单一的集成化框架,新的集成模型框架消除了各个模型的不一致性,减少了模型间的重复,增加透明度和理解,建立了一个自动的、可扩展的框架,因而能够从总体上改进组织的质量和效率。

CMMI的五个级别:

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

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

CMMI是由行业,美国国防部和卡内基梅隆大学的软件工程研究所共同开发的,致力于为开发或改进满足组织业务目标的流程提供指导的一种能力成熟度模型集成。CMMI关注的领域有产品和服务开发,服务建立、管理,以及产品和服务获取,旨在通过将许多不同模型集成到一个框架中来提高成熟度模型的可用性,它为流程定义了五个成熟度级别:初始,管理,定义,定量管理和优化。CMMI起源于软件工程,但多年来一直高度概括以涵盖其他感兴趣的领域,例如硬件产品的开发,各种服务的交付以及产品和服务的获取。

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

按表格 PSP 2.1, 了解一个软件工程师在接到一个任务之后要做什么,需要哪些技能,解释你打算如何统计每项数据?

接到一个任务后,一个软件工程师首先需要做计划,估计项目需要花费的时间;其次是进行开发,包括的阶段有需求分析、生成设计文档、设计复审、规定代码规范、具体设计、具体编码、代码复审、进行测试;最后是进行报告,包括测试报告、计算工作量、事后总结并提出改进计划。需要的技能有正确预估项目大小的能力、设计与开发技术、测试技术、总结与改进的技术。

为了统计每项数据,在接到任务后要把任务划分为具体的过程和阶段,并统计在每个阶段花费的时间,最后计算比例。例如接到任务后首先进行计划,然后记录在计划阶段花费的时间。

表格PSP2.1如下:

PSP2.1

Personal Software Process Stages

Time (%)

Planning

计划


·         Estimate

·         估计这个任务需要多少时间


Development

开发


·         Analysis

·         需求分析 (包括学习新技术)


·         Design Spec

·         生成设计文档


·         Design Review

·         设计复审 (和同事审核设计文档)


·         Coding Standard

·         代码规范 (为目前的开发制定合适的规范)


·         Design

·         具体设计


·         Coding

·         具体编码


·         Code Review

·         代码复审


·         Test

·         测试(自我测试,修改代码,提交修改)


Reporting

报告


·         Test Report

·         测试报告


·         Size Measurement

·         计算工作量


·         Postmortem & Process Improvement Plan

·         事后总结, 并提出过程改进计划


猜你喜欢

转载自blog.csdn.net/vinsms/article/details/79542676