欢迎来到天天文库
浏览记录
ID:38725323
大小:291.81 KB
页数:25页
时间:2019-06-18
《软件工程(李浪)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第1章概述目录1.1软件1.1.1软件的定义和特点1.1.2软件的发展1.2软件危机1.2.1软件危机的主要特征1.2.2软件危机的具体体现1.2.3软件危机产生的原因1.2.4软件危机的解决途径1.3软件工程1.3.1软件工程的定义1.3.2软件工程的背景和历史1.3.3软件工程的基本原理1.3.4软件工程工具1.1软件1.1.1软件的定义和特点1.软件的定义软件是计算机系统中与硬件相互依存的另一部分。它包括程序、数据及其相关文档的完整集合。一种公认的软件传统定义为:软件=程序+数据+文档其中,程序是按事先设计的功能和性能要求执行的指令序列;数据是使程序能够正确地处理信息的数据结构;文档是
2、与程序开发、维护和使用有关的图文资料。2.软件的特点(1)软件是一种逻辑实体,不是具体的物理实体形态特性(形态特性)(2)软件与硬件的生产方式不同(生产特性)(3)软件与硬件的维护不同(维护特性)(4)软件是复杂的(复杂特性)软件的复杂性一方面来自它所反映的实际问题复杂性;另一方面也来自程序结构的复杂性。软件技术的发展明显落后于复杂的软件需求,这个差距日益加大。如图1-2所示。(5)软件是复杂的智力产品(智能特性)(6)软件产品的质量控制存在实际困难(质量特性)(7)软件开发和运行对计算机系统环境有一定的依赖(环境特性)(8)软件的管理特性(9)软件的废弃特性(10)软件应用极其广泛(应用特
3、性)(11)软件成本相当昂贵1.1.2软件的发展软件工程是在克服20世纪60年代出现的“软件危机”过程中逐渐形成和发展的。在50年的时间里,软件工程在理论和实践方面都取得了长足的进步。它的发展已经经历了四个重要阶段。(1)第一代软件技术(2)第二代软件技术(3)第三代软件技术(4)第四代软件技术1.2软件危机1.2.1软件危机的主要特征(1)软件开发进度难以预测。软件开发过程中的拖延工期想象并不罕见,这种想象降低了软件开发组织的信誉。(2)软件开发成本难以控制。软件开发中投资一再追加,往往是实际成本比预算成本高出一个数量级。而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量
4、,从而不可避免地引起用户的不满。(3)产品功能难以满足用户需求。开发人员和用户之间很难沟通、矛盾很难统一,往往是软件开发人员不能真正了解用户的需求,而用户又不了解计算机求解问题的模式和能力,双方无法用共同熟悉的语言进行交流和描述。在双方不充分了解的情况下,就仓促上阵设计系统、匆忙着手编写程序,这种“闭门造车”的开发方式必然导致最终的产品不符合用户的实际需要。(4)软件产品质量无法保证。系统中的错误很难消除。软件是逻辑产品,质量问题很难以统一的标准度量,因而造成质量控制困难。软件产品并不是没有错误,而是盲目检测很难发现错误,而隐藏下来的错误往往是造成重大事故的隐患。(5)软件产品难以维护。软件
5、产品本质上是开发人员的代码化的逻辑思维活动,他人难以替代。除非是开发者本人,否则很难及时检测、排除系统故障。为使系统适应新的硬件环境,或根据用户的需要在原系统中增加一些新的功能,又有可能增加系统中的错误。(6)软件缺少适当的文档资料。文档资料是软件必不可少的组成部分。缺乏必要的文档资料或者文档资料不合格,将给软件开发和维护带来许多严重的困难和问题。1.2.2软件危机的具体体现软件危机主要表现在两个方面:(1)软件产品质量低劣,甚至在开发过程中就夭折。(2)软件生产率低,不能满足要求。1.2.3软件危机产生的原因用户需求不明确。主要体现在:在软件被开发出来之前,用户自己也不清楚软件开发的具体需
6、求;用户对软件开发需求的描述不精确,可能有遗漏、有二义性甚至有错误;在软件开发过程中,用户还提会出修改软件开发功能、界面、支撑环境等方面的要求;软件开发人员对用户需求的理解与用户的本来愿望有差异。缺乏正确的理论指导。由于软件开发不同于大多数其他工业产品,其开发过程是复杂的逻辑思维过程,其产品很大程度上依赖于开发人员高度的智力投入。过分地依靠程序设计人员在软件开发过程中的技巧和创造性,加剧软件开发产品的个性化,也是发生软件开发危机的一个重要原因。软件开发规模越来越大。随着软件开发应用范围的扩大,软件开发规模也越来越大。大型软件开发项目需要组织一定的人力共同完成,而多数管理人员缺乏开发大型软件系
7、统的经验,而多数软件开发人员又缺乏管理方面的经验。各类人员的信息交流不及时、不准确、有时还会产生误解。软件开发项目开发人员不能有效地、独立自主地处理大型软件开发的全部关系和各个分支,因此容易产生疏漏和错误。软件开发复杂度越来越高。软件开发不仅仅是在规模上快速地发展扩大,而且其复杂性也急剧地增加。软件开发产品的特殊性和人类智力的局限性,导致人们无力处理“复杂问题”。所谓“复杂问题”的概念是相对的,一旦人们采用先
此文档下载收益归作者所有