浅论软件工程
摘要:软件也是一种产品,只不过它不同于一般的产品,随着社会的发展,软件的规模越来越大,也越来越复杂,同时使用的范围也更广了,因此我们要加强对其开发的控制,包括技术和管理两方面。本文主要以软件工程这门学科和技术出现的背景为出发点,结合软件工程的相关理论、方法以及在实际运用中的一些成果,再参考Internet技术和平台,研究了软件工程面临的一些新挑战。
关键词:软件危机 构件 体系结构 软件项目管理 中间件
1 软件工程的出现
20世纪中期,计算机的应用领域才从军用转为民用,当时编写程序的工作不但没有被重视,反而受到歧视。那时候,计算机硬件价格是很高的,这就要求编程人员在处理器能力和存储器空间都很有限的情况下,编写的程序不仅要体积小,而且要保证更快的执行速度。程序中要用到许许多多种类的技巧。此时进行软件的开发,起决定性因素的是开发人员的智慧和能力。
进入20世纪60年代,计算机在更广的领域得到了应用,这就要求我们不断地提高软件的复杂程度,要开发能够满足更多需求的系统,传统的开发方法不能满足用户在质量、效率等方面对软件的需求。这就是所谓的“软件危机”。
面对这一危机,1968年NATO会议上首次提出“软件工程”的概念,提出把软件开发从“艺术”和“个体行为”向“工程”和“群体协同工作”转化。具体来讲就是在计算机科学理论和技术的指导下,运用工程管理的相关理论,按照预算和进度,开发符合用户要求的软件。这样,一个新的学科(软件工程)就产生了。
2 软件工程的框架
软件工程的框架可用目标、过程和原则三个词语来总结。
2.1 软件工程目标:生产具有正确性、可用性以及开销合宜的产品。其中,正确性是指最终开发出的软件要符合预期的功能。可用性是指软件基本结构、实现及文档为用户可用的程度。开销合宜是指软件开发、运行的整个开销都能达到用户要求的程度。要很好地实现这一目标,不管是在理论上还是实际的开发过程中,都面临着不少需要解决的问题。
2.2 软件工程过程:主要是指生产一个最终能满足需求且达到工程目标的软件产品所需要的步骤。软件工程的内容包含了开发过程、运作过程、维护过程。这其中包括需求、设计、实现、确认以及维护等活动。在这几方面中,需求活动主要是进行问题分析和需求分析。从问题分析中我们可以得到需求定义,也可以把它叫做软件需求规约。需求分析生成功能规约。设计活动通常情况下是进行概要设计和详细设计。实现活动要完成的是把设计结果转换成可执行的程序代码。而确认活动在整个软件开发的过程中都有所涉及,进行了确认之后,要保证软件最后能够符合用户要求。维护活动主要是指使用软件的过程中,可以对其进行扩充和完善等。除了以上这些具体解释的主要过程之外,还包括管理过程、支持过程等。
2.3 软件工程的原则:在开发软件时,工程设计、工程支持以及工程管理方面一定要遵守的一些相关原则。
3 软件工程管理
管理学理论在软件工程中的运用同样也在软件工程要研究的范围内。在软件项目管理方法上,我们不再使用原来的个人作坊式开发方式,充分运用管理科学的相关理论,再通过对软件开发的实际情况进行分析,更好地运用工程化系统开发方法。在进行软件的开发前,我们要提前制定好软件项目的成本、进度、质量,然后我们在开发软件的过程中,要严格遵守这些相关的计划,这就要求我们通过软件管理方法来更好的管理和控制软件开发项目的成本、进度、质量等。对软件项目的有效管理,能够更好的把开发人员的个人开发能力转化成企业的开发能力,当企业表现出不断提高的软件开发能力时,说明它的软件生产水平就越高,同时表明它的开发风险相对不大。软件项目管理是关系着软件开发企业能否在激烈的竞争中处于优势地位的决定性因素之一。
从软件与其他产品的不同中,我们可以看出软件项目管理同样也有一些与其他项目管理要遵守的一些不一样的原则,例如:大规模的项目要拆分成几个小项目,以此达到降低项目的管理风险的目的,而且还要制定详细而明确的目标;根据各个项目的特征,制订相应的、切实可行的项目管理方法等。
4 软件工程中软件构件的作用
软件构件的概念共生于软件复用。软件复用的概念在1968年的北大西洋公约组织会议上提出,McIlroy还提出了软件构件、构件工厂等概念,以后相继制定了一整套软件复用的指导性标准,其中包含了利用标准构件实现软件复用的基本思路。在软件开发过程中使用标准软件零部件的构想,从一开始就受到众人的青睐,然而在以后的发展过程中,对这一构想的认识一直在发生着变化。
在二十世纪的七八十年代,软件构件主要指可复用的程序代码片段,通常我们叫他代码件。这段时间内在软件开发中我们主要要解决的问题就是怎样最大限度的利用已有的源程序代码、子程序库和类库,改善软件生产的效率。这一时期的代码件包括子程序、程序包、类、模板等形态。到二十世纪九十年代,相关的技术人员都认为软件构件应当包括分析件、设计件、代码件、测试件等多种类型。因为软件复用具有多样性,我们还可以把它分为产品复用和过程复用。这样就会相应地产生更多的新概念,如设计模式、框架以及软件体系结构等。实际上,我们在研究软件构件基本属性时,主要考虑的还是代码件的相关内容,如果没有明确的标注,研究的都是软件构件的代码件。
在软件技术中,构件技术占有重要的地位,更好的研究构建技术,对于软件技术的发展具有不可估量的意义。但是研究构建技术也不是很简单的,存在着各种