《软件工程》第一章课件_第1页
《软件工程》第一章课件_第2页
《软件工程》第一章课件_第3页
《软件工程》第一章课件_第4页
《软件工程》第一章课件_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

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

文档简介

2023/7/232023/7/23《软件工程》徐州工程学院SoftwareEngineering2023/7/23在一些人眼里,今天的软件开发似乎已成为简单的事情,已有不少很好的开发工具和软件库,软件开发人员训练有素,都强烈渴望去编写很酷的软件,可以在几天的时间里编写出一个相当复杂的软件。但是为什么有一些软件能够得到用户的喜欢,而另一些则不能?为什么有些软件能够在市场上成功,而有些则受到冷落?由此可见,开发软件并不一定难,难就难在如何开发有用的软件。微软凌小宁博士2023/7/23我最大的心得是,一个产品一定要找到能够真正适用的场合,不能只是为了技术而从事技术为了研究而进行研究,却不管用户对你所研究的技术和产品有没有需求。否则,无论你的技术是多么优秀,多么先进,恐怕你的产品在市场上都无法获得成功。微软张益肇博士2023/7/23软件工程是信息计算科学专业的一门专业课程。通过本课程的学习,使学生掌握系统的软件开发理论、技术和方法,使用正确的工程方法开发出成本低、可靠性好并在机器上能高效运行的软件,为今后从事软件开发和维护打下坚实的基础。课程的性质、目的与任务2023/7/23本课程比较全面、系统地介绍软件工程的概念、技术及方法。主要内容包括:软件工程概述、软件生存周期及软件需求分析、软件设计方法、软件测试技术等。

通过本课程的学习,使学生能真正的从中了解软件开发的整个过程。为了让学生真正得以实践,结合实际软件开发项目,让学生从问题定义开始,经过可行性研究、需求分析、概要设计、详细设计、编码直到最后要对自己开发的软件还要进行测试,这样一个软件开发过程,从而使学生掌握软件开发的基本技能。课程主要内容2023/7/23学习本课程的基本要求本课程是继程序设计课程之后,对提高学生软件开发能力有重要作用的一门课程。要求学生在学习本课程前应掌握数据库、数据结构、结构化程序设计、面向对象程序设计。通过本课程的学习,为学生后期的毕业设计环节奠定了良好的基础。2023/7/23各章学时安排2023/7/231.1 软件的定义1.2 软件工程的定义1.3 软件工程在软件行业中的作用1.4 软件工程方法论1.5 软件工程实践论1.6 本章小结第一章软件工程概述2023/7/23水利工程建筑工程机械工程…

…软件工程本章将对软件的地位和作用、软件的特点、软件的发展、软件的危机以及软件工程学科的形成、软件生期等方面的问题和基本概念进行介绍传统工程新兴工程气象工程生物工程2023/7/231.1软件的概念及特点1、软件softwaresoft+ware软制品(软体)。其中:程序是按事先设计的功能和性能要求执行的指令序列,数据是程序能够正确地处理信息的数据结构,文档是及程序开发、维护和使用有关的图文资料。2023/7/232、软件特点.

软件是一种逻辑实体,而不是具体的物理实体.

软件的生产及硬件不同.在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题磨合调整磨损用坏修改点实际曲线理想曲线硬件失效率曲线时间失效率时间失效率软件失效率曲线2023/7/23.

软件的成本相当昂贵软件技术的发展落后于需求时间软件复杂性软件需求差距软件技术硬、软件成本比例的变化年份成本%软件1950197019851995硬件2023/7/233、软件的分类1、按软件的功能进行划分系统软件支撑软件应用软件可复用软件2023/7/23

系统软件:能及计算机硬件紧密配合在一起,使计算机系统各个部件、相关的软件和数据协调、高效率地工作的软件。如操作系统、数据库管理系统、设备驱动程序以及通信处理程序等。系统软件是计算机系统中不可少的一个组成部分。应用软件:是在特定的领域内开发,为特定目的服务的一类软件。如,CAD---CAM计算机辅助制造---CAI计算机辅助教学,专家系统,模式识别,刹车系统支撑软件:是协助用户开发软件的工具性软件,其中包括帮助程序人员开发软件产品的工具,也包括帮助管理人员控制开发的进程的工具。2023/7/23支撑软件2. 按照软件工作方式划分(1)实时处理软件(2)分时处理系统(3)交互式软件(4)批处理软件2023/7/232023/7/233、按软件的规模进行划分

