|
【IT168 信息化】
程序加上文本合起来成为软件,软件是人为开发的,是由人开发的。软件系统可能是人类创造的最错综复杂的事物,软件工程还很年轻,需要继续探索和尝试。
软件工程的定义有很多版本,IEEE给出的定义是:(1)将系统的、规范的、可量化的方法应用于软件开发、运行和维护,即,将工程应用于软件。(2)在(1)中所述方法的研究。所以,软件工程也不神秘,它研究是我们日常软件开发中的工作方式。正式因为人的心理难以捉摸,人的大脑处理复杂性时速度和容量的局限。
软件工程知识体系层次:包括:过程,瀑布,增量和迭代,统一过程,敏捷运动,过程评估和CMM,方法,功能分解,数据流,实体/关系,面向对象,UML,模式运动,工具等等。——言以蔽之,整个软件工具史可以归纳为抽象水平的不断提高。当今的软件集成系统(software-intensive system)有一系列共同特征;它们通常都相当复杂、分散、部署、并发协作,同时还在持续不断的演化。不仅如此,这类系统大多不是孤立的,系统之中嵌入系统,单个系统不过是其中一个元素而已。软件工程的未来将面临这样的严峻考验;任何推动世界向未来发展的进步之举,都依赖于目前尚未问世的软件。这样,打造复杂软件系统的能力将影响个人和机构,甚至人类文明。这是软件开发人员的荣耀:我们业已并将改变这个世界。文明运行在软件之上。讨论软件工程未来发展趋势,首先要思考一下计算模式和软件开发本身的变化和趋势。从计算模型而言,我们注意到:CPU运算能力按摩尔定律快速提升;并行运算技术以及多核多线程技术使服务器的处理能力飞速提升;互联网的快速普及使得云计算成为可能,通过互联网相连的服务器集群在服务器端提供了更强大的计算能力。从软件开发模式而言:由于计算能力向服务器端的快速集中,提供高并行计算能力和可用性的中间件技术被广泛采用,甚至已经成为构建大型软件系统的必选项;由于采用了中间件技术,从而减少了需要编写的代码行数;计算能力的增强,使软件越来越易用,从而使软件变得无处不在;为了使分布在互联网上系统能够互相协作,SOA成为一个热点;互联网的普及,将原来分散开发人员聚合在一起,只要有一个合适的基础和好的框架,他们就可以开发出产品级的工具软件(以Eclipse,JBoss,MySQL,Subversion为例),从而开源成为了一种趋势;在大上述趋势的作用下,软件工程的趋势如下:需求工程,渐成热点,用例的优势在于然语言抽象了用户和目标系统的交互,避免了混入分析、设计和 实现细节,也可以被不懂具体技术的业务及测试人员所真正理解。
基于领域的构架(DSSA)与模型驱动的开发 (MDD)老树新花。迭代/敏捷,渐成标准。敏捷的三个要素是迭代开发、坦诚合作和自适应性。坦诚合作其实才是敏捷的精髓,他更多地思考了如何去激发开发人员的工作热情,这是在软件工程几十年的发展过程中相对被忽略的领域。