作业1

| 分类 作业  | 标签 博客 

作业

1. 简单题

软件工程的定义

软件工程:(1)将系统化、规范化、可度量的方法应用与软件的开发、运行和维护的过程,即将工程化应用于软件中。
        (2)对(1)中所述方法的研究。

阅读经典名著“人月神话”等资料,解释 software crisis、COCOMO 模型

软件危机:六十年代以来,随着计算机应用需求的驱动,系统软件和应用软件有很大的发展,如操作系统,编译系统和大型应用软件等。
由于软件生产的复杂性和高成本,使大型软件的生产出现了很大的困难,即出现软件危机。

COCOMO 模型:构造性成本模型(COCOMO,英文全称为Constructive Cost Model)  
是由巴里·勃姆(BarryBoehm)提出的一种软件成本估算方法。这种模型使用一种基本的回归分析公式,
使用从项目历史和现状中的某些特征作为参数来进行计算。

软件生命周期。

软件生命周期(Software Development LifeCycle)是指软件的产生直到成熟的全部过程。

按照 SWEBok 的 KA 划分,本课程关注哪些 KA 或 知识领域?

软件需求、软件设计、软件工程过程

解释 CMMI 的五个级别。例如:Level 1 - Initial:无序,自发生产模式。

第一级别,初始级:首先,软件的过程有序性程度不高,甚至会出现混乱的情
况,软件是否能够成功主要取决于研发人员本身的实力和努力,项目可能会成
功,但是任务的完成中存在很大的偶然性。也就是说企业不能担保在实施同一
类项目的时候还能按时按期完成任务,研发人员是这一个级别最关键的因素,
企业占到的作用不甚明显。

第二级别,可管理级:公司在管理上已经具备了一定的能力,能够建立比较基
础的项目管理规范,对于项目的实施能够列出相应的计划和流程,并且随着流
程的进行可以对此实施监控和控制。从一级到二级,最大的差别就是企业的管
理有了相当程度的进步,利用管理手段排除了企业在第一级别完成任务时候的
随机性与不确定性,保证企业的项目都能得到成功。

第三级别:已定义级:在第三级别的情况下,企业不仅能够把软件管理和工程
管理两个过程都实现标准化和文档化,而且软件产品的整个生产过程,都是可
见可控的。也就是说,企业根据自身的情况以及自己的流程能够建立一套规范
制度的管理体系与流程,从而保证在同类或者是不同类的项目上都能够得到成
功的实施。在这一阶段,企业的科学管理已经形成企业文化,更是企业内涵。

第四级别:量化管理级:是第三级别的升级版,在第四级别的时候,企业的项
目管理首先是已经形成了完善的制度,而且根据名称,可以平判处,这一级别
最关键的两个字就是“量化”。对项目流程的管理做到量化、数字化、具体化,
对软件过程和产品精度都有定量的控制,实现管理更加细致化,精细化,项目
的质量也能因此保证相对的高质量和稳定性。

第五级别:优化管理级:第五级别优化管理级是软件企业项目管理目前来说的
最高境界。企业能够非常主动的来对流程进行一定程度的改善,将更加先进的
技术运用到其中,让流程优化上升到一个更高的层次。在第四级别的基础上,
还能够利用当前的信息资料来对项目过程中出现的问题进行预防,让每一个项
目都能有非常高的质量。

用自己语言简述 SWEBok 或 CMMI (约200字)

swebok是IEEE计算机学会职业实践委员会主持的一个项目,其目标为:
1.促进世界范围内对软件工程的一致观点
2.阐明软件工程相对其它学科(如计算机科学、项目管理、计算机工程和数学等)的位置,并确立它们的分解
3.刻画软件工程学科的内容
4.提供使用知识体系的主题
5.为开发课程和个人认证与许可材料,提供一个基础
SWEBOK V3在软件工程领域共有15个知识领域:
    软件需求
    软件设计
    软件构造
    软件测试
    软件维护
    软件配置管理
    软件工程管理
    软件工程过程
    软件工程模型和方法
    软件质量
    软件工程职业实践
    软件工程经济学
    计算基础
    数学基础
    工程基础

2. 解释 PSP 各项指标及技能要求:

阅读《现代软件工程》的 PSP: Personal Software Process 章节。

按表格 PSP 2.1,了解一个软件工程师在接到一个任务之后要做什么,需要哪些技能,解释你打算如何统计每项数据? (期末考核,每人按开发阶段提交这个表)

一个软件工程师在接到一个任务之后要做什么:
计划
    估计这个任务需要多少时间
开发
    分析需求
    生成设计文档
    设计复审 (和同事审核设计文档)
    代码规范 (为目前的开发制定合适的规范)
    具体设计
    具体编码
    代码复审
    测试(包括自我测试,修改代码,提交修改)
记录时间花费
测试报告
计算工作量
事后总结
提出过程改进计划

需要的技能:
1.知识:  对具体技术的掌握, 动手能力
例如: 对Java, C/C++/C#, 诊断/提高效能的技术,  对device driver, kernel
debugger 的掌握;对于某一开发平台的掌握。
2.自我管理的能力; 表达和交流的能力; 与人合作的能力;
把任务按质按量完成的执行力; 这些能力在IT 行业和其它行业都很重要。

如何统计每项数据:
记录每项任务开始和结束的时间,就可以知道每个任务所用时间

上一篇     下一篇