按开发软件所需的人力、时间以及完成的源代码行数。2023/7/23

4、按软件开发划分软件项目开发软件产品开发

软件产品---指的是不局限于特定领域的、可以被广大用户直接使用的软件系统。如微软的Windows,Office等。这类系统的特点是技术含量高,开发时要考到各种不同的用户需求;软件项目---也称定制软件,是受某个特定客户(或少数客户)的委托,由一个或多个软件开发机构在合同的约,如我们常说的管理信息系统(MIS)和电子商务系统。这类软件的特点是领域知识所占的比重较大,相对技术而言工程性更强。例如,军用防空指挥系统、卫星控制系统等均为这类软件。4、软件的发展历程1.程序设计阶段(20世纪50年代)

软件以个体手工的方式制作2.程序系统阶段(20世纪60年代)

软件开发者已使用系统的方法来设计、制作软件,而不是孤立地对待每个程序。3.软件工程阶段(20世纪70年代起)

软件产品的开发开始采用工程的原理、技术和方法进行实施。2023/7/23软件的发展:1946-1956年从计算机问世到高级程序语言出现前存储容量比较小,运算速度比较慢采用个体工作方式,用低级语言编写程序应用领域主要是以数值数据处理为主的科学计算,其特点是输入、输出量较小衡量程序质量的标准主要是功效,即运行时间省、占用内存小主要研究内容是科学计算程序、服务性程序和程序库,研究对象是顺序程序计算机

(JinshanYu)软件的发展:1956-1968年从高级程序语言出现到软件工程出现前存储器容量、外围设备得到迅速发展,出现了高级程序设计语言应用领域包括数据处理(非数值数据),其特点是计算量不大,但输入、输出量却较大高速主机及低速外围设备的矛盾突出,出现了操作系统、并发程序、数据库及其管理系统20世纪60年代初提出了软件一词,开始认识到文档的重要性研究高级程序设计语言、编译程序、操作系统、支持编程的工具及各种应用软件工作方式逐步从个体方式转向合作方式出现软件危机5、SoftwareCrisis(软件危机)软件危机是指从60年代中后期开始,软件开发和维护过程中遇到的一系列严重问题。主要表现在:(1)软件开发严重超时、超成本,系统成功及否难以预料。(2)软件费用急剧上涨。(3)软件供不应求,软件人员奇缺。(4)软件质量极其低劣。(5)软件维护极其困难,而且很难适应不断变化的用户需求和使用环境。SoftwareCrisis:主要表现(1)软件开发严重超时、超成本,系统成功及否难以预料。软件开发的成本和进度难以准确估计,延迟交付甚至取消项目的现象屡见不鲜。据研究结果统计:只有15%的项目是按计划完成的。仅有10%的项目是按费用计划完成的。平均超出50%造成用户不满,开发者丧失信心SoftwareCrisis:主要表现(2)软件费用急剧上涨年增长率达12%。原因:硬件性能价格比迅速下降(在30年内提高了6个数量级,或每二年翻一翻),扩大了计算机的应用,而软件的开发成本却十分昂贵。如据IBM1966年10月的统计,每条指令价值高达60美元(一般的也要$8-$10)。成本高IBM360OS,5000多人年,耗时4年(1963-1966),花费2亿多美元。美国空军:1955年软件占总费用(计算机系统)的18%,70年60%,85年达到85%美国全球军事指挥控制系统,硬件1亿美元,软件高达7.2亿美元。计算机软件和硬件费用比软件费用急剧上涨SoftwareCrisis:主要表现(3)软件供不应求,软件人员奇缺软件需求量年增长率20-50%。而软件供应量只能增加11-17%/年。90%以上的软件公司积压了三年以上的应用软件定货合同。软件的发展还跟不上硬件的步伐。{软件生产率提高4%-7%/每年}SoftwareCrisis:主要表现(4)软件质量极其低劣例如,60年代IBM的OS/360操作系统。它共有4000多个模块、100万行指令,共投入5000人年,耗资5亿美元,但在交付使用的系统中仍找出2000个以上的错误。据统计数字表明:在大型系统中,约3/4的系统有问题。美国对政府开发的9个软件项目调查,可用系统只占不到5%。现在一般软件在交付时每千行有一到十个错误。SoftwareCrisis:主要表现(5)软件维护极其困难,而且很难适应不断变化的用户需求和使用环境。维护形式多样化改正性:修改故障完善性:增加功能适应性:移植维护成本越来越高55%到70%维护带来的问题29维护成本越来越高30计算机

