对软件的理解

有一种说法,硬件与软件是相辅相成的关系。每当硬件有了质的发展时,软件性能就会有一个大的飞跃,而软件发展超前时,又会对硬件提出更高的要求,促使硬件的发展。

 

同样的,在软件领域,技术与软件开发也是这样的关系。当技术还没有发展到一定程度时,软件的开发就完全是个人英雄主义的或是手工作坊式的开发。一个好的编程人员,可以独立制作出软件。但技术的日益完善,所处理的问题日益复杂对软件的开发提出了更高的要求,单一的作战方式不能满足软件开发的复杂度。这也就是60年代的软件危机。必须改变手工作坊式的开发方法,采取工程化的开发方法和工业化的生产技术。这是软件工程应运而生。同时,软件工程的诞生,又对技术的进步起到了推进作用,许多新的管理概念,技术构建的想法,在这个新的领域蓬勃发展。

 

从简单的逻辑上讲,软件工程就是将现实世界中复杂无序的高层问题,通过人的作用,转化为计算机(机器)可以解决的简单有序的底层问题。

 

由于有了“现实复杂”到“机器简单”的过程,软件工程就不仅仅是单一的编程过程了。它包括系统分析->建模->概要设计->详细设计->编码->测试->维护。编码可以理解为编程,这个只占总时间的20%。编程只是一小部分。如果说把软件工程比作建筑业的话,是讲的是怎么进行有效组织顺利完成目标,那么编程只是工程设计到的一项技能,如同建筑中砌砖,讲究如何把砖砌的好

 

快速软件开发(rapid software development)和敏捷方法(agile method)还有极限编程(extreme programming)是什么关系?是不是敏捷方法是快速软件开发的一种方法?极限编程是敏捷方法的一种编程?还有哪些敏捷方法?
原文地址:https://www.cnblogs.com/Alisa-mh/p/4771864.html