软件工程-第1章第1节_第1页
软件工程-第1章第1节_第2页
软件工程-第1章第1节_第3页
软件工程-第1章第1节_第4页
软件工程-第1章第1节_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章绪

本章概述了软件工程领域的基本内容。首先介绍了软件生产的发展及软件危机,软件工程的特点、性质、目标、面临的问题;然后简要介绍了软件生存周期的各阶段,各种生存周期模型以及各种软件开发方法。软件工程的产生1.1软件工程的过程和软件生存周期1.2软件开发方法概述1.3

目录1.1软件工程的产生1.1.1软件的特点(1)软件是一种逻辑产品,它与物质产品有很大的区别。软件产品是看不见摸不着的,因而具有无形性。它是脑力劳动的结晶。(2)软件产品的生产主要是研制。其成本主要体现在软件的开发和研制上,软件开发研制完成后,通过复制就产生了大量的软件产品。(3)软件产品不会用坏,不存在磨损、消耗问题,是绿色环保产品。(4)软件产品的生产主要是脑力劳动。(5)软件费用不断增加,软件成本相当昂贵。软件的研制工作需要投放大量的、复杂的、高强度的脑力劳动,它的人力成本非常高。1.1软件工程的产生1.1.2软件生产的发展1.程序设计时代(1946—1956年)

程序设计时代的生产方式是个体手工劳动,使用的工具是机器语言、汇编语言;开发方法是追求编程技巧,追求程序运行效率,因此程序难读、难懂、难修改;硬件特征是价格高、存储容量小、运行可靠性差;软件特征是只有程序、程序设计概念,不重视程序设计方法。1.1.2软件生产的发展2.程序系统时代(1956—1968年)

程序系统时代的生产方式是作坊式的小集团合作生产,生产工具是高级语言;开发方法仍旧靠个人技巧,但开始提出了结构化方法;

硬件特征是:速度、容量及工作可靠性有明显提高,价格降低,销售有爆炸性增长;软件特征是:程序员数量猛增,其他行业人员大量进入这个行业,由于缺乏训练,开发人员素质差。

这时已意识到软件开发的重要性,大量软件开发的需求已被提出,但开发技术没有新的突破,开发人员的素质和落后的开发技术不适应规模大、结构复杂的软件开发,因此产生了尖锐的矛盾,导致软件危机的产生。3.软件工程时代(1968年至今)

软件工程时代的生产方式是工程化的生产,使用数据库、开发工具、开发环境、网络、分布式、面向对象技术来开发软件;硬件特征是:向超高速、大容量、微型化以及网络化方向发展;软件特征是:开发技术有很大进步,但是未能获得突破性进展,软件价格不断上升,没有完全摆脱软件危机。1.1.2软件生产的发展1.1.3软件危机

1.软件危机的产生

软件发展第二阶段的末期,由于计算机硬件技术的进步,计算机运行速度、容量和可靠性有显著的提高,生产成本显著下降,这为计算机的广泛应用创造了良好的条件。一些复杂的、大型的软件开发项目被提出来,但是,软件开发技术一直未能满足发展的要求。软件开发中遇到的问题因找不到合适的解决办法而使问题积累起来,形成了尖锐的矛盾,导致了软件危机。1.1.3软件危机

2.软件危机的表现软件危机表现在以下几方面:(1)经费预算经常突破,完成时间一再拖延。由于缺乏软件开发的经验和软件开发数据的积累,使得开发工作的计划很难制定。(2)开发的软件不能满足用户要求。开发初期对用户的要求了解不够明确,未能得到明确表达。开发工作开始后,软件人员和用户又未能及时交换意见,使得一些问题不能及时解决,导致开发的软件不能满足用户的要求,使项目失败。(3)开发的软件可维护性差。开发过程没有统一的、公认的规范,软件开发人员按各自的风格工作,各行其是。开发过程无完整、规范的文档,发现问题后进行杂乱无章的修改。程序结构不好,运行时发现的错误也很难修改,导致软件可维护性差。(4)开发的软件可靠性差。由于在开发过程中,没有确保软件质量的体系和措施,在软件测试时,又没有严格的、充分的、完全的测试,提交给用户的软件质量差,在运行中暴露出大量的问题。这种不可靠的软件,轻者会影响系统正常工作,重者会发生事故,造成生命财产的重大损失。1.1.3软件危机

1.1.3软件危机

