APP下载

软件工程课程系统的研究初探

2018-01-04王晓霞

电脑知识与技术 2018年30期
关键词:软件设计软件测试

王晓霞

摘要:1968年,在北大西洋公约组织举行的一次学术会议上,该组织的科学委员们在开会讨论软件的可靠性与软件危机的问题时,首次提出了“软件工程”的概念,并将其定义为“为了经济的获得可靠的和能在实际机器上高效运行的软件而建立和使用的健全的工程规则”。软件工程是指导软件开发和维护的工程类学科。以计算机理论及其他相关科学理论做指导,进行软件的开发和维护,并把相关的管理措施和技术方法相结合,以少的代价获得高质量的软件。本文主要介绍软件工程学科的概念、原理、方法、软件工具及支持环境,也将涉及软件的计划、分析、设计、编程、测试和维护整个生存周期。

关键词:软件工程概论;可行性研究及需求分析;软件设计;编码及实现;软件测试;软件维护

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2018)30-0273-03

Abstract: In 1968, in the north Atlantic treaty organization held an academic meeting, members of the organization's science in a meeting to discuss the software reliability and software crisis, first proposed the concept of "software engineering", and defines it as "in order to obtain reliable economic and software that can run efficiently on real machines and set up and use of sound engineering rules".Software engineering is an engineering discipline that guides software development and maintenance. With the guidance of computer theory and other related scientific theories, software development and maintenance are carried out, and related management measures and technical methods are combined to obtain high-quality software at a low cost.This paper mainly introduces the basic concept, principle and method of software engineering, software tools and supporting environment, will also be involved in the software planning, analysis, design, programming, testing and maintenance of the entire life cycle.

Key words: An introduction to the software engineering;Feasibility study and demand analysis;The software design;Coding and implementation;Software testing;Software maintenance

1 軟件工程概论

1.1 软件

1) 概念:软件是计算机系统的“思维中枢”,在计算机系统中起着举足轻重的作用。它与计算机硬件相互作用,互相配合,从而实现了特定的系统功能。用软件工程的观点看,软件是完成某类问题求解的程序和数据以及为维护程序必须提供的一系列文档组成的集合。用简洁公式:软件=程序+数据+系列文档

2) 特点:软件不同于硬件,它只有逻辑形式不具备物理形式,也就是说软件是“开发”出来的,不是“制造”出来的。另一个是软件被用户使用时,只存在维护的问题,不存在用坏的问题,也就是说它可能会被“废弃”,而不会被“用坏”。软件不会受到引起硬件磨损的环境因素的影响,但是软件存在着缺陷维护和技术更新的问题。软件对运行环境的这种依赖是一般产品所没有的。

1.2 软件危机

软件危机是计算机系统发展的产物。换句直白的话说是“软件供不应求”。是一系列严重问题在软件的开发还有维护的过程中的集中体现。

软件危机出现的本质原因,我理解为人们对软件产品认识的不足以及软件开发的内在规律的理解偏差。

1.3 软件工程

软件工程具有三方面的技术要素,即软件工程方法、软件工具和软件工程过程。

⑴ 软件工程方法是在软件开发与维护的过程中为了保证产品的高质量、低成本和高效率而采用的技术方法。

⑵ 软件工具是为了软件工程方法的应用而提供的软件支撑环境。

⑶ 软件工程过程是指按照一定的软件工程方法在软件开发过程中所进行的一系列软件工程活动。

1.4 软件生命周期

如同任何事物一样,软件也有孕育、诞生、成长、成熟、衰亡的生存过程,也就是所谓的软件生命周期。

软件产品的生命周期一般可以划分为6个阶段:⑴可行性研究 ⑵需求分析 ⑶软件设计 ⑷编码 ⑸软件测试 ⑹软件维护。

1.5 软件开发方法

经过30多年的软件工程实践,人们已经掌握了多种软件开发方法。其实就是利用已经定义好的技术还有一些符号来组织软件生产过程的方法。软件开发方法其实就是对软件开发的步骤,文档的格式还有评价标准有了一个规范的要求,让软件的生产进入一个有章可循、规范化、标准化的阶段迈进。

2 可行性研究及需求分析

2.1 可行性研究

可行性研究是项目开发之前的重要阶段。可行性研究的目的不在于提出解决问题的方案,而在于研究解决问题的必要性和可能性。可行性研究主要从技术、经济和社会三个方面对软件项目的可行性进行分析。

可行性分析实际上是简化了高层次上的系统分析和设计过程。它的分析基本包含两个步骤:一个是在高层次上来分析现有的系统,还有就是在高层次上来设计新系统若干个可能的方案。

2.2 需求分析

需求分析是软件生命周期中重要的一步。只有通过需求分析才能把软件功能和性能的总体概念秒速为具体的软件需求规格说明,从而奠定软件开发的基础。需求大体能分行为类型和非行为类型的。但有时候也不一定能完全分开。关键是能够理解和确定所给出的需求。

需求分析的过程大体可分为:商业建模、问题的获取、问题的分析、问题的规格说明以及问题的验证等五个阶段。

需求分析是软件工程的一项重要任务,是系统层软件配置与软件设计之间的桥梁。是任何软件开发工作成功的前提和基础。它是确定系统必须完成哪些工作。需求分析工作阶段存在某些困难,分析人员要掌握一定的分析技术,同时也要采取一定的方法,尽可能准确全面的掌握用户的真正需求。比如访谈、问卷调查、实地操作、建立模型和研究资料等。

这是一项要求充分沟通的活动,缺少沟通,信息获取就会困难,采用不适当的技术或工具,也会导致不准确不充分,还有可能会使方案选择错误。这就需要采用有效的沟通技术。采用适当的分析原理,检查信息域更全面完整的了解,利用模型进行信息的交流,将问题分割降低问题的复杂性等。