(JinshanYu)软件危机的原因(1)计算机应用范围及规模的迅速扩大;(2)软件的“实质性”困难:复杂性,一致性、易变性、不可见性;

包括开发和管理,技术及非技术的,等方方面面。(3)软件技术的发展跟不上形势。计算机

(JinshanYu)软件危机的原因(1)计算机应用范围及规模的迅速扩大计算机的应用工程和科学计算如天气预报、石油勘探实时和嵌入式处理如电器、核电站办公处理如字处理、powerpoint、表格处理智能处理企业信息化32计算机在军事领域的应用大规模的科学计算如密码破译信息分析和处理如语音处理,ASR武器控制如导弹轨道的变更作战平台的集成和作战信息的共享33计算机应用范围及规模的迅速扩大现实它已渗透到人们生活、工作的所有领域,包括:交通、医疗、电信、军事、工业生产过程、娱乐、办公、经济、政治、文化、教育、……、等等,难以穷举。计算机

(JinshanYu)计算机应用范围及规模的迅速扩大:IBMOS/360,操作系统(用了5000人年)它共有4000多个模块、100万条以上的源指令;1960’sFB-111战斗轰炸机:10万条指令;1970’sF-16战斗机:25万条,F-22:700万条(Ada)美(90年代)支持空间站计划约8000万条源指令。Windows2000,35millionsourcecodelines(Computer200134(5):30~);UNIXcontains4millionlinesofcode

Windows95:1000万行代码。

Windows2000:5000万行代码。城市银行出纳机程序7.8万行,150人年。例:Exchange2000和Windows2000开发人员结构计算机应用范围及规模的迅速扩大软件的复杂性随规模呈指数级上升开发一个具有一定规模和复杂性的软件系统及编写一个简单的程序不一样正如建设狗窝和高楼大厦计算机

(JinshanYu)软件危机的原因(2)软件的“实质性”困难:复杂性,一致性、易变性、不可见性。包括开发和管理,技术及非技术的,等方方面面软件是逻辑产品,系统中的错误难以消除;质量问题很难以统一的标准度量,因而造成质量控制困难。DO10I=1,100,1错把“,”写成“.”{张海藩,SE}DO5I=1,3误写为DO5I=1.3产生软件危机的原因(1)软件的不可见特性(2)软件系统规模庞大(3)软件生产工程化管理程度低(4)对用户需求关注不充分(5)对软件维护重视程度不够(6)软件开发工具自动化程度低2023/7/232023/7/231.2软件工程的概念及范畴1、“软件工程”----SoftwareEngineering于1968年北大西洋公约组织NATO在德国召开的一次会议上提出是把软件当作一种工业产品,要求“采用工程化的原理及方法对软件进行计划、开发和维护”。软件工程的定义概括的说,软件工程是指导软件开发和维护的一门工程学科,以计算机科学理论和其他相关学科的理论为指导,采用工程化的概念、原理、技术和方法来开发及维护软件,把经过时间考验而证明正确的管理技术和当前能够运用的最佳技术方法结合起来,以经济地代价开发出高质量的软件并进行维护。2023/7/232023/7/23软件工程学

软件开发技术

软件工程管理软件开发方法学软件工具软件工程环境软件工程管理学软件经济学----软件工程学的范畴2、软件工程技术介绍1.软件工程方法

