1 软件发展危机
1.1 软件的定义及特点
软件是按照顺序组织的计算机数据和指令的集合。一般软件被分为系统软件、应用软件和编程语言。其中系统软件为计算机使用提供最基本的功能,最基础的软件就是操作系统 ;应用软件是在系统软件的基础上衍生出来的为用户提供不同功能的软件系统,比如说财务系统 ;教务管理系统等等 ;编程语言就是设计软件最基本的开发语言,有 Java,C,C++,php等多种语言。
计算机软件与硬件同样是支持计算机运行的重要组成部分,但是软件与硬件有着非常大的区别。软件不同于硬件 ;硬件是具体的物理实体,而软件只是逻辑上的存在,具有很强的抽象性 ;软件的生产没有明显的制作、加工过程,一旦软件研发成功,可以广泛的应用,但硬件有明显的制作过程,应用范围具有单一性 ;软件在具体使用过程中,不会出现因为使用时间长,机器老化等问题出现状况 ;软件的研发极大程度上依赖于计算机系统,如果计算机系统暂时无法支持,那么就会影响软件的开发和正常运行 ;软件开发复杂性高,开发周期长,成本较大 ;最后软件开发还涉及诸多的社会因素。
1.2 软件危机的出现
上世纪中期,计算机走向了广泛的民用行业。传统软件开发复杂性高,开发周期长,成本较大,可维护性较差这些问题都导致了传统的软件开发无法满足市场需求,因此导致了“软件危机”。 软件工程建设是一项复杂的工作,包括了有设计模式的选定、设计标准的设置、程序设计语言的选择和软件开发工具的选用等等。
尤其是在软件行业发展还不够完善的时期,更需要结构化的程序设计方法,将复杂的工作从结构上予以简化,从而得到简洁、清晰的程序。软件工程就是研究利用工程化方法开发和维护有效、实用并且高质量软件的一项工程。“软件工程”这一概念在 1968 年的 NATIO 会议上第一次被提出,这时就初步明确了将传统软件开发的个体化行为转化为结构化的工程协作。
在软件危机的促使下,形成了一门新型学科——软件工程,在计算机专业发展的如火如荼的今天,软件工程虽属新型学科,但是它在软件工程管理和技术支持上都有了一定的发展。
2 软件工程的技术和管理
自上世纪中后期以来软件危机的爆发后,结构化的软件工程学科逐渐发展。
虽然软件开发复杂性高,开发周期长,成本较大,可维护性较差这些问题目前还没有办法解决,但是从软件工程的技术层面和软件工程管理层面来说都有了一定程度上的提升。
2.1 软件工程的技术层面
软件工程建设是一项复杂的工作,包括了有设计模式的选定、设计标准的设置、程序设计语言的选择和软件开发工具的选用等等。从技术层面来讲主要包含了软件设计方法和软件开发范型,选定怎样的方法从正确途径完成软件设计和怎样的范式去开发适应需求的软件。
在技术上注重软件的可重复性使用,在借鉴成熟工业产品的开发范式上进行软件研发,这不仅借助了他人优秀的成果,更避免的不必要的人力资源浪费,可以更好地投入到新产品的开发,提高软件开发的效率,提升软件质量。目前关于软件复用技术主要包括了软件构件技术、领域工程和软件体系结构等。
软件构件技术要能明确辨别构成成分,其中可复用构件包括了需求、文档、测试计划、测试用例和数据等其他对开发活动有用的信息。作为软件复用技术的核心部分需要在现有系统中提取有用构件 ;了解构件的性质、特征和相互之间的关系以及怎样对现有构件进行分类查询等。
软件可重复性性使用不仅借助了他人优秀的成果,更避免的不必要的人力资源浪费,还可以更好地投入到新产品的开发,所以软件复用技术在一定领域范围内更容易取得作用。这就导致了软件工程的领域工程的出现。
2.2 软件工程的管理层面
软件工程是一项复杂的工程,因此软件工程管理也是非常复杂的,它包括人的管理、组织机构管理和用户管理三大层面。计算机软件行业是知识密集、人才密集型行业,因此在整个研发、生产的过程中,人是贯穿始终的重要部分,因此人员的管理非常重要 ;人的管理是最基础的,还要加强组织机构管理,组织机构强调的是组织的系统协调性,不是松散的人员组织,创建好的组织机构需要发挥各项人员的优势,并将优势整合,促进整体的发展 ;最后最重要一点是,软件虽然不同于一般的产品,但它作为一种特殊的产品,它的对象依然是用户 ;可以说没有用户需求就没有软件行业的蓬勃发展,因此用户管理需要时刻关注用户的需求。
因此完善软件工程管理需要建立健全计算机软件工程管理体系,要从制度上予以规范,让具体项目执行有度可依,完善激励措施,奖罚分明,奖罚有度,使得管理工作得以顺利高效进行 ;注重团队化建设,加强团队协作性,人才其才,人尽其用,为团队的发展谋福利 ;还要专门制定具体项目的进度和风险管理预警机制,结合具体实际,进行监督管理 ;最后还要充分利用现代信息技术的先进成果,采用精研——软件工程管理平台,更好控制项目成本、进度等可调控因素,使得软件供应和需求双方能够共赢。
3 总结
现代信息技术的飞速发展,使得计算机软件所面临的环境开始从静态封闭逐步走向动态、多样化。现在软件工程的发展必须努力改变自己去不断适应这样的形态,取得自身在技术上的突破,在管理上的创新,这样才能不断提高软件研发效率,大力提升软件质量。
【参考文献】
[1] 王博然 ;苏钢 . 软件工程的历史与发展趋势 [J]. 北京工业职业技术学院学报 ,2008(03)
[2] 仲萃豪 ;詹少梅 . 从认知观看“软件危机”是怎样解决的 [ J]. 程序员 , 2006, (08)
[3] 杨芙清 . 软件工程技术发展思索 [J]. 软件学报 ,2005, (01)