作者:Max_coffee | 来源:互联网 | 2023-05-18 05:25
软件的发展说起软件工程不得不提软件,那软件又是什么呢?软件呀,它生存于硬件的家庭,由于硬件的各种限制,软件就是一个程序,主要由个人来编制。随着硬件的发展,软件的规模也相继变大,个人不能够
软件的发展
说起软件工程不得不提软件,那软件又是什么呢?软件呀,它生存于硬件的家庭,由于硬件的各种限制,软件就是一个程序,主要由个人来编制。随着硬件的发展,软件的规模也相继变大,个人不能够完成这么大的规模,就必须有好多人来完成。这时人们之间就有矛盾了,互相之间交流出现障碍,所以这些开发者就每写个程序,就写段说明。时间久了,软件变成了”程序+说明书“。软件就这样不断发展,变的更大了,它的很多功能需要大量的数据,并且需要专门的数据结构。软件最后变成了”程序+数据+说明书“。
软件工程
软件有了,就再添两个字——工程。有了工程,软件就不再能够随便开发了。软件工程把软件的开发的整个流程做了个计划,做了个标准。软件工程定义了7个基本原理。
第一、把软件的开发过程分为了好几个阶段,并且非常严格的控制。
第二、对每个阶段完成后,进行严格的评审。
第三、开发软件要用到现代的程序设计技术,也就是要用好的设计技术,注意不是开发技术,而是设计技术,是对整个软件的技术。
第四、结果应该清楚的评审,因为软件这个东西看不见,摸不着。所以一定要明确软件开发后的质量标准,便于审查。
第五、开发人员要是精英,人少了,之间的交流就少,因为交流出错的可能就少很多。
第六、实行严格的产品控制,产品出来了,不能随便更改,只要是更改,就得提前申请。评审后才能修改。
第七、虽然产品出来了,也要不断关注产品,看是否能采用先进的技术,总之要继续前进,选用新技术。
软件的生存周期
软件的生存周期,所谓生存周期,就是软件从一开始到它不怎么使用的这一段时间。大概分为6个阶段:计划开发软件,分析软件干什么,如何让软件完成工作,编写为计算机识别的代码,测试自己的软件行不行,最后不断的修理自己的软件。
软件的开发模型
说白了开发模型就是软件开发这几个阶段的过程有怎样的要求,有怎样的格式。比如瀑布模型,就要求每个相连的阶段必须严格控制,防止错误的出现。
在众多的模型中一个共同的特点就是:需求的分析,需求一定要把握好。
瀑布模型缺点:1、开发过程不能够逆转,否则代价特高。2、实际的项目开发很难严格按照该模型进行。3、客户开始很难清楚自己的需求。4、软件的实际情况必须到项目开发后期,客户才能看到。
瀑布模型的使用范围:1、用户的需求很清楚,没有多少变化。2、开发人员对用户的需求很清楚。3、开发工作对用户的参与度要求低。
快速原型优点:1、可以得到良好的需求。2、有利于开发与培训同步。3、开发费用低,开发周期短。4、用户很快就能够看到原型。
快速原型模型的缺点:1、客户与开发者对原型理解不同,当用户听到还需要进一步开发系统时,很失望。2、准确且适合的原型设计很困难。3、不利于开发人员创新。
快速原型模型的使用范围:1、开发人员对开发的领域比较熟悉且有快速的原型开发工具。2、项目招标,原型可以作为软件的开发模型。3、进行产品移植或对已有产品原型进行更改时,原型模型方法很适用。
增量模型:1、人员分配很灵活,开始不用投入大量的人力资源。2、核心产品很受欢迎,可以增加人力实现下一个增量。3、可先发布部分功能给客户,让用户看到效果。
增量模型缺点:1、同时开发的构件很难集成,需要软件的开放式结构。2、增量模型一直在修改,很容易退化到边做边改模型,对整个软件开发过程失去控制性。
增量模型的使用范围:1、进行已有产品升级或新版本开发,增量模型很适合。2、对完成期限很严格的产品,可以考虑该模型。3、对开发的领域很熟悉,且有原型,该模型也非常适合。
螺旋模型的优点:1、设计上的灵活性,可以在项目的各个阶段进行变更。2、分阶段来构建大系统比较简单,而且使成本计算简单。3、客户始终参与每个阶段的开发,使项目不偏离。4、随着项目的推进,有利于用户掌握项目的信息,也容易使用户和管理层有效交互。
螺旋模型的缺点:1、采用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失;2、过多的迭代次数会增加开发成本,延迟提交时间。
螺旋模型的使用范围:螺旋模型只适合于大规模的软件项目。
总结:几种模型都在和用户打交道,而且对整个系统的严格是可以看到的。所以无论哪种方法都要重视用户的需求和对产品的质量控制。
软件开发的方法
软件的开发方法主要有两种:结构化开发方法和面向对象的开发方法
结构化方法:自顶向下,逐步求精的方法,用模块化的方法和功能抽象把系统分为好几个子系统,容易开发,控制也简单。不过由于这样做导致数据和过程是分离的,使程序修改,数据也得修改,造成系统牵一发而动全身,复用性很差。
面向对象的方法:该方法设计出的软件的复用性很好。而且是从问题出手,联系实际,设计软件的系统。
这方面的知识仅初步接触,在以后的学习中会逐步加深。
总结
程序员的第一步,给自己的软件一个标准。