考试结束了,虽然平时有总结,但是总还是没有那么系统的写篇博客,现在后悔还来得及不?..显然来不及了,不过不管怎么样总要再对自己的总结做一个总结,不能错过了考试又错过了学习的过程.
今天从软件工程说起,开始的时候对这里并没有太在意,因为都是概念性的东西,在自己的内心里总觉得那些计算题要比概念简单的多,所以首先要攻下计算题,虽然在平时复习时也有一种感觉:越到后面的题,概念性的题考的越来越多.不过也没太在意,总觉得概念性的东西一时半刻也记不住,所以总是在做题时发现考到哪一部分才仔细去看,从而造成了常考的会了,不常考的还是只知道那么一点儿皮毛,总是模棱两可的状态,就像考试的时候那样,总能排除两个答案,然后剩下的两个就不知道该如何是好了! 这也算是这次软考的一个教训吧!好吧这些感受在软考总结里在细说,这里还是总结软件工程的知识!
下面对个别的分支进行详细的介绍:
一、开发模型
1、瀑布模型
瀑布模型是以文档作为驱动、适合于软件需求很明确的软件项目模型;但是瀑布模型是一种理想的线性开发模型,缺乏灵活性,特别是无法解决软件需求不明确或不准确的问题。
如图所示是瀑布模型的线性结构
2、原型模型
原型模型的特点是动态的定义需求,所以特点就是适合需求不明确的开发
3、喷泉模型
特点是面向对象的开发过程,最核心的是迭代,没有明显边界,允许各种活动交叉进行。
4、螺旋模型
结合了螺旋模型和瀑布模型的的特点,加入了两个模型都忽略了的风险分析,弥补了这两个模型的不足。
5、统一过程(UP)
一种“用例和风险驱动,以架构为中心,迭代并增量”的开发过程;并定义了4个技术阶段,分别为:起始阶段--生命周期目标;精华阶段--生命周期架构;构建阶段--初始运作功能;移交阶段--产品发布。
6、敏捷开发
敏捷开发的有很多种方法,常用的有:
(1)极限编程:包括4大价值观,5个原则,12个最佳实践
(2)水晶法:它认为每一个不同的项目都需要一套不同的策略、约定和方法论。
(3)并列争求法:使用迭代的方法
二、开发方法
1、结构化方法
面向数据流的开发方法,由结构化分析,结构化设计,结构化程序设计构成。结构化方法总的指导思想是自顶向下,逐层分解,它的基本原则是功能的分解与抽象;适合数据处理领域的问题,但是不适合解决大规模的、特别复杂的项目,且难以适应需求的变化。
2、面向对象方法
面向对象的方法正是以对象作为最基本的元素,也是分析问题、解决问题的核心。面向对象的方法主要有:Booth方法、Coad方法、OMT方法。
三、项目管理
1、成本估算
(1)成本估算的方法
(2)模型
Puttnam模型,动态多变量模型
基本COCOMO模型,静态单变量模型;对整个系统软件进行评估。
中级COCOMO模型,静态多变量模型;将系统分为系统和部件两个层次。
详细COCOMO模型,将软件系统分为系统,子系统和模块三个层次。
2、风险分析
(1)风险识别
最常用的一种方法是建立风险条目检查表
(2)风险预测
又称风向估算,从两个方面评估一个风险,风险发生的可能性或概率;以及如果风险发生了,所产生的后果。
(3)风险评估
一种很有用的技术就是定义风险参照水准,成本、进度和性能就是三中典型的风险参照水准。
(4)风险控制
目的是辅助项目组建立处理风险的策略,需要考虑的三个问题:风险避免,风险监控,风险管理及意外事件计划。其中避免永远是最好的策略。
3、进度管理
(1)Gantt图
能清晰的描述每个任务从何时开始,到何时结束,任务的进展情况以及各个任务之间的并行性,但是他不能清晰的反应出各个任务之间的依赖关系,难以确定整个项目的关键所在,也不能反应计划中有潜力的部分。
(2)PERT图
不仅给出了每个任务的开始时间、结束时间和完成该任务所需的时间,还给出了任务之间的关系,即哪些任务完成后才能开始另外一些任务,以及如期完成整个工程的关键路劲。
四、质量管理
1、软件质量特性
(1)ISO/IEC9126软件质量模型
(2)Mc Call软件质量模型
2、软件容错方法
(1)结构冗余
静态冗余
动态冗余
混合冗余
(2)信息冗余
为检测或纠正信息在运算或传输中的错误须外加一部分信息。
(3)时间冗余
重复执行指令或程序来消除瞬时错误带来的影响
(4)冗余附加技术
a屏蔽硬件错误:
关键程序和数据的冗余存储及调用
检测、表决、切换、重构、纠错和复算的实现
b屏蔽软件错误
冗余备份程序的存储及调用
实现错误检测和错误恢复的程序
实现容错软件所需的固化程序
写的似乎有些长了,剩下的部分下回分解。