3 软件设计

软件设计是一个把软件需求变成软件表示的过程,在软件开发中处于核心地位。一般软件设计会确定能实现的功能以及性能要求所集合在一起的最合理的软件系统结构,以及相关的算法和数据结构。一般分为概要设计和详细设计两个阶段。

软件设计的原则有模块化、抽象化、逐步求精、信息隐藏。这些准则则是以后软件结构设计、求精和复查的依据。

结构化软件设计方法和面向对象软件设计方法是两种主流的软件设计方法。面向数据流的方法和面向数据结构的方法是两种常用的结构化软件设计方法。

常用的结构化软件设计工具具有流程图、N-S图和PAD图等。

4 编码及实现

编码就是把软件设计的结果翻译成用某种编程语言书写的程序。编写代码不是一项简单的工作,而是一个复杂的迭代过程,包括对设计成果的理解、编写代码、代码检查、代码调试、软件集成及代码优化等。

编程语言是人与计算机进行交互的基本工具,它定义了一组计算机的语法规则,通过这些语法规则可以把人的意图、思想等转化为计算机可以理解的指令,进而让计算机帮助人类完成某些任务。编程语言的发展经历了机器语言、汇编语言、高级语言和超高级语音4个阶段。

选择编程语言时要综合考虑各方面的因素,并做出合理的平衡。通常需要考虑的因素有待开发系统的应用领域、用户的要求、软件开发人员的喜好和能力、系统的可移植性要求、算法和数据结构的复杂化等。

编程风格是指源程序的书写习惯。规范的编程风格会对后期的软件维护带来很大便利。规范编程风格可以从源程序文档化、数据说明、语句构造、输入输出和效率几个方面做起来。

5 軟件测试

软件测试试图以最少的代价来发现软件在分析、设计、编码中存在的各种不同类型的错误,从而提高软件的质量、降低软件的成本。

测试人员必须贯彻测试的原则:首先测试应该尽早地不断进行,而且测试还要尽早地制定计划,严格的执行计划,使测试工作贯穿于整个软件开发的过程中。再次在设计测试用例时,应包括输入数据和预期的输出结果两个部分,并且,输入数据不仅应该包括合法的情况,还应该包括非法的输入情况,再者规模要从小到大,最后要保证测试的完整性和有效性。

软件测试工具:是一种测试软件,借助它就可以有效地提高测试工作的效率。一般的分为静态的和动态的测试工具。

测试软件的方法:软件测试有多种方法。从用例设计的角度可以把软件测试分为黑盒测试和白盒测试。

测试无论怎样进行也不能保证测试后的软件不再有错误。这就需要软件的证明,通过这种活动来保证软件正确性,由于软件本身的复杂性,程序的正确性证明还没有达到实用化的程度。

6 软件维护

维护软件一般是软件交付使用以后,为了改正之前的错误或者为了满足用户的新的需求等等,来修改软件达到延长软件寿命的目的。她其实是软件生存的最后一个周期,也是非常重要的阶段。另外软件维护的费用占总成本的比例还是比较大的,有人把维护也比作“冰山”,来说明对软件开发所造成的障碍。

软件维护和硬件不同,它不是因为软件磨损、老化造成的,它是由于软件的设计不完整、不正确或者是使用环境的变化造成的。所以它的一般的活动类型大概是:改正性的维护、适应性的维护、完善性的维护还有预防性的维护或再工程,还有一些其他类型的维护。比如支援性的维护等。

软件维护的成本也就是软件维护的工作量还是蛮大的,受到很多因素的影响,比如系统的大小、程序的设计语言、系统的年龄、数据库的应用、新技术的应用等等,除此之外,还有一些无形的成本。比如一些修复和修改不能及时满足客户的需求,维护过程引出的错误等。

软件维护的这种可行是对软件产品进行维护的难易程度的标准,它与软件的可理解性、可修改性、可测试性密切相关。软件维护具有副作用,所以在进行软件维护时要慎之又慎。

软件质量是软件产品的生命线,也是软件企业的生命线。另外,我们不嫩忽视软件文档在软件工程中的重要地位。合格的软件工程的文档应该具备及时性、完整性、实用性、规范性、结构化和简洁性等特点。

7 总结

软件已经是计算机系统和产品的中的一个关键的元素了,在过去几十年里,软件已经由一个专门问题的程序或者信息分析的工具发展成了一个产业。但由于很多问题的出现限制了软件的发展,这就出现了软件工程。它就是要提供一个构造高质量软件的框架,来解决这些问题。

软件工程是计算机软件开发的工程性学科。它有很多的工程模型,每一种都有它的优点和缺点。所以我们在应用时也要引起重视。

并行工程是软件工程近来发展的方向。它克服了直线式开发模型的确点,让软件具有了无缝性,可逆性的特点,比较适应实际的需要。它的意义和地位已经越来越得到信息业界和其他相关专业的高度重视。

参考文献:

[1] 吕云翔,王昕鹏.软件工程[M]北京:人民邮电出版社,2009.9.

[2] 赵一丁.软件工程基础[M]北京:北京邮电大学出版社,2006.

[3] 周枫.软件工程[M]重庆:重庆大学出版社,2001.7.

[4] 张海藩.软件工程导论[M]北京:清华大学出版社,2008.2.

【通联编辑:梁书】

猜你喜欢

软件设计软件测试
基于OBE的软件测试课程教学改革探索
EXCEL和VBA实现软件测试记录管理
关于软件测试技术应用与发展趋势研究
基于单片机SPCE061A的字幕机点阵式字母电子显示屏的设计制作
智能电能表软件测试技术概述
《软件测试》课程教学策略研究