系统分析与设计 — Homework 1
1 简单题
1.1 软件工程的定义
- 将系统化的、规范化的、可度量的方法应用于软件的开发、运行和维护,即将工程化方法应用于软件;
- 对于(1)中所述方法的研究。
1.2 阅读经典名著“人月神话”等资料,解释 software crisis、COCOMO 模型
1.2.1 Software Crisis
软件危机是在计算科学的早期阶段使用的术语,用于在规定时间编写有用和高效的计算机程序的困难。软件危机是由于计算机能力的快速增长以及无法解决问题的复杂性所引发的。随着软件复杂性的增加,因为现有的方法不足,许多软件问题被暴露。
软件危机的原因
- 软件危机的根源
- 软件的大量需求与软件生产力效率之间的矛盾
- 软件系统的复杂性与软件开发方法之间的矛盾
- 软件本身的特点
- 软件是一种抽象逻辑
- 软件是开发人员的智力劳动成果
- 软件具备强烈的个性化特征
- 软件规模日趋庞大,实现的业务逻辑与流程复杂
- 软件开发的客观因素
- 系统需求分析不足
- 开发周期管理不善
- 开发过程缺乏规范
- 质量控制标准规程滞后
- 软件维护计划被忽视
- 产业因素
- 软件企业的作坊式管理
- 软件企业规模的急剧膨胀
软件危机的表现形式
- 软件开发成本日益增长
- 软件开发进度难以控制
- 用户对 “已完成” 系统不满意的现象经常发生
- 软件产品的质量不可靠
- 软件的可维护程度低
- 软件开发生产率跟不上硬件的发展和人们需求的增长
1.2.2 COCOMO
COCOMO是由Barry W. Boehm开发的程序化软件成本估算模型。模型参数是通过使用历史项目数据拟合回归公式得出的。
1.3 软件生命周期
软件生命周期分为6个阶段:
- 可行性分析与计划阶段
- 需求分析阶段
- 设计阶段
- 实现阶段
- 测试阶段
- 运行与维护阶段
1.4 按照 SWEBok 的 KA 划分,本课程关注哪些 KA 或 知识领域?
- Software requirements 软件需求
- Software design 软件设计
- Software construction 软件构造
- Software engineering Management 软件工程管理
- Software engineering Process 软件工程过程
- Software engineering models and methods 软件工程工具和方法
1.5 解释 CMMI 的五个级别。例如:Level 1 - Initial:无序,自发生产模式。
Level 1 - Initial: 无序,自发的生产模式。
Level 2 - Manage: 有基本的项目管理过程,制定必要规律的生产模式。
Level 3 - Defined: 软件管理及工程两方面的过程文档化、标准化的生产模式。
Level 4 - Quantitatively Managed: 分析度量数据、控制生产流程、管理预测性能的生产模式
Level 5 - Optimizing: 量化反馈、持续更新、改善流程的生产模式
1.6 用自己语言简述 SWEBok 或 CMMI
SWEBok 是国际IEEE组织发布的针对软件工程知识领域研究与实践的权威指南,专注于软件工程领域的研发、实践、标准、文献等方面的权威指南。
SWEBok 由10个知识域构成:软件需求、软件设计、软件构造 、软件测试、软件维护、软件配置管理、软件工程管理、软件工程过程、软件工程工具和方法、软件质量。
SWEBok 的5个目标为: (1) 促进世界范围内对软件工程的一致观点;(2)为软件工程确立边界;(3) 反映软件工程这个学科内容的特征;(4) 确定软件工程本体知识的各个专题;(5) 为相应的课程和职业资格认证材料的编写奠定基础。
SWEBok 指南项目的成果并不在于知识体系本身,而在于它是一个指南,而且它面向全世界的广大读者。
2 解释 PSP 各项指标及技能要求
阅读《现代软件工程》的 PSP: Personal Software Process 章节。
http://www.cnblogs.com/xinz/archive/2011/11/27/2265425.html按表格 PSP 2.1, 了解一个软件工程师在接到一个任务之后要做什么,需要哪些技能,解释你打算如何统计每项数据?
Personal Software Process Stages | Time (%) Senior Student | Time (%) SED |
---|---|---|
Planning | ||
| ||
Development | ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
Reporting | ||
Test Report | ||
Size Measurement | ||
Postmortem & Process Improvement Plan |
对于软件工程师来说,一个任务可依次划分为计划、开发、记录时间花费、测试报告、计算工作量、事后总结、提出过程改进计划 7个阶段。
所需技能:一方面需要擅长所属的专业技能(编程,相关基础知识),另一方面,职业技能也是必要的,其中包括,自我管理能力,团队执行能力,时间管理能力,高效的执行力。
统计数据:以小时为统计单位,精确记录有效工作时间,所谓有效工作时间指的是工作者真正投入工程各个过程中的时间。关于如何记录的问题,我认为应该各个工作人员在工作之前,必须去明确自己目前所处的工作阶段,然后记录开始和结束时间,这样才能有效地统计各个阶段的时间花费。