1、软件工程部分要点
Software Engineering Definition
Software engineering is “(1) the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, that is, the application of engineering to software,” and “(2) the study of approaches as in (1).” – IEEE Standard 610.12
History of Software Engineering
- Also see : https://en.wikipedia.org/wiki/Software_engineering
- 什么是 “software crisis”-软件危机?
- 什么是 “Constructive Cost Model (COCOMO)”? 为什么要度量软件规模?
软件工程标准
- Software Engineering Body of Knowledge
- Also see : https://en.wikipedia.org/wiki/Software_Engineering_Body_of_Knowledge
- SWEBok 关注了哪些 KA(Key Area)?
- Maturity Model Integration (CMMI)
- 美国国防部为什么要开发 CMM 模型
- 5 级分类模型与 KA
- CMM 对产业发展的贡献
- 软件工程文档标准
- Also see : http://blog.sina.com.cn/s/blog_5e98ca2b01019aou.html 其中, 计算机软件产品开发文件编制指南 GB/T 8567-2006 最重要。否则政府项目无法验收!
Software LifeCycle
- Also see : https://en.wikipedia.org/wiki/Software_development_process
- 了解三个过程的特点,流程: Waterfall development, Iterative and incremental development, Agile development
以上内容必考
2、作业
1、简单题
软件工程的定义
软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护,即将工程化方法应用于软件。
阅读经典名著“人月神话”等资料,解释 software crisis、COCOMO 模型。
Software crisis,即软件危机,是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。
COCOMO模型,英文全称为constructive cost model,即构造性成本模型。它是一种精确、易于使用的,基于模型的成本估算方法,最早由勃姆 (Boehm) 于 1981 年提出。从本质上说是一种参数化的项目估算方法,参数建模是把项目的某些特征作为参数,通过建立一个数字模型预测项目成本(类似于居住面积作为参数计算的整体的住房成本)。
软件生命周期。
软件的生命周期,亦称软件的生存周期。它是按开发软件的规模和复杂程度,从时间上把软件开发的整个过程(从计划开发开始到软件报废为止的整个历史阶段)进行分解,形成相对独立的几个阶段,每个阶段又分解成几个具体的任务,然后按规定顺序依次完成各阶段的任务并规定一套标准的文档作为各个阶段的开发成果,最后生产出高质量的软件。
阶段划分
- 1 问题的定义及规划
- 2 需求分析
- 3 软件设计
- 4 程序编码
- 5 软件测试
- 6 运行维护
按照 SWEBok 的 KA 划分,本课程关注哪些 KA 或 知识领域?
Software requirements 软件需求
Software design 软件设计软件需求
Software construction 软件构建
Software test 软件测试
Software maintenance 软件维护
Software configuration management 软件配置管理
Software engineering management 软件工程管理
Software engineering process 软件工程过程
Software engineering models and methods 软件过程模型和方法
Software quality 软件质量
解释 CMMI 的五个级别。例如:Level 1 - Initial:无序,自发生产模式。
Level 1 - Initial 初始级
软件过程是无序的,有时甚至是混乱的,对过程几乎没有定义,成功取决于个人努力。管理是反应式的。
Level 2 - Repeatable 可管理级
建立了基本的项目管理过程来跟踪费用、进度和功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得的成功经验。
Level 3 - Defined 已定义级
已将软件管理和工程两方面的过程文档化、标准化,并综合成该组织的标准软件过程。所有项目均使用经批准、剪裁的标准软件过程来开发和维护软件,软件产品的生产在整个软件过程是可见的。
Level 4 - Managed 量化管理级
分析对软件过程和产品质量的详细度量数据,对软件过程和产品都有定量的理解与控制。管理有一个作出结论的客观依据,管理能够在定量的范围内预测性能。
Level 5 - Optimizing 优化管理级
过程的量化反馈和先进的新思想、新技术促使过程持续不断改进。
用自己语言简述 SWEBok 或 CMMI (约200字)
SWEBok,即Software Engineering Body of Knowledge,软件工程知识体系,旨在促进世界范围内对软件工程的一致观点。它阐明了软件工程相对于其他学科的位置,并确立了它们的分界。通过刻画软件工程学科的内容,以及提供知识体系的主题,SWEBok为“开发课程和个人认证与许可材料”提供了一个基础。SWEBOK全面描述了软件工程实践所需的知识,为软件工程学科的范围提供一致的确认,为支持该学科的本体知识提供指导。
2、解释 PSP 各项指标及技能要求:
- 阅读《现代软件工程》的 PSP: Personal Software Process 章节。 http://www.cnblogs.com/xinz/archive/2011/11/27/2265425.html
- 按表格 PSP 2.1, 了解一个软件工程师在接到一个任务之后要做什么,需要哪些技能,解释你打算如何统计每项数据? (期末考核,每人按开发阶段提交这个表)
一个工程师在接到一个任务后应该做的规划如下:
需要的技能包括如下:
自我管理的能力; 表达和交流的能力; 与人合作的能力; 把任务按质按量完成的执行力; 这些能力在IT 行业和其它行业都很重要。
如何统计每一项数据:
- 通过代码行数来表示项目的大小。
- 通过用 (人数*时间) ,例如某项目花费了10个人·月,来表示项目所花费的时间。
- 通过用交付的代码所包含的缺陷来表示项目的质量。