二级共公基础知识教程第3章上

文章作者 100test 发表时间 2007:03:10 16:48:08
来源 100Test.Com百考试题网


第3章 软件工程基础
3.1软件工程基本概念
一、软件定义与软件特点
计算机软件是计算机系统中与硬件相互依存的另一部分,是包括程序、数据及相关文档的完整集合。基中,程序是软件开发人员根据用户需求开发的用程序设计语言描述的、适合计算机执行的指令(语句)序列。数据是使程序能正常操纵信息的数据结构。文档是与程序开发、
维护和使用有关的图文资料。可见软件由两部分组成:一是机器可执行的程序和数据;二是机器不可执行的,与软件开发、运行、维护、使用等有关的文档。
国标(GB)中对计算机软件的定义为:与计算机系统的操作有关的计算机程序、规程、规则,以及可能有的文件、文档及数据。
软件在开发、生产、维护和使用等方面与计算机硬件相比存在明显的差异。深入理解软件的定义需要了解软件的特点:
(1) 软件是一种逻辑实体,而不是物理实体具有抽象性。
(2) 软件的生产与硬件不同,它没有明显的制作过程。一旦研制开发成功,可以大量拷贝同一内容的副本。所以对软件的控制,必须着重在软件开发方面下功夫。
(3) 软件在运行、使用期间不存在磨损、老化问题。
(4) 软件的开发运行对计算机系统具有依赖性,受计算机系统的限制这导致了软件移植的问题。
(5) 软件复杂性高,成本昂贵。
(6) 软件开发涉及诸多的社会因素。
软件按功能可以分为:应用软件、系统软件、支撑软件(或工具软件)。应用软件是为解决特定领域的应用而开发的软件。系统软件是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件。支撑软件是介于系统软件和应用软件之间,协助用户开发软件的工具性软件,包括辅助和支持开发和维护应用软件的工具软件。
二、软件危机与软件工程
软件工程概念的出现源自软件危机。
所谓有软件危机四伏是泛指在计算机软件开发和维护过程中所遇到的严重问题。实际上,几科所有的软件都不同程度地存在这些问题。
随着计算机技术的发展和应用领域的扩大,计算机硬件性能/价格比和质量稳步提高,软件规模越来越大,复杂程度不断增加,软件成本逐年上升,质量没有可靠的保证,软件已成为计算机科学发展的“瓶颈”。
具体地说,在软件开发和维护过程中,软件危机主要表现在:
(1) 软件需求的增长得不到满足。用户对系统不满意的情况经常发生。
(2) 软件开发成本和进度无法控制。开发成本超出预算,开发周期大大超过规定日期的情况经常发生。
(3) 软件质量难以保证。
(4) 软件不可维护或护程度非常低。
(5) 软件的成本不断提高。
(6) 软件开发生产率的提高赶不上硬件的发展和应用需求的增长。
总之,可以将软件危机归结为成本、质量、生产率等问题。
软件工程就是试图用工程、科学和数学的大批量与方法研制、维护计算机软件的有关技术及管理方法。
关于软件工程的定义,国标(GB)中指出,软件工程是应用于计算机软件的定义、开发和维护的一整套方法、工具文档、实践标准的工序。
1993年IEEE(Institute of Electrical &.Electronic Engineers ,电气和电子工程师学会)给出了一个更加综合的定义:“将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中”。
软件工程包括3个要素:即方法、工具和过程。方法是完成软件工程项目的技术手段;工具支持软件的开发、管理、文档生成;过程支持软件开发的各个环节的控制、管理。
软件工程的核心思想是把软件产品看作是一个工程产品来处理。
开发软件不能只考虑开发期间的费用,而且应考虑软件生命周期内的全部费用。因此,软件生命周期的概念就变得特别重要。在考虑软件费用时,不仅仅要降低开发成本,更要降低整个软件生命周期的总成本。
三、软件工程过程与软件生命周期
1、软件工程过程(Software Engineering Process)
ISO9000定义:软件工程过程是把输入转化为输出的一组彼此相关的资源和活动。
定义支持了软件工程过程的两方面内涵。其一,软件工程过程是指为获得软件产品,在软件工具支持下由软件工程师完成的一系列软件工程活动。基于这个方面,软件工程过程通常包含4种基本活动:
(1) P(plan)——软件规格说明。规定软件的功能及其运行时的限制。
(2) D(do)——软件开发。产生满足规格说明的软件。
(3) C(check)——软件确认。确认软件能够满足客户提出的要求。
(4) A (action)——软件演进。为满足客户的变更要求,软件必须在使用的过程中演进。
通常把用户的要求转变成软件产品的过程也叫做软件开发过程。此过程包括对用户的要求进行分析,解释成软件需求,把需求变换成设计,把设计用代码来实现并进行代码测试,有些软件还需要进行代码安装和交付运行。
其二,从软件开发的观点看,它就是使用适当的资源(包括人员、硬软件工具、时间等),为开发软件进行的一组开发活动,在过程结束时将输入(用户要求)转化为输出(软件产品)。

相关文章


二级共公基础知识教程第3章中
全国计算机等级考试二级C语言上机题51-60
C _CLI中实现singleton模式
全国计算机等级考试二级C语言上机题41-50
二级共公基础知识教程第3章上
全国计算机等级考试二级C语言上机题31-40
C 程序中导出Word文档简易方法
全国计算机等级考试二级C语言上机题21-30
二级共公基础知识教程第2章下
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