王宇恒 班雪 韩军 黄明炯 史建军
摘 要:B.W.Boehm认为软件工程就是运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必须的相关文件资料。这里对“设计”一词应有广义的理解,它包括软件的需求分析和对软件进行修改时所进行的再设计活动。
关键词:浅议 软件工程 基本概念
中图分类号:TP311.5 文献标识码:A 文章编号:1672-8882(2014)10-127-01
一、软件工程的认识
IEEE说:“软件工程是开发、运行、维护和修复软件的系统方法”,其中,“软件”是计算机程序、方法、规则、相关的文档资料以及在计算机上运行时所必需的数据。Fairley给出的软件工程的定义为:软件工程学为在成本限额以内按时完成开发和修改软件产品所需的系统生产和维护的技术与管理的科学。由此可见,软件工程包括3个基本要素:方法、工具和过程。首先,软件工程方法为软件开发提供了“如何做”的技术。它包括多方面的任务,如项目计划与估算、软件系统需求分析、数据结构、系统总体结构的设计、算法的设计、编码、测试以及维护等。软件工程常采用某种特殊的语言或图形的表达方法以及一套质量保证的标准。其次,软件工具为软件工程方法提供了自动的或半自动的软件支撑环境。有人把诸多工具集成起來,使得一种工具产生的信息可以为其他的工具所使用,这样建立起一种称之为计算机辅助软件工程(CASE)的软件开发支撑系统。CASE将各种软件工具、开发机器和存放开发过程信息的工程数据库组合起来形成一个软件工程环境。另外,软件工程的过程则是将软件工程的方法和工具综合起来以达到合理、及时地进行计算机软件开发的目的。过程定义了方法使用的顺序,要求交付的文档资料,为保证质量和协调变更所需要的管理及软件开发各个阶段完成的里程碑。组织实施软件工程项目,从技术上和管理上采取了多项措施以后,最终希望得到项目的成功。所谓成功指的是达到以下几个主要目标:较低的开发成本,达到要求的软件功能,取得较好的软件性能,开发的软件易于移植,需要较低的维护费用,能按时完成开发工作,及时交付使用等。
二、软件工程项目的实施
在软件项目开发之前,针对不同的工作目标制定不同类型的工作计划,对项目实施计划进行可行性研究。主要包括下述任务:第一,经济可行性。分析能否做到以最小投入成本得到最佳经济收益,做出立即投入、推迟开发或不值得开发的选择。如果可行,做出开发进度安排。第二,技术可行性。分析使用现有的技术能否实现系统,能否解决系统技术难点,系统对技术人员有什么要求,硬件能否配套等其它技术冒险的各种因素。第三,社会(法律)可行性。分析开发系统是否符合当前社会生产经营体制及法律法规的要求。需求分析和定义对开发软件提出的需求进行分析并给出详细的定义。软件开发人员和用户共同讨论决定哪些需求是可以满足的,并对其加以确切的描述,然后编写出软件需求说明书或系统功能说明书及初步的系统用户手册,提交管理机构评审。设计是软件工程的核心,就是把需求变换成为软件的具体方案,软件设计一般分为总体设计和详细设计两个阶段,总体设计是根据需求所得到的数据流、数据结构,使用结构设计技术,导出软件模块结构;详细设计是使用表格、图形或自然语言等详细设计工具,按照模块设计准则进行软件各个模块的具体过程的描述,如模块的分解与合并、低耦合性、高内聚性的特点,以及模块的作用、控制范围、复杂性和接口,按步骤进行设计 程序编写(软件编码)把用户的要求变为计算机能够接受的形式,为每个模块编写程序,即写成以某一种特定程序设计语言表示的源程序清单。自然,写出的程序应当是结构良好、清晰易读又与设计一致。测试是保证软件质量的重要手段,其主要方式是在设计测试用例的基础上检验软件的各个组成部分,一般采用黑盒法和白盒法。所谓黑盒法是根据程序的物理特性,测试每一个功能是否达到预期的要求,白盒法则是根据程序的逻辑结构,进行目标测试。无论黑盒法还是白盒法都要设计测试用例,按照单元测试、组装测试、确认测试、系统测试、人工测试的步骤,对模块功能、接口、数据结构组成进行测试。最后按规定的各项需求,逐渐进行有效性测试,决定已开发的软件是否合格,能否交付用户使用。已交付的软件投入正式使用便进入运行阶段。这一阶段可能持续若干甚至几十年。软件在运行过程中需要不断诊断、进行修改,包括改正性维护、适应性维护、完善性维护和预防性维护。维护的重要性在逐年提高。这一阶段是软件工程的最后一个阶段,也是最重要阶段,应给予足够的重视。数据库系统是应用较为广泛的多用户共享资源,具有通用、独立、冗余少、安全、完整的特性,因此,在进行数据库系统设计时应采用软件工程的方法。主要是对数据管理、库结构设计与建立、系统设计、语言的选择与设计、实用程序的编写、功能模块的设计等方面应用软件工程的理论和方法。
结语:随着软件规模的迅速增长,软件系统越来越庞大,软件的可开发性与可维护性已成为IT界和管理界关注的课题。传统的开发模式已不能满足时刻变化的用户需求,所以软件开发人员不得不寻找一种全新的、高效率的软件开发方法。RUP(Rational Unified Process,统一软件过程)是一种新的软件开发方法,该方法正是结合用户需求与软件开发而提出的一种循环开发过程。它是由Rational公司定义,在统一建模语言基础上,以体系结构为中心,通过用例驱动与风险驱动相组合的迭代式开发过程。
参考文献:
[1]郑人杰.软件工程[M].北京:清华大学出版社,2009.
[2]张海藩.软件工程导论[M].北京:清华大学出版社,2013.
作者简介:王宇恒(1992-),汉,本科,研究方向:软件相关专业;班雪(1992-),布依族,本科,研究方向:软件相关专业;韩军(1989-),撒拉族,本科,研究方向:软件相关专业;黄明炯(1993-),苗族,本科,研究方向:软件相关专业;史建军(1991-),男,汉族,本科,研究方向:软件相关专业。