一.软件工程基础知识
1.软件工程定义
- 将系统化,规范化,可度量的方法应用于软件的开发,运行,维护的过程
- 对上述方法的研究
总而言之,软件工程就是把经过实践考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。
2.软件危机
定义
- 60年代以来,随着计算机发展,对大型软件的需求增加。由于软件复杂性和高成本,使大型软件的生产出现了很大困难,即出现软件危机
主要表现
- 软件开发进度难以预测
- 软件开发成本难以预测
- 用户对产品功能难以满足
- 软件产品质量无法保证
- 软件产品难以维护
- 软件缺少适当的文档资料
解决途径
- 软件工程学科的诞生。软件工程吸取工程学的成功经验,通过研究软件生产的客观规律,明确提出软件生产的生命周期,并且将管理学的方法应用于软件开发,运行,维护过程中。
3.COMOMO模型
定义:
COCOMO,英文全称为constructive cost model,中文为构造性成本模型。它是一种精确、易于使用的,基于模型的成本估算方法。
模型:
COCOMO用3个不同层次的模型来反映不同程度的复杂性,他们分别为
- 基本模型 (Basic Model). 是一个静态单变量模型,它用一个以已估算出来的源代码行数 (LOC) 为自变量的函数来计算软件开发工作量。
- 中间模型 (Intermediate Model). 则在用 LOC 为自变量的函数计算软件开发工作量的基础上,再用涉及产品、硬件、人员、项目等方面属性的影响因素来调整工作量的估算。
- 详细模型 (Detailed Model) 包括中间 COCOMO 模型的所有特性,但用上述各种影响因素调整工作量估算时,还要考虑对软件工程过程中分析、设计等各步骤的影响。
同时根据不同应用软件的不同应用领域,COCOMO模型划分为如下3种软件应用开发模式:
- 组织模式(Organic Mode).这种应用开发模式的主要特点是在一个熟悉稳定的环境种进行项目开发,盖项目与最近开发的其他项目有很多相似点,项目相对较小,而且并不需要许多创新.
- 嵌入式应用开发模式 (Embedded Mode).在这种应用开发模式种,项目受到接口要求的限制.接口对整个应用的开发要求非常搞,而且要求项目有很大的创新,例如开发一种全新的游戏.
- 中间应用开发模式 (Semidetached Mode).这时介于组织模式和嵌入式应用开发模式之间的类型.
特点:
COCOMO 模型具有估算精确、易于使用的特点。在该模型中使用的基本量有以下几个: (1)DSI( 源指令条数 ) ,定义为代码行数,包括除注释行以外的全部代码。若一行有两个语句,则算做一条指令。 (2)MM( 度量单位为人月 ) 表示开发工作量。 (3)TDEV( 度量单位为月 ) 表示开发进度,由工作量决定。 (4)COCOMO 模型重点考虑 15 种影响软件工作量的因素,并通过定义乘法因子,从而准确、合理地估算软件的工作量。
4.软件生命周期
软件生命周期
(Software Development Life Cycle) 包含6个阶段
- 可行性分析和计划阶段
- 需求分析阶段
- 设计阶段
- 实现阶段
- 测试阶段
- 运行和维护阶段
5.软件工程知识体系
软件工程知识体系(The Software Engineering Body of Knowledge (SWEBOK))是ISO/IEC的国际标准,是普遍接受的软件工程知识体系指南。
SWEBOK V3包含以下知识领域(KA)(课程关注点重点标出)
- Software requirements
- Software design
- Software construction
- Software testing
- Software maintenance
- Software configuration management
- Software engineering management
- Software engineering process
- Software engineering models and methods
- Software quality
- Software engineering professional practice
- Software engineering economics
- Computing foundations
- Mathematical foundations
- Engineering foundations
6.CMMI模型
定义:
MI全称是Capability Maturity Model Integration,即能力成熟度模型集成
背景:1994年由美国国防部(United States Department of Defense)与卡内基-梅隆大学(Carnegie-Mellon University)下的软件工程研究中心(Software Engineering Institute,SEISM)以及美国国防工业协会(National Defense Industrial Association)共同开发和研制的,他们计划把现在所有现存实施的与即将被发展出来的各种能力成熟度模型,集成到一个框架中去,申请此认证的前提条件是该企业具有有效的软件企业认定证书。其目的是帮助软件企业对软件工程过程进行管理和改进,增强开发与改进能力,从而能按时地、不超预算地开发出高质量的软件。
5级分类模型:
- 初始级(软件过程是无序的,有时甚至是混乱的,对过程几乎没有定义,成功取决于个人努力。管理是反应式的。)
- 可管理级(建立了基本的项目管理过程来跟踪费用、进度和功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得的成功经验。)
- 已定义级(已将软件管理和工程两方面的过程文档化、标准化,并综合成该组织的标准软件过程。所有项目均使用经批准、剪裁的标准软件过程来开发和维护软件,软件产品的生产在整个软件过程是可见的。)
- 量化管理级(分析对软件过程和产品质量的详细度量数据,对软件过程和产品都有定量的理解与控制。管理有一个作出结论的客观依据,管理能够在定量的范围内预测性能。)
- 优化管理级(过程的量化反馈和先进的新思想、新技术促使过程持续不断改进。)
贡献:
- 能保证软件开发的质量与进度,能对“杂乱无章、无序管理”的项目开发过程进行规范。
- 有利于成本控制。
- 有助于提高软件开发者的职业素养。
- 能够解决人员流动所带来的问题。
- 有利于提升公司和员工绩效管理水平,以持续改进效益。
个人理解:
CMMI是能力成熟度模型,通俗点说,CMMI是成功企业如何做好软件的一些习惯,做法,准则的集合。CMMI可以通过连续式或阶段式评估。用连续式评估企业会得到很多个PA的Level,用阶段式评估,企业会得到一个整体的level。CMMI共分5级,想要达到相应的级别,需要满足该级别规定的过程域(PA)要求,要达到PA的要求则需要满足PA所规定的目标(Goal)的要求,要满足Goal的要求则需要满足Goal所规定的实践(Practice)的要求。评估方式分为3类,
SCAMPI C,
SCAMPI B,
SCAMPI A。CMMI的最终目标是为了达到企业的商业目标,提高生产力。
7.软件工程师
待做事项
- 制定计划,进度表
- 分析需求
- 设计文档
- 设计复审
- 代码规范
- 具体设计
- 具体编码
- 代码复审
- 单元测试,集成测试,系统测试,验收测试
所需技能
- 数据结构和算法
- 时间管理和自我,团队管理能力
- 表达和交流能力
- 书面表达能力
- 编程测试能力
- 团队协作能力
- 任务按时按量完成的执行力
统计方式
- 将任务分为多个阶段,制定每个阶段的目标和所需时间
- 阶段开始记录时间,阶段结束记录时间
- 根据实际情况动态改变计划和进度表