第一周作业
2018-03-12 17:39
246 查看
简单题
软件工程的定义
软件工程是将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护,即将工程化方法应用于软件;
在(1)中所述方法的研究;
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
阅读经典名著《人月神话》等资料,解释 software crisis、COCOMO 模型
软件危机(Software Crisis)是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。存在软件大量需求与软件生产效率低之间的矛盾,软件高度复杂与软件开发方法不成熟之间的矛盾。构造性成本模型(Constructive Cost Model),它是一种精确、易于使用的,基于模型的成本估算方法,最早由勃姆 (Boehm) 于 1981 年提出。从本质上说是一种参数化的项目估算方法,参数建模是把项目的某些特征作为参数,通过建立一个数字模型预测项目成本(类似于居住面积作为参数计算的整体的住房成本)。
在估计和进度安排中表示开发工作量的度量单位是“人月”,10人月表示5个人合作能在2个月内完成的工作量。成本的确随开发产品的人数和时间不同,有着很大变化,进度却不是如此。《人月神话》认为用人月作为衡量一项工作的规模是一个危险和带有欺骗性的神话。它暗示着人员数量和时间是可以互相替换的。人数和时间的互换仅仅适用于一下情况:某个任务可以分解给参与人员,并且他们之间不需要交流。这在割小麦或收获棉花的工作中是可行的,而在系统编程中近乎不可能。
沟通、交流的工作量非常大,它会很快消耗任务分解所省下来的个人时间。从而,添加更多的人手,实际上是延长了,而不是缩短了时间进度。Brooks法则:
向进度落后的项目中增加人手,只会使进度更加落后。(Adding manpower to a late software project makes it later)
在众多软件项目中,缺乏合理的时间进度是造成项目滞后的最主要原因,它比其他所有因素加起来的影响还要大。
软件生命周期
软件生命周期(Systems Development Life Cycle)是软件的产生直到报废的生命周期,周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段,这种按时间分程的思想方法是软件工程中的一种思想原则,即按部就班、逐步推进,每个阶段都要有定义、工作、审查、形成文档以供交流或备查,以提高软件的质量。划分的原则:各个任务彼此间尽可能相互独立,同一阶段各项任务的性质尽可能相同,从而降低每个阶段任务的复杂性,简化不同阶段之间的联系,有利于软件开发过程的组织管理。
典型划分:
软件分析时期:问题定义、可行性研究、需求分析
软件设计时期:总体设计、详细设计
编码与测试时期:编码、测试
运行与维护时期
按照 SWEBok 的 KA 划分,本课程关注哪些 KA 或 知识领域?
软件需求(Software Requirements)软件设计(Software Design)
解释 CMMI 的五个级别。例如: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第三级别。CMMI由工业界、政府(美国)和SEI(Software Engineering Institute)在卡内基梅隆大学联合发展起来。CMMI模型对开发和改进,迎合组织商业目标的过程提供指导。CMMI项目通过将不同的模型集成到同一个框架内,提高成熟度模型的可用性。CMMI前身是CMM或者说Software CMM,但是经过不断地发展,已经同样适用于其他领域。例如,硬件产品开发、各式各样服务的递交、产品和服务的获取等。
CMMI的不同级别包含一系列更为细致的指标,例如,第五级别需要具备CAR(Causal Analysis and Resolution)和OPM(Organizational Performance Management)能力(查出问题源头并解决的能力和管理组织绩效的能力)。
解释 PSP 各项指标及技能要求
阅读《现代软件工程》的 PSP: Personal Software Process 章节。 按表格 PSP 2.1, 了解一个软件工程师在接到一个任务之后要做什么,需要哪些技能,解释你打算如何统计每项数据? (期末考核,每人按开发阶段提交这个表)
软件工程师需要做的工作都包含在上表中,需要有分析需求、设计架构、代码实现、软件测试的能力。
记录每阶段开始时间和结束时间,事后再计算用了多长时间。中间可能有离开项目去做别的事情,那么只要记录多段工作开始时间和结束时间就好了。工作时间长的,精确到小时就好了。
只要亲身参与了整个流程,文档、报告和总结就能写出来。有时候完成一件事情之后才意识到有更好的方式或者随着自身的能力提高有了新的设计或想法,那么可以放到改进计划里去。
相关文章推荐
- 软件工程_师大站_第一周作业
- python 第一周作业:三级菜单
- 20162302 第一周作业
- 刘诚昊20162316 第一周作业
- Deeplearning-吴恩达-卷积神经网络-第一周作业01-Convolution Networks(python)
- 第一周作业--《算法概论》思维导图
- 第一周作业
- 我的第一周作业
- 马哥2016全新Linux+Python高端运维班第一周作业
- 第一周课程作业(2016.7.31)
- 马哥第3期运维班第一周作业
- Linux基础入门第一周作业【Linux微职位】
- 第一周作业
- 第一周作业
- 2017-2018-1 团队名称 第一周 作业
- 第一周作业。
- 第一周作业.
- 第一周作业
- 吴恩达深度学习第5课第一周作业2 Dinosaurus Island Character level language model final-v3
- 2017-2018-1 我爱学Java 第一周 作业