软考进程(3)——软件工程
五一的学术交流会把我打击了不少,不过通过听大家的讲解和讨论,我还是收获了很多的。尤其在向阳师哥和坤哥、大勇讲软工和项目经理时,更是有共鸣,因为自己刚刚复习到软件工程这块知识。现在把自己对于软工的理解总结一下。
为什么会有软件工程?
为了解决“软件危机”,“软件工程”的概念被提了出来。早期的软件开发缺少文档,开发成本与进度与预计相差甚远,软件质量得不到保证,需求增长,软件规模扩大,开发生产率相对下降了……没有好的指导方法和辅助工具,软件开发难、维护难,软件危机越来越严重!
软件工程正是为了解决软件危机的种种问题,于是有了开发模型(瀑布模型、演化模型、螺旋模型、喷泉模型等),有了开发方法(面向数据流、面向数据结构、面向对象方法等)、开发工具的研究,有了文档和规范,有了……
软件工程概述
1.软件生存周期
1). 可行性分析——可行性分析报告
2). 需求分析——软件需求说明书
3). 概要设计——概要设计说明书
4). 详细设计——详细设计说明书
5). 编码——程序
6). 测试——测试计划、测试用例、测试报告
7). 维护——维护记录
2.软件生存周期模型
1). 瀑布模型——这个名字起得好,如同瀑布流水、逐级向下,规定了由前至后的连接次序,不可改变。这是一种以文档为驱动、适合于软件需求很明确的软件项目的模型,要求项目开发过程中每个阶段都有评审和确切的文档。
2). 演化模型——因为瀑布模型过于理想化,所以开发实践经常要不断明确需求,于是,开发人员在获取一组基本的需求后,快速开发一个软件的初始可运行版本(原型),然后和用户交流,之后对原型改进,重复多次,最终得到用户满意的软件。
3). 螺旋模型——相当于瀑布模型+原型模型+风险分析,适合于复杂的大型软件。
4). 喷泉模型——适合于面向对象的开发方法,克服了瀑布模型不支持软件重用和多项开发活动集成的局限性,该模型具有迭代性(开发活动可以重复很多很多次)和无间隙性(交叉进行,不一定分析完才能设计、设计完成才能编码)。
3.软件开发方法
1). 结构化:
分析(数据流图)——设计(软件结构图)——程序设计(控制结构)
指导思想:自顶向下、逐层分解
基本原则:分解和抽象
2). Jackson(JSP):
输入输出数据结构
现实世界模型——功能需求——————————>程序结构
3). 原型化
适用于需求不清、业务理论不确定、系统规模不大不复杂的情况。
4). 面向对象
分析——设计——实现
Booch方法、Coad方法、OMT方法
软件需求分析
软件开发项目管理
向阳师哥说,看你够不够做一个项目经理,先看你会不会对成本的估算。
1. 成本估算
方法:自顶向下(不会遗漏集成、配置管理之类的系统级事务,却往往不清楚低级别上的技术困难问题)、自底向上(每一个子任务工作量估算准确,易忽略系统级工作量)、差别估算(与已完成的类似项目比较,估算准确度高)。
模型:Putnam、COCOMO
2. 风险分析
识别、预测、评估、控制
3. 进度管理
Gantt图:清楚描述每个任务何时开始、何时结束,任务进展情况和并行性,不能反映任务之间的依赖关系。话不多说,看图形象。
PERT图:给出了每个任务的开始时间、结束时间和完成该任务所需的时间以及任务间的关系。
4. 人员管理
软件配置管理
SCM用于整个软件过程,管理整个软件生存期各阶段变更的活动。有以下几个概念需要注意:
1. 基线——可以作为一个检查点,当开发出现错误时可以返回到最近和最恰当的基线上,类似还原点的概念。
2. 软件配置项——软件工程中产生的信息项(各种文档等)都可以作为SCM的对象,他们可以被修改,但必须经过评估和确认.
3. 版本控制
4. 变更控制——配置数据库分为三类:开发库、受控库、产品库。
软件过程管理
1. 软件能力成熟度
CMMI(0-5)能力等级:0——未完整级,表明过程域的一个或多个特定目标没有被满足;1——已执行级;2——已管理级,针对单个过程实例的能力;3已定义级,关注过程的组织级标准化和部署;4——量化管理级;5——优化级。
2. 统一过程(UP)
五个阶段及其里程碑分别是:
i. 起始阶段——生命周期目标
ii. 精化阶段——生命周期架构
iii. 构建阶段——初始运作功能
iv. 移交阶段——产品发布
v. 产生阶段
3. 敏捷方法
i. 极限编程
ii. 水晶法
iii. 并列争球法
iv. 自适应软件开发
软件质量管理与质量保证
1. 软件质量特性
i. 功能性
ii. 可靠性
iii. 易使用性
iv. 效率
v. 可维护性
vi. 可移植性
2. 质量保证
3. 复杂性
i. 代码行度量法
ii. McCabe度量法
4. 软件评审
5. 软件容错技术
软件容错的一般方法有以下几种:
i. 结构冗余
ii. 信息冗余
iii. 时间冗余
iv. 冗余附加技术
最近有些师弟师妹学习不够认真,于是拉上他们一起学习设计模式和软工,刚好他们学到这里,很多东西理解深刻,这样和他们交流一下也是挺好的,自己学习的同时也检验一下徒弟的学习情况。
感触就是:那时的自己,那么远,这么近。
- 6楼tang_huan_116小时前
- 好好复习,加油!
- 5楼liujiahan629629昨天 19:55
- 交流分享的重要性哈!!!
- 4楼lishehe昨天 11:20
- 加油啊,这些都是好的理论指导
- 3楼YUN186昨天 09:05
- 师姐又写博客了呀,潜力股,弟子不必不如师师不必贤于弟子,也就早入教那么几个月,师傅长师傅短的
- 2楼chenjinge7昨天 21:43
- 都是重点啊!加油!
- 1楼lfmilaoshi昨天 20:55
- 看来这个阶段的学习收获多多啊!n不过关于如何学习如何做总结?和如何写博客,从你的这个博客中,我觉得你还有很大的潜力可以挖一挖,你的学习效率,还可以大大的提高,潜力无限,是个标准的潜力股。