第1章软件工程概述

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第1章软件工程概述--站得高,看得全内容概览软件简介软件工程产生的背景软件项目生命周期软件项目的开发模型软件技术的发展趋势1.1软件简介软件(Software)是计算机系统中与硬件相互依存的另一部分,是包含程序、数据及其相关文档的完整集合。软件=程序+数据+相关文档1.1软件简介软件类型分类内容按功能划分系统软件操作系统;数据库管理系统;设备驱动程序;通信处理程序等支撑软件编译软件;文本编辑器;软件包或类库;软件工程CASE工具;支持需求分析、设计、实现、测试和管理的软件应用软件商业数据处理软件;工程与科学计算机软件;计算机辅助设计/制造软件;系统仿真软件;智能产品嵌入软件;医疗、制药软件;事务管理、办公自动化软件;计算机辅助教学软件按规模划分微型软件;小型软件;中型软件;大型软件和超级软件按工作方式划分实时处理软件;分时软件;交互式软件;批处理软件按软件服务对象的范围划分项目软件;产品软件按软件失效的影响进行划分高可靠性软件;一般可靠性软件按使用的频度进行划分一次使用软件;频繁使用软件1.1软件简介软件的本质特征—构造性和演化性在高级语言出现以前,汇编语言(机器语言)是编程的工具,表达软件模型的基本概念(或语言构造)是指令,表达模型处理逻辑的主要概念(机制)是顺序和转移。高级语言的出现,例如FORTRAN语言、PASCAL语言、C语言等,使用了变量、标识符、表达式等概念作为语言的基本构造,并使用3种基本控制结构来表达软件模型的计算逻辑。结构化程序设计技术;面向对象程序设计语言。1.2软件工程产生的背景1.2.1软件危机的故事软件的发展主要经历了4个阶段:20世纪的50~60年代,程序代码二进制的机器指令语言程序逐渐被汇编语言程序代替,程序是专为满足某个具体应用而编写的。20世纪的60~70年代,计算机软件程序出现系统化发展,这个时期计算机语言发展很快,出现了应用性高级语言,如Basic、Pascal、FORTAN等语言。20世纪70~90年代,在这一时期明显的就是计算机硬件成本的大幅下降,同时计算机性能的快速提高,此时软件的管理在软件生产中的重要作用和质量保证的重大意义突显出来。20世纪90年代以来,分布式系统和智能系统等复杂程度高、应用规模大的计算机系统日益增多。1.2.1软件危机的故事在计算机软件开发中所遇到的一系列问题,即“软件危机”,具体表现如下:对软件开发成本的估计不准确,造成开发成本超出预算;开发进度不能保证,交付时间一再拖延;“已完成”的软件不能满足用户的需求;软件产品的质量没有保证,运算结果出错、操作死机等现象屡屡发生;软件通常没有适当的文档资料,或文档与最终交付的软件产品不符,软件的可维护程度非常低;软件开发生产率的提高赶不上硬件的发展和人们需求的增长。1.2.1软件危机的故事从管理者、技术实践者的角度总结一些常见的问题(实质是常见错误认识)及相应解答。1.管理方面参考资料、机器与工具、增加劳力、标准问题2.技术实践方面急于编码、需求可随时变化、只提交运行程序1.2.2软件工程的出现什么是软件工程呢?软件工程是一门旨在生产无故障的、及时交付的、在预算之内的,和满足用户需求的软件学科。实质上,软件工程就是采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理方法和最先进的软件开发技术结合起来,应用到软件开发、维护过程中。从研究、实践两种不同角度来介绍软件工程的内涵。1.2.2软件工程的出现1.2.2软件工程的出现1.3软件项目生命周期在软件工程项目中,实现软件开发工程化、系统化的基本方法是软件生命周期法,它是软件工程学的基础。软件工程采用的生命周期方法就是从时间角度对软件开发与维护这个复杂问题进行分解,主要划分为软件项目准备阶段、软件项目开发阶段和软件项目运行维护阶段。1.3.1软件项目准备阶段软件项目准备阶段的主要任务是调查和分析:调查用户需求,分析所立的软件系统项目的主要目标,分析开发该系统的可行性。做好此阶段工作的关键是系统分析员和用户(包括投资人、系统应用者等角色)的充分交流、相互理解与配合。1.问题定义2.可行性研究1.3.2软件项目开发阶段软件项目开发阶段要完成“设计”和“实现”两大任务,其中“设计”任务包括需求分析、软件设计,“实现”任务包括编码和测试。1.需求分析2.软件设计(1)概要设计(2)详细设计3.编码4.测试1.3.3软件项目运行维护阶段软件的维护有四种类型,分别完成以下各自任务:改正性维护:运行中发现了软件中的缺陷或错误而进行的修正工作;适应性维护:为了适应变化了的软件工作环境,而做出的适当变更;完善性维护:为了增强软件的新功能而做出的变更;预防性维护:为将来的修改与调整奠定更好的基础而进行的维护工作。1.4软件项目开发模型软件项目开发模型,就是为整个软件生存期建立的模型。软件工程主要分为两大类:传统软件工程开发模型和面向对象软件工程开发模型。它们各有特色,分别适用于不同特征的软件项目,但一般都包含“定义”、“开发”和“维护”3类活动。定义活动就是要弄清楚软件“做什么”;开发活动集中解决让软件“怎样做”;维护活动的重点就是对软件的“完善”。1.4.1传统软件工程开发模型传统软件工程的开发模型有许多,主要有瀑布模型、原型模型和螺旋模型。1.瀑布模型(WaterfallModel)2.原型模型(PrototypeModel)1.4.1传统软件工程开发模型3.螺旋模型(SpiralModel)1.4.1传统软件工程开发模型累计成本提交评审制定计划:决定目标、方案和限制风险分析:评价方案、识别风险、消除风险实施工程:开发、验证下一产品客户评价原型1概念定义需求计划风险分析原型2软件需求需求有效性开发计划风险分析原型3软件产品设计设计有效性的验证集成和测试计划风险分析可运行原型详细设计编码单元测试集成测试接受测试实现传统结构的计算机应用系统,往往可以被看作是一个函数或过程的集合及单独的一批数据,不论存储在内存中还是硬盘上。1.4.2面向对象软件工程开发模型f(1)f(2)f(3)f(4)……数据结构ABCDBMS面向对象的系统体系结构则完全不同。在这里,一个函数和它需要存取的所有数据封装在称为对象的(object)的包里,其他对象的函数不能访问这些数据。曾经有人把对象比作是鸡蛋:蛋黄是数据结构,蛋清由访问数据的函数组成,蛋壳代表明显可见的操作标记。蛋壳接口隐藏了函数和数据结构的实现。假如数据结构改变了,现在程序维护人员只需检查这个特殊的鸡蛋蛋清,维护就被限制在局部范围内。这就是封装(encapsulation):数据和处理过程结合(combined)在一起并隐藏在接口后面。假设有一些数据,每个对象都有一个函数需要这些数据,将采用消息(message)来进行对象间的数据交换。如对象A可能需要数据x,对象A在它的蛋黄里存储了另一个对象B,B包含A需要的数据,A就可以给B发送一个消息来请求数据或经过变换后的数据。1.4.2面向对象软件工程开发模型f(1)f(2)...1.面向对象的基本概念(1)对象(Object)(2)类(Class)(3)继承(Inheritance)(4)消息(Message)面向对象=对象+类+继承+消息1.4.2面向对象软件工程开发模型2.面向对象开发模型1.4.2面向对象软件工程开发模型1.4.2面向对象软件工程开发模型3.构件集成模型标志候选构件若不存在则构造构件查找构件若存在则提取构件将新构件存入库中进行下一迭代开发小结本章概述性地介绍了软件工程及其相关知识内容。软件包括程序及其开发、使用和维护过程中所需要的所有文档,并叙述了软件的发展历程,总结了软件的一些重要特点,总结出了软件在开发过程中所出现的一些问题与解答。针对这些在软件开发中所出现的问题,即软件危机出现的具体表现形式给以了描述。

1 / 25
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功