1 软件怎么被创造出来的
软件的出现,一般都是某个人或者某些人有想法有意图,想做个什么东西方便自己方便他人。张小龙的微信,乔布斯的IOS。这些伟大的软件需要很多人来协同完成。
比如微信,2010年立项,2011第一版上线,当时只能发送文本消息和照片,之后一个版本一个版本更新。
像这样有计划有步骤有人参与的产品------->工程。
2 软件危机是什么?
工程的本质就是要做出有用的产品。造房子的建筑工程,造火箭的航天工程。同样,软件领域,也就是软件工程。不按照建筑工程去造房子是会出事故甚至死人的。
咋们看看建筑工程。设想一下建一座房子:首先要先立项、设定预算,然后画设计图,再是施工,施工完成后,有专业人士进行质量检查,质检合格后入住。
OS/360(上世纪60年代的大型软件项目)------->开发人员(1000)----->最终无法运行------><人月神话>详细的说明了此次事故。
当计算机才发明出来的时候,计算机的能力非常有限,不需要软件工程也可以开发简单的软件。但是随着项目越来越复杂,规模越来越大,软件项目开发维护过程中问题就出来了------>
软件产品质量低劣、软件维护工作量大、成本不断上升、进度不可控、程序人员无限度地增加。所以在 60 年代,“软件危机”的概念被提出来。
3 软件工程的历史
(1)软件工程几个阶段
整个软件开发过程也被分成了几个阶段:需求定义与分析、设计、实现、测试、交付和维护,这也就是我们常说的软件项目生命周期。
对应不同的阶段,就是不同的职位。项目经理、产品经理、架构师、程序员、测试工程师、运维工程师。而对这整个过程的管理,我们通常称之为“项目管理”。这个时候出现了瀑布模型
(2)瀑布模型
瀑布模型的诞生,在当时让软件开发从无序到有序,让大家更好的分工协作,同时每个阶段又衍生出各自的方法学和工具,例如需求分析、软件测试等等。
然而瀑布的特性决定了它只能从上往下流,而且从上到下走完整个周期很长,所以一旦出现了需求的变更,将会非常痛苦,很多事情需要重头再来。
(3)瀑布模型缺点
瀑布模型的特点是从上到下,而且周期相对比较长,如果中途某个环节出了问题需要从头再来。所以当时为了缩短项目周期,相继推出了基于瀑布模型,又衍生出 V 模型、原型设计、增量模型、螺旋模型等模型。
(4)目前的敏捷开发
云计算、微服务这些新技术的产生,也对软件工程产生了影响。云服务让分工更细,很多企业可以将运维、服务器维护、DBA、甚至某些独立服务交给云服务商;微服务让大团队变成小团队,每个小团队可以更专注于细分领域,减少相互之间的依赖。
4 总结
那么现在看软件工程是什么,就是用一定的过程,采用科学的方法,借助工具来开发软件。有个表达式,软件工程 = 过程 + 方法 + 工具。软件过程不是搞科研,不是搞艺术,而是解决多人合作将一个想法落地的学科,其中包括严谨的过程步骤、规范,用于提高效率或防范风险的工具。
软件工程的主体是工程,这就要求我们具备基本的工程思维:模块化思维、抽象思维;具备一些关键的意识:质量意识、风险意识、交付意识。
来源:https://www.cnblogs.com/lanjianhappy/p/11933386.html