3.软件危机的原因

造成上述软件危机的原因概括起来有以下几方面。(1)软件的规模越来越大,结构越来越复杂。随着计算机应用的日益广泛,需要开发的软件规模日益庞大,软件结构也日益复杂。(2)软件开发的管理困难。由于软件规模大,结构复杂,又具有无形性,导致管理困难,进度控制困难,质量控制困难,可靠性无法保证。(3)软件开发费用不断增加。软件生产是一种智力劳动,它是资金密集、人力密集的产业,大型软件投入人力多,周期长,费用上升很快。1.1.3软件危机

3.软件危机的原因(4)软件开发技术落后。在20世纪60年代,人们注重一些计算机理论问题的研究,如编译原理、操作系统原理、数据库原理、人工智能原理、形式语言理论等,不注重软件开发技术的研究,用户要求的软件其复杂性与软件技术解决复杂性的能力不相适应,它们之间的差距越来越大。(5)生产方式落后。软件仍然采用个体手工方式开发。根据个人习惯和爱好工作,无章可循,无规范可依据,靠言传身教方式工作。(6)开发工具落后,生产率提高缓慢。软件开发工具过于原始,没有出现高效率的开发工具,因而软件生产率低下。1.1.4软件工程1.软件工程的定义

软件工程是用科学知识和技术原理来定义、开发、维护软件的一门学科,是计算机科学中的一个分支,其主要思想是在软件生产中用工程化的方法代替传统手工方法。工程化的方法借用了传统的工程设计原理的基本思想,采用了若干科学的、现代化的方法技术来开发软件。这种工程化的思想贯穿到需求分析、设计、实现,直到维护的整个过程。2.软件工程的性质

软件工程是涉及计算机科学、工程科学、管理科学、数学等领域的一门综合性的交叉学科。计算机科学中的研究成果均可用于软件工程,但计算机科学侧重于原理和理论的研究,而软件工程侧重于如何建造一个高质量的软件系统。1.1.4软件工程3.软件工程的目标

软件工程是一门工程性学科,目的是成功地建造一个大型软件系统。所谓成功,是要达到以下几个目标:付出较低的开发成本;达到要求的软件功能;取得较好的软件性能;开发的软件易于移植;需要较低的维护费用;能按时完成开发任务,及时交付使用;开发的软件可靠性高。软件工程的目标可以简单地规纳为四个字:多、快、好、省。“多”是功能齐全,“快”是进度快,“好”是质量高,“省”是节省成本。4.软件工程的内容

软件工程研究的主要内容是指软件开发技术和软件开发管理两个方面。在软件开发技术中,它主要研究软件开发方法、软件开发过程、软件开发工具和环境。在软件开发管理中,它主要研究软件管理学、软件经济学和软件心理学等。1.1.4软件工程5.软件工程面临的问题

软件工程有许多需要解决的棘手问题,如软件费用、软件可靠性、软件可维护性、软件生产率和软件重用等。1)软件费用由于软件生产基本上仍处于手工状态,软件是知识高度密集的技术的综合产物,人力资源远远不能适应这种迅速增长的软件社会要求,因而软件费用上升的势头必然还将继续下去。2)软件可靠性软件可靠性是指软件系统能否在既定的环境条件下运行并实现所期望的结果。在软件开发中,通常要花费40%的代价进行测试和排错,即使这样还不能保证以后不再发生错误,为了提高软件可靠性,就要付出足够的代价。1.1.4软件工程5)软件重用

提高软件的重用性,对于提高软件生产率、降低软件成本有着重要意义。当前的软件开发存在着大量的、重复的劳动,耗费了不少的人力资源。软件的重用有各种级别,软件规格说明、软件模块、软件代码、软件文档等都可以是重用的单位。软件重用是软件工程中的一个重要研究课题,软件重用的理论和技术至今尚未彻底解决。6)软件文档

文档资料是软件必不可少的重要组成部分。它是开发组织和用户之间的权利与义务的合同书,是组织者向开发人员下达的任务书,是系统维护人员的技术指导书,是软件测试人员的工作依据,是用户的操作说明书,但是目前开发组织不够重视。缺乏必要的文档或文档不全。1.1.4软件工程3)软件可维护性

统计数据表明,软件的维护费用占整个软件系统费用的三分之二,而软件开发费用只占三分之一。软件维护之所以有如此大的花费,是因为已经运行的软件还需排

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论