软件工程

软件的定义

软件是计算机系统中与硬件相互依存的一部分,软件包括程序、数据与相关文档的完整集合。其中程序是按事先设计的功能和性能要求执行的指令序列,数据是使程序能正常操纵信息的数据结构,文档是与程序开发、维护和使用有关的图文材料。编程

在结构化程序设计时代,程序的最小单位是函数及子程序,程序与数据是分离的;在面向对象程序设计时代,程序的最小单位是类,在类中封装了相关的数据及指令代码。数据结构

软件生命周期

如同其余事物同样,软件也有一个孕育、诞生、成熟和衰亡的过程,咱们称之为软件生命周期。软件生命周期由软件定义、软件开发、和运行维护3个时期组成,每一个时期又可划分为若干个阶段。框架

软件定义时期的主要任务是解决“作什么”的问题,即明确工程的总目标和可行性;导出实现工程目标应使用的策略及系统必须完成的功能;估计完成工程须要的资源和成本;制定工程进度表。该时期的工做也就是常说的系统分析,它一般又分为3个阶段:问题定义、可行性研究和需求分析。函数

软件开发时期的主要任务是解决“如何作”的问题,即具体设计和实如今前一个时期定义的软件,一般由概要设计、详细设计、编码和测试4个阶段完成。工具

软件运行维护时期的主要任务是使软件持久地知足用户的须要,一般由4类维护活动:改正性维护,也就是诊断和改正正在使用过程当中发现的软件错误;适应性维护,即修改软件以适应环境的变化;完善性维护,即根据用户的要求改进或扩充软件,使它更完善;预防性维护,即修改软件为未来的维护活动预先作准备。性能

软件危机

软件开发周期长、成本高、质量差、维护困难缘由:测试

一、缺少软件开发的经验和有关软件开发数据的积累,使得开发工做的计划很难制定。主观盲目的制定计划,每每与实际状况相差太远,导致经常突破经费预算,工期一拖再拖。并且对于软件开发工做,给已经拖延了的项目临时增长人力只会使项目更加拖延。编码

二、软件人员与用户的交流存在障碍,除了知识背景的差别,缺乏合适的交流方法及需求描述工具也是一个重要缘由,这使得获取的需求不充分或存在错误,在开发的初期难以发现,存在的问题每每在开发的后期才暴露出来,使得开发周期延长,成本增高。设计

三、软件开发过程不规范,缺乏方法论和规范的指导,开发人员各自为战,缺乏总体的规划和配合,不重视文字资料工做,软件难以维护。对象

四、随着软件规模的增大,其复杂性每每会呈指数型增加。

五、缺乏有效的软件测评手段,提交用户的软件质量差,在运行中暴露出大量问题,轻者影响系统的正常使用,重者发生事故,甚至形成生命财产的重大损失

软件工程

1968年10月在北大西洋公约组织(NATO)召开的计算机科学会议上,Fritz Bauer首次提出“软件工程”的概念,试图将工程化方法应用于软件开发。许多计算机和软件科学家尝试,把其余工程领域中行之有效的工程学知识运用到软件开发工做中来,通过不断实践和总结,得出这样的结论:按工程化的原则和方法组织软件开发工做是有效的,是摆脱软件危机的一个主要出路。

软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发和维护软件,把通过时间考验而证实正确的管理技术和当前可以获得的最好的技术方法结合起来,以经济地开发出高质量的软件并有效的维护它,这就是软件工程。

软件工程的目标是运用先进的软件开发技术和管理方法来提升软件的质量和生产率,也就是要以较短的周期、较低的成本生产出高质量的软件产品,并最终实现软件的工业化生产

自从“软件工程”诞生,提出用工程学的基本原理和方法来组织和实施软件生产后,又发展了与软件有关的心理学、生理学、经济学等方面的学科。在此期间,研究软件工程学的科学家们陆续提出了100多条有关软件工程的准则,1983年美国TRW公司B.W.Boehm将它们归纳为著名的软件工程7条基本原理:

一、按软件生存周期分阶段制定计划并认真实施
软件从定义、开发、运行和维护,直到最终被废弃,要经历一个很长的时间,一般称这样一个时期为软件生存周期。在软件生存周期中须要完成许多不一样性质的工做,因此应把软件生存周期划分为若干阶段,为每一阶段规定若干任务,制定出可行的计划,并按照计划对软件的开发和维护啊活动进行管理。

二、坚持进行阶段评审
软件的质量控制工做不能等到编码结束后再进行,由于大部分错误是在编码以前形成的,并且错误发现的越晚,为改正它所需付出的代价就越大,所以,在每一个阶段都要进行严格的评审,以尽早发如今软件开发过程当中产生的错误

三、坚持严格的产品控制
在软件开发过程当中要及时识别全部影响产品质量的因素,并在开发过程当中严格加以控制,如对于需求变动的控制。因为外界环境变化或软件工做范围的变化,在软件开发过程当中需求的变动是在所不免的,因此必须依靠科学的产品变动控制机制来顺应需求的变动。就是说,当需求变动时,为了保持软件各个配置成分的一致性,必须实施严格的产品变动审查和基线配置管理,确保变动的正确性和有效性。

四、使用现代程序设计技术
随着软件产品规模和复杂性的不断增长,对于软件开发的方法和工具提出了更高的要求。实践代表,采用先进的程序设计技术可提升软件开发的生产率,还可提升软件产品的可维护性。

五、明确责任
为了提升软件开发过程的可见性并有效地进行管理,应当根据软件开发项目的总目标、任务分解结构和完成期限,规定开发组织的责任和产品标准,使得工做结果可以获得清楚的审查。

六、用人少而精
合理安排软件开发小组人员的原则是参与人员应当少而精,即小组的成员应当具备较高的素质,且人数不该过多。人员素质高能大大提升软件开发的效率,明显减小软件中的错误。开发人数减小,能够下降因交流开发进展状况和讨论遇到的问题而形成的通讯开销。

七、不断改进开发过程
软件开发过程定义了软件工程方法使用的顺序、要求交付的文档资料、为保证质量和协调变化所须要的管理以及软件开发各个阶段应采起的活动和必要的评审。为保证软件开发的过程可以跟上技术的进步,必须不断地灵活改进软件工程过程。为了达到这个要求,应当积极主动地采起新的软件开发技术,注意不断总结经验。此外,须要注意收集和积累出错类型、问题报告等数据,用以评估软件技术的效果和软件人员的能力,肯定必须着重开发的软件工具和应当优先研究的技术。

软件工程方法论

软件工程方法论包含3个要素:方法、工具和过程。

软件工程方法为建造软件提供技术上的解决方案(“如何作”)。方法覆盖面很广,包括沟通、需求分析建模、设计建模、编程、测试和维护支持。

工具为方法的运用提供自动的或半自动的软件支撑环境。

过程是为了得到高质量的软件所须要完成的一系列任务的框架,它规定了完成各项任务的工做步骤。

相关文章
相关标签/搜索