前言
软件过程、一系列方法和工具的框架,我们称之为软件工程。 本文所面向的读者是正在进行软件开发、需要保证软件正确性的软件工程师。
1. 软件工程师和程序猿的区别是什么?
2. 在项目开始之前,尽可能努力了解工作内容。也许难以明确所有细节,但你了解的越多,所面临的风险就越低。
3. 每当你认为没有时间采用软件工程方法时,就再问问自己,是否有时间做整个软件?
软件过程
软件过程和软件工程是什么关系?软件工程包括:软件过程+技术方法+自动化工具+测量和度量(后补充)。
1. 什么是软件过程?
2. 软件过程中,有哪些共同活动、基本的活动?
3. 增量迭代模型的那些特征使得它们能适应现代的软件项目需求?
4. 为什么现代软件工程强调“灵活性”?
5. 什么事敏捷软件开发?它与传统的过程模型有什么区别?
软件综述
软件开发过程中所遵循的路线图就称为“软件过程”。软件是逻辑的系统元素而非物理的系统元素。
软件过程提高了软件工程活动的稳定性、可控性和有组织性,如果没有过程约束,软件活动将失控并变得混乱。
软件过程是一个对话,在对话中,软件所必需的知识被收集在一起并在软件中实现。
过程框架,定义了活动的时间、人员、工作内容和达到预期目标的途径。
五个最基本的过程框架活动是什么?沟通、策划、建模、构建、部署。
过程模式提供了一种有效的机制来描述各种软件过程。过程模式一旦建立起来,就可以在过程变体的定义中复用。
过程评估,以改进为目标,评估力求理解软件过程的当前状态。
软件组织在将其从整个项目中所获得的经验转化成资产的过程中存在重大缺陷。——NASA
PSP和TSP
理想情况下,每一个软件工程师都会建立最适合他的过程,并同时能够与开发队伍及整个组织的要求相吻合。
PSP
PSP,强调对产品以及产品质量的个人测量。为了改变无效的个人过程,开发人员必须经过4个阶段。 PSP过程模型定义了5个框架活动:策划、高层设计、高层设计评审、开发、后验。
PSP强调对所犯的错误类型进行记录和分析,以便于制定避免错误的策略。即,在此基础上,PSP强调每一个软件工程师都尽早发现错误,良性循环。
关于PSP:http://ipd.uka.de/PSP
TSP
TSP的目标是建立一个能够“自我管理”的项目团队,团队能自我组织进行高质量的软件开发。建立团队自己的过程和计划。 为了组建有自我管理能力的团队,必须能够内部相互配合,并与外部良好沟通。
TSP定义的框架活动:项目启动、高层设计、实现、集成、测试和后验。TSP使用大量的脚本、表格和标准等来指导其团队成员的工作。
http://www.sei.cmu.edu/tsp/
产品与过程
如果过程很薄弱,最终产品必将受到影响。但是对于过程的过于依赖也是很危险的。二象性。
过程模型
每一个软件工程组织都应该用一组特定的框架活动来描述其所采用的软件过程。
所有的软件过程模型都支持通用框架活动,但是每一个模型都对框架活动有不同的侧重,并且定义了不同的工作流。
如何以不同的方式执行每一个框架活动(以及软件工程动作和任务)?