概括说指完成软件开发及维护任务时,需要“如何做”的技术方法,涉及了软件开发、维护的整个过程中的任务,包括软件需求分析、软件结构设计、程序算法设计等诸多任务。其主要有结构化方法、JSD方法和面向对象方法。2023/7/231)结构化方法

以软件功能为目标进行的软件构建过程,包括结构化分析、结构化设计、结构化实现和结构化维护等内容,能够很好地适应结构化编程工具。2)JSD方法

以软件中的数据结构为主要依据进行软件结构及程序算法的设计,是结构化软件设计方法的一种有效补充。2023/7/233)面向对象方法

以软件问题域中的对象为基本依据进行软件系统模型设计,包括面向对象分析、面向对象设计、面向对象实现和面向对象维护等内容。2023/7/232.软件工具

是一种具有自动化特征的软件支撑环境,作用是对软件工程方法的运用提供有效支持。3.软件工程过程

是指开发机构在开发软件产品过程中,在软件工具支持下,按照一定的软件工程方法所进行的一系列软件工程活动。2023/7/233、软件工程的基本原理1.按软件生命周期分阶段制定计划严格管理2.坚持进行阶段评审3.实行严格的产品控制4.采用现代程序设计技术5.具有明确的责任6.开发组织的人员尽量少而精7.不断改进软件开发过程2023/7/231.3 软件工程在软件行业中的作用1.定义软件项目成功的标准2.定义项目的驱动、约束和自由程度3.定义产品发布标准4.保持良好信息沟通5.制定项目计划6.对项目的任务分解7.制定质量控制活动后的修改工作计划8.为过程改进安排时间9.管理项目的风险2023/7/231.4 软件工程方法论1.软件工程的发展性

软件技术发展可以分为三个阶段:

程序设计阶段、程序系统阶段、软件工程阶段2.软件工程的技术性

(1)实践性:软件工程方法必须包含严格意义上的实践操作规则或者模式,而不是限于理论或者空谈。

(2)社会性:软件工程的方法要关注社会因素,考虑机制、体制及管理方式等问题,甚至涉及人的观念和人们的心理。2023/7/23

(3)复杂性:软件本身是复杂的,软件的复杂性可能来自它所反映的实际问题的复杂性,也可能来自程序逻辑结构的复杂性。2023/7/233.软件工程的系统性

作为一种工程设计,必须对整个软件工程过程采用系统方法考虑其全过程。借鉴系统论“戴明循环法”的思路,软件工程包含四种基本的过程活动以及软件生命周期模型。P:软件规格说明,规定软件的功能及其运行限制D:软件开发,产生满足规格说明的软件C:软件确认,确认软件能够满足客户提出的要求A:软件演进,为满足客户变更要求,必须在使用过程中演进2023/7/231.5 软件工程实践论软件项目发展的过程中,软件工程技术的进步一直是产业发展的动力。而软件工程又包含了多个过程模块,大致分为前期、开发、运作和维护几大部分。这就涉及到软件项目的管理、软件测试和软件维护。2023/7/231.5.1 软件项目管理1.软件项目管理的特殊性

软件项目管理及其他的项目管理相比有相当的特殊性。软件的整个过程都是设计过程,不需要大量的物质资源,开发的产品以程序代码、文档为主,并没有物质成果;软件是纯知识产品,其开发进度和质量很难估量。2023/7/23所谓项目,就是在特定条下、规定时间内、满足一系列特定目标的工作的总称。2.软件项目管理的内容

软件项目管理是一种科学的管理手段,它是为了使软件项目能够按照预定的要求完成,对成本、人员、进度、质量等进行分析和管理的任务。3.软件项目管理的关键因素

人力配置、沟通管理、可靠的软件需求、周密可行的计划、完备的文档资料、严格的风险管理2023/7/23

1.5.2 软件测试软件测试是一个知识密集型的活动,测试人员都属于知识工作者,他们测试相关的知识、技巧、经验和灵感在测试过程中有着重要的作用,测试人员如果没有丰富的测试经验及测试技巧,测

温馨提示

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

评论

0/150

提交评论