系统分析设计
Part 1:Introduction of SE & OOAD
软件工程的定义
(1)将系统化、规范化、可度量的方法应用与软件的开发、运行和维护的过程,即将工程化应用于软件中。(2)对(1)中所述方法的研究。—— IEEE[IEE93]
阅读经典名著“人月神话”等资料,从历史的角度解释 software crisis、COCOMO模型 和 软件工程定义之间的联系。
软件危机(Software Crisis)是指在软件开发及维护的过程中所遇到的一系列严重问题,这些问题皆可能导致软件产品的寿命缩短、甚至夭折。
鉴于软件开发时所遭遇困境,北大西洋公约组织(NATO)在1968年举办了首次软件工程学术会议,并于会中提出“软件工程”来界定软件开发所需相关知识。软件工程自1968年正式提出以后,有大量的学者投入其中,累积了大量的研究成果,广泛地进行大量的技术实践,借由学术界和产业界的共同努力,软件工程逐渐发展成为一门专业学科。
Barry W. Boehm在他的1981年的书“软件工程经济学”中记录了这一领域的几个关键进展并提出了一种软件成本估算方法,即建设性成本模型(COCOMO)。这种模型使用一种基本的回归分析公式,将一个软件程序开发的工作量T(人·月) 和源代码行(SLOC)相关联.
Boehm的COCOMO模型发现,团队质量目前是项目成功最大的决定因素,即软件成本的关键驱动因素是软件开发团队的能力。这在大多数学术研究集中在工具上的大环境下,为我们提供了相当宝贵的研究和看问题的角度。
—— 人月神话 & 维基百科软件生命周期
在软件工程中,软件生命周期是将软件开发工作分成包含活动的不同阶段,目的是更好地规划和管理。它通常被认为是系统开发生命周期的一个子集。常见的方法包括瀑布,原型,迭代和增量开发,螺旋开发,快速应用程序开发,极端编程和各种类型的敏捷方法。—— [维基百科]
用最少的词汇,解释 CMMI 的五个级别。
- Level 1 - initial 无序,自发的生产模式。
- Level 2 - Managed 有基本管理程序,能完成任务的生产模式。
- Level 3 - Defined 项目流程制度化,能实现持续生产和模式复制的生产模式。
- Level 4 - Quantitatively Managed 定量精准管理,能把控产品性能和生产流程的生产模式。
- Level 5 - Optimizing 优化管理,能持续更新和改善流程的生产模式。
阅读一个软件工程规范与标准,简述标准的内容和作用。
GB/T 8567—2006《计算机软件文档编制规范》根据 GB/T 8566—2001《信息技术软件生存周期过程》 的规定,按文档由专门的文档管理人员和文本编写人员的模式,主要对软件的开发过程和管理过程应编制的主要文档及其编制的内容、格式规定了基本要求。
在应用程序和计算机软件的复杂性日益增加的今天,该标准通过规定影响软件文档的质量的活动(做什么和由谁做),有助于给使用计算机的用户提供完整的、正确的和易懂的文档。
为保障软件生产的质量,软件文档编制应该作为整个软件生产过程的一部分。该标准也给用户和客户提供工具以保证文档过程实施。简而言之,该标准给出了软件生存周期中的一些基本文档的编制规范,也可作为文档编写质量的检验标准,是软件开发过程中的文档编制指南。
—— 中华人民共和国国家标准《计算机软件文档编制规范》GB/T 8567-2006
Part 2:PSP
阅读《现代软件工程》的 PSP: Personal Software Process 章节。
按表格 PSP 2.1, 了解一个软件工程师在接到一个任务之后要做什么,需要哪些技能,解释你打算如何统计每项数据?
待做事项
- 计划
· 估计这个任务需要多少时间 - 开发
· 分析需求
· 生成设计文档
· 设计复审 (和同事审核设计文档)
· 代码规范 (为目前的开发制定合适的规范)
· 具体设计
· 具体编码
· 代码复审
· 测试(包括自我测试,修改代码,提交修改) - 记录时间花费
- 测试报告
- 计算工作量
- 事后总结
- 提出过程改进计划
- 计划
所需技能
- 时间管理和自我管理能力
- 表达和交流的能力
- 书面表达的能力
- 编程测试的能力
- 与人合作的能力
- 把任务按质按量完成的执行力
统计方式
- 拿到任务后,开始将任务分成多个阶段,确定每个阶段的工作任务和结束指标;
- 当一个阶段的工作开始,就记录下当下的时间,并在完成之后,记录这个阶段总共花费的时间,然后开始下一个阶段的任务和计时;
- 当所有任务完成之后,就能将之前记录的结果合起来做统计分析。
CMU 的 CMMI 和 PSP 都是采用了相同的方法去改善企业和个人的生产效率。注重有效过程控制是实现未来个人、项目、企业成功的有效手段。