Homework1 of Software-System-Analysis-and-Design
1、简答题
-
软件工程的定义
关于软件工程的定义,在 GB/T11457-2006 《信息技术 软件工程术语》中将其定义为”应用计算机科学理论和技术以及工程管理原则和方法,按预算和进度,实现满足用户要求的软件产品的定义、开发、和维护的工程或进行研究的学科”。简单地理解,可以说软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科,涉及了程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。
-
阅读经典名著“人月神话”等资料,解释 software crisis、COCOMO 模型
Software Crisis(软件危机)是早期计算机科学的一个术语,是指在软件开发及维护的过程中所遇到的一系列严重问题,这些问题皆可能导致软件产品的寿命缩短、甚至夭折。软件开发是一项高难度、高风险的活动,由于它的高失败率,故有所谓“软件危机”之说。从本质上来说,它谈到了写出正确、可理解、可验证的计算机程序的困难。危机表现在几个方面:
- 项目运行超出预算
- 项目运行超过时间
- 软件质量低落
- 软件通常不匹配需求
- 项目无法管理,且代码难以维护
COCOMO 模型(Constructive Cost Model,构造性成本模型),是由巴里·勃姆(Barry Boehm)提出的一种软件成本估算方法,基本的 COCOMO 是一种静态的单值模型,它使用以每千源代码行数(KLoC)来度量的程序大小来计算软件开发的工作量(及成本),其基本等式如下:
其中 E 是用“人月”来计算的工作量,D 是指累积的开发时间(月),KLOC 是指对最终发布的代码行数的估计(千行代码),P 指需要的人数。而在中级 COCOMO 中则对软件工作量的估算使用了程度大小以及一组“成本驱动者”,包含了对产品、硬件、人员级项目属性的客观评价
COCOMO 可以应用于三种不同的软件项目:
- 有机项目——相对较小、较简单的软件项目,由较小的有经验的团队来完成,需求较少并且没有过份严格的限定
- 中度分离项目——指中等规模(大小及复杂度)的软件项目,由不同经验水平的人组成的团队来完成,需求中即有严格的部分也有不太严格的部分
- 嵌入式项目——指软件项目必须依赖于一套紧凑的硬件、软件以及符合操作限制
-
软件生命周期
软件生命周期(Software Development LifeCycle) 是指软件的产生直到报废或停止使用的生命周期。周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段。但随着新的面向对象的设计方法和技术的成熟,这样的周期概念也正逐渐减弱。
- 按照 SWEBok 的 KA 划分,本课程关注哪些 KA 或 知识领域?
- 软件需求(Software requirements)
- 软件设计(Software design)
- 软件建构(Software construction)
- 软件测试(Software test)
- 软件维护与更新(Software maintenance)
- 软件构型管理(Software Configuration Management, SCM)
- 软件工程管理(Software Engineering Management)
- 软件开发过程(Software Development Process)
- 软件工程工具与方法(Software Engineering Tools and methods)
- 软件质量(Software Quality)
- 解释 CMMI 的五个级别。例如:Level 1 - Initial:无序,自发生产模式
- Level 1 - Initial:无序,自发生产模式
- Level 2 - Managed:建立了基本的项目管理过程来跟踪费用、进度和功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得的成功经验
- Level 3 - Defined:已将软件管理和工程两方面的过程文档化、标准化,并综合成该组织的标准软件过程。所有项目均使用经批准、剪裁的标准软件过程来开发和维护软件,软件产品的生产在整个软件过程是可见的
- Level 4 - Quantitatively Managed:分析对软件过程和产品质量的详细度量数据,对软件过程和产品都有定量的理解与控制。管理有一个作出结论的客观依据,管理能够在定量的范围内预测性能
- Level 5 - Optimizing:过程的量化反馈和先进的新思想、新技术促使过程持续不断改进
-
用自己语言简述 SWEBok 或 CMMI (约200字)
CMMI 全称是 Capability Maturity Model Integration,即 能力成熟度模型集成 (也有人称之为:软件能力成熟度集成模型)。它是一个过程改进方法,其目的是帮助软件企业对软件工程工程进行管理和改进,增强开发与改进能力,从而能够按时且不超预算地开发出高质量地软件。改模型依据的想法是:只要集中精力持续努力去建立有效的软件工程过程的基础结构,不断进行管理的实践和过程的改进,就可以克服软件开发中的困难。CMMI 为改进一个组织的各种过程提供了一个单一的集成化框架,其主要关注点就是成本效益、明确重点、过程集中和灵活性四个方面
2、解释 PSP 各项指标及技能要求
- 阅读《现代软件工程》的 PSP:Personal Software Process 章节,按表格 PSP 2.1,了解一个软件工程师在接到一个任务之后要做什么,需要哪些技能,解释你打算如何统计每项数据?
PSP State | Description | Statistics Standard |
---|---|---|
Planning | 计划阶段 | |
Estimate | 估计这个任务需要多少时间 | 统计完成计划制定(包含ddl制定)所花的时间 |
Development | 开发阶段 | |
Analysis | 分析需求 | 统计个人分析需求时,包含收集数据,调查需求等过程所耗的时间与人力 |
Design Spec | 生成设计文档 | 统计通过需求分析后的结果,完成产品设计文案所花的时间 |
Design Review | 设计复审(和同事审核设计文档) | 统计完成设计后,寻求同伴共同探讨审核设计文案(设计合理性与可行性)并最终定案所用时间 |
Coding Standard | 代码规范(为目前的开发制定合适的规范) | 统计确定设计后,为所设计的产品制定合适的代码规范所用时间 |
Design | 具体设计 | 统计确定规范后直至具体编码前所做的具体设计用时 |
Coding | 具体编码 | 记录具体编码(实现基本编码)阶段所用时长 |
Code Review | 代码复审 | 统计代码审核(仅做基本代码审查工作)的用时 |
Test | 测试(包括自我测试、修改代码、提交修改) | 统计审查代码后所作的自我测试、修改代码并提交修改最终完成所用时间 |
Record Time Spent | 记录时间花费 | 将以上所有工作总耗时统计一次,并分别计算占比 |
Test Report | 测试报告 | 将测试过程中涉及到的问题已解决方法写成报告,并记录大概用时 |
Size Measurement | 计算工作量 | |
Postmortem | 事后总结 | |
Process Improvement Plan | 提出过程改进计划 |