软考--软件工程基础知识

软件生命周期

问题定义:要示系统分析员与用户进行交流,弄清”用户需要计算机解决什么问题”然后提出关于“系统目标与范围的说明”,提交用户审查和确认

可行性研究:一方面在于把待开发的系统的目标以明确的语言描述出来,另一方面从经济、技术、法律等多方面进行可行性研究

需求分析:确定软件系统的功能需求和非功能需求;分析软件系统的数据要求;导出系统的逻辑模型;修正项目开发计划;如有必要可以开发一个原型系统

开发阶段:设计->实现->测试

维护:

  • 改正性维护:在软件交付使用后,由于开发测试时的不彻底、不完全、必然会有一部分隐藏的错误被带到运行阶段,这些隐藏的错误在某些特定的使用环境下就会暴露。
  • 适应性维护:是为适应环境的变化而修改软件的活动。
  • 完善性维护:是根据用户在使用过程中提出的一些建设性意见而进行的维护活动。
  • 预防性维护:是为了进一步改善软件系统的可维护性和可靠性,并为以后的改进奠定基础。

软件开发模型

瀑布模型:

给出了软件生存周期中制定开发计划、需求分析、软件设计、编码、测试和维护等阶段以及各阶段的固定顺序,上一阶段完成后才能进入到下一阶段,整个过程如同瀑布流水。该模型为软件的开发和维护提供了一种有效的管理模式,但在大量的实践中暴露出其缺点:其中最为突出的是缺乏灵活性,特别是无法解决软件需求不明确或不准确的问题。这些问题有可能造成开发出的软件并不是用户真正需要的,并且这一点只有在开发过程完成后才能发现。所以瀑布模型适用于需求明确,且很少发生较大变化的项目。适合需求明确的情况或者二次开发

演化模型(快速原型模型):

允许在获取了一组基本需求后,通过快速分析构造出软件的一个初始可运行版本(称作原型),然后根据用户在适用原型的过程中提出的意见对原型进行改进,从而获得原型的新版本。这一过程重复进行,直到得到令用户满意的软件。该模型主要用于对软件需求缺乏准确认识的情况。

优缺点:优点:克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险。  

         缺点:所选用的开发技术和工具不一定符合主流的发展;快速建立起来的系统结构加上连续的修改可能会导致产品质量低下。

原型类型:

  • 探索型原型: 目的是要型清用户的需求,确定所期望的特性,并探索各种方案的可行性。它主要针对开发目标模糊,
  • 实验型原型: 主要用于设计阶段,考核;实现方案是否合适,能否实陋
  • 演化型原型: 主要用于及早向用户提交一个原型系统,该原型系统或者包含系统的框架,或者包含系统的主要功能,在得到用户的认可后,将原型系统不断扩充演变为最终的软件系统

原型的运用方式:

  • 抛弃策略是将原型用于开发过程的某个阶段,促使该阶段的开发结果更加完整、准确、一致、可靠,该阶段结束后,原型随之作废。探索型和实验型就是采用此策略的。
  • 附加策略是将原型用于开发的全过程,原型由最基本的核心开始,逐步增加新的功能和新的需求,反复修改反复扩充,最后发展为用户满意的最终系统,演化型快速原型就是采用此策略

螺旋模型:

将瀑布模型和演化模型进行结合,在保持二者优点的同时,增加了风险分析,从而弥补了二者的不足。该模型沿着螺线旋转,并通过笛卡尔坐标的四个象限分别表示四个方面的活动:制定计划、风险分析、实施工程和客户评估。螺旋模型为项目管理人员及时调整管理决策提供了方便,进而可降低开发风险。

喷泉模型:

以面向对象的软件开发方法为基础,以用户需求为动力,以对象来驱动的模型。该模型主要用于描述面向对象的开发过程,体现了面向对象开发过程的迭代和无间隙特性。迭代指模型中的活动通常需要重复多次,相关功能在每次迭代中被加入新的系统。无间隙是指在各开发活动(如分析、设计、编码)之间没有明显边界。

软考--软件工程基础知识_第1张图片

软件开发方法

结构化方法:

面向数据流、自顶向下、适合数据处理领域的问题、

不适合大规模、复杂的项目,难以适应需求的变化,开发完成后流程固化,不够灵活

Jackson方法:

面向数据结构、适合小规模项目、当输入数据结构与输出数据结构没有对应关系时,难以应用此方法

原型化方法:

适合需求不清、业务理论不确定、需求经常变化的情况,包括抛弃式原型和演化式原型

面向对象方法:

更好的复用性,关键在于建立一个全面、合理、统一的模型,分析、设计、实现三个阶段,界限不明确

软件风险

项目风险:项目风险威胁到项目计划,若发生项目风险,就有可能拖延项目的进度和增加项目的成本。项目复杂度、规模及结构不确定性也属于项目风险因素

技术风险:技术风险威胁到开发软件的交付时间。若发生技术风险,开发工作就可能变得很困难或根本不可能。规格说明的歧义性、技术的不确定性、技术陈旧以及前沿技术也是技术风险因素

商业风险:商业风险威胁到开发软件的生存能力

市场风险:开发了一个没有人真正需要的优良产品或系统

策略风险:开发的产品不再符合公司的整体商业策略

销售风险:开发了一个销售部们不知道如何去销售的产品

管理风险:由于重点的转移或人员的变动而失去了高级管理层的支持

预算风险:没有得到预算或人员的保证

 

你可能感兴趣的:(软考中级,软件工程师,敏捷开发)