第1章 软件工程概述.ppt_第1页
第1章 软件工程概述.ppt_第2页
第1章 软件工程概述.ppt_第3页
第1章 软件工程概述.ppt_第4页
第1章 软件工程概述.ppt_第5页
已阅读5页,还剩104页未读 继续免费阅读

下载本文档

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

文档简介

1、1.软件工程和方法论第1章软件工程概述,1.1软件概念、特征和分类1.2软件开发和软件危机1.3软件工程1.4软件生命周期和软件过程1.5软件过程模型1.6问题解决和范例,2,1.1软件概念、特征和分类,3,软件概念、程序、软件和软件产品独奏合唱团-合唱团-万人合唱团| | |简单程序更复杂。程序软件是计算机系统中与硬件相互依赖的另一部分。它包括一套完整的程序、数据和相关文件以及完善的售后服务。软件=程序数据文件服务;4.软件的特性;1.软件是一个逻辑实体,而不是具体的物理实体。2.软件的生产不同于硬件。3.在软件的操作和使用过程中,没有像硬件那样的机械磨损和老化问题。5.软件的特点4。软件的

2、开发和运行经常受到计算机系统的限制,并在不同程度上依赖于计算机系统。5.软件的发展并没有完全摆脱手工业的发展方式。6.软件是复杂的,人类能创造的最复杂的产品是计算机软件。7.软件成本相当昂贵。8.相当多的软件工作涉及社会因素。6,软件分类,1。系统软件操作系统数据库管理系统设备驱动程序通信处理程序等。7。软件分类、支持软件文本编辑程序的程序库系统、文件格式化程序、磁盘到磁带的数据传输、支持需求分析、设计、实施、测试和支持管理的软件(详见第2、8和8页)、软件分类、应用软件、商业数据处理软件、工程和科学计算软件、计算机辅助设计和制造软件、系统仿真软件、智能产品嵌入软件、医疗软件、制药软件交易管理

3、软件、办公自动化软件、计算机辅助教学软件、9、软件分类、2。按软件规模、参与者人数、开发周期、源程序行数分类,微型1 14周,0.5千小1 16个月,1k2k中等25 12年,5k50k千大520 23年,5k 100千大1001000 45年,1M(=1000千)最大20005000 510年,1M10M,10,软件分类,3。实时处理软件、交互软件、分时软件、批处理软件。项目软件,产品软件,11。软件分类,5。软件只使用一次,常用软件,6。根据软件故障设计高可靠性软件。通用可靠性软件。软件开发经历了以下三个阶段:编程阶段,大约五六十岁的特点:依靠个人编程技能,开发不规范,开发成本难以控制,交

4、付的产品主要是程序。从20世纪60年代到70年代,程序系统阶段的特点是软件开发以组的形式出现,提交的软件产品除了程序之外还有相应的操作说明。软件工程阶段的特点是遵循工程方法,按照软件生命周期分阶段开发软件,并提交除程序外具有严格文档的软件产品。14,计算机软件开发的三个时期和特点,15,软件工程开发的四个重要阶段,1。传统软件工程第一代软件工程2。第二代软件工程的对象工程。第三代软件工程的过程工程。第四代软件工程的组件工程。为了克服20世纪60年代末至70年代的“软件危机”,人们提出了“软件工程”一词,称之为传统软件工程。软件工程的发展有四个重要阶段:1 .传统软件工程第一代软件工程2。第二代

5、软件工程的对象工程。第三代软件工程的过程工程。第四代软件工程的组件工程。从20世纪80年代中期到90年代,面向对象的方法和技术得到了发展,研究重点转移到面向对象的分析和设计上,并发展成为一个完整的软件开发过程软件工程的发展有四个重要阶段:1 .传统软件工程第一代软件工程2。第二代软件工程的对象工程。第三代软件工程的过程工程。第四代软件工程的组件工程。自20世纪80年代中期以来,人们已经认识到提高软件生产率和保证软件质量的关键是“软件过程”,即软件开发和维护中的管理和支持能力,并逐渐形成了软件工程开发的四个重要阶段。传统软件工程第一代软件工程2。第二代软件工程的对象工程。第三代软件工程的过程工程

6、。第四代软件工程的组件工程。自20世纪90年代以来,基于组件的开发方法取得了重要进展,软件系统的开发可以通过使用现成的可重用组件来完成,而无需从头开始,从而提高效率和质量。叫做组件工程。19,软件开发方法模型,随机编程,面向过程,面向对象,面向组件,面向配置,面向组件,面向服务的SOA,20,什么是软件危机?定义:软件危机是计算机软件在开发和维护过程中遇到的一系列严重问题。它主要包括两个方面:如何开发软件和如何满足日益增长的软件需求;如何维护不断扩展的现有软件。21、软件危机的现象,对软件开发成本和进度的估计往往非常不准确。经常发生的情况是,用户对“完整的”软件系统不满意。软件产品的质量往往不

7、可靠。软件通常是不可维护的。软件通常没有适当的文档。计算机软件不仅是一个程序,而且是一整套文件。软件成本在计算机系统总成本中的比重逐年增加。软件开发生产率的提高速度远远落后于计算机应用快速普及的趋势。22、软件危机的原因、目标:软件本身的特点、软件的规模巨大和复杂性高。主观性:不正确的开发方法,在软件开发和维护中有许多错误的理解和实践。忽视需求分析软件开发=编程轻视软件维护。23.神话的软件经理神话和大多数其他经理一样,面临着维持预算、保持进度和提高质量的巨大压力。神话:我们已经有了关于构建软件的标准和程序的书籍。他们不能向人们提供他们需要知道的所有信息吗?事实:是的,关于标准的书籍已经存在,

8、但是它们真的被使用过吗?软件从业者知道它们存在吗?它们反映了现代软件开发的过程吗?它们完成了吗?在许多情况下,这些问题的答案都是否定的。神话软件经理神话神话说:“我们有很多好的软件开发工具,我们为它们购买了最新的计算机。事实:为了使用最新型号的计算机、工作站和个人电脑来开发高质量的软件,我们已经投入了太多的资金。事实上,为了获得高质量和高生产率,计算机辅助软件工程工具比硬件更重要,但是大多数软件开发人员并不使用它们。神话软件经理神话神话:如果我们落后于计划,我们可以增加更多的程序员来跟上进度。事实:软件开发不是像制造一样的机械过程。用布鲁克斯的话来说,“给一个延迟的软件项目增加人员只会使它更加

9、延迟。”这句话似乎与人们的直觉相反。但事实上,为了增加新的人员,原来工作的开发人员必须花时间培训新的人员,从而减少他们在项目开发上花费的时间。人力是可以增加的,但只有在计划周密、协调良好的情况下。26,软件用户在神话神话,需要计算机软件的用户可能是邻桌,或者是另一个技术小组,或者是市场部或另一个公司。在许多情况下,用户相信软件的神话,因为负责软件的管理者和开发者很少纠正用户的误解。神话导致用户的高期望和对开发者的极度不满。神话:对目标有一个大概的描述就足以开始写程序了。我们可以稍后添加细节。事实:不完善的系统定义是软件项目失败的主要原因。需要对将要开发的项目的应用领域、功能、性能、接口、设计约

10、束和验证标准进行正式和详细的描述。这些内容只能通过用户和开发人员之间的交流来确定。27,神话,神话,神话软件用户:项目需求总是在变化,但是这些变化很容易满足,因为软件是灵活的。事实:软件需求确实经常变化,但是这些变化的影响会随着引入时间而变化。如果我们非常注意早期的系统定义,那么需求的变化可以很容易地适应。用户可以查看需求并提出修改建议,这对成本的影响相对较小。当在软件设计过程中需要修改时,对成本的影响将迅速增加。资源已经消耗,设计框架已经建立。此时,变更可能会导致重大变更,需要额外的资源和大量的设计修改,例如额外的费用。实施阶段(编码和测试阶段)的功能、性能、接口等方面的变化将对成本产生较大

11、影响。当软件投入使用后需要修改时,此时进行相同修改的成本可能是几何级数的增加。例如,一个公园有一个邮轮码头,负责人要求软件开发商实现计算机辅助邮轮管理系统。要求如下:当游客从租船处租船时,询问租船处是否有可以出租的船只。如果租船处有空船,管理员会准备好船只帮助游客上船,并在网上终端输入一条信息“S”,表示租船期开始。计算机自动将当前时钟值发送到信息字段。当游客回到船上时,管理员输入另一个消息“e”,表示租期结束。管理人应向游客支付包机时间和费用。在一天结束时,管理员应该用一些管理信息总结每天的工作情况,并要求系统打印出租船次数=NNN平均租船时间=MMM。显然,这样的系统的功能包括两个部分:计

12、算输入流的信息打印输出,29,确定算法,我们知道平均租船时间是总时间除以租船时间=第一船结束时间-第一船开始时间,第二船结束时间-第二船开始时间或总时间=(第一船结束时间,第二船结束时间)-(第一船开始时间,第二船开始时间),30, 编写系统程序,开始打开消息_流编号=0总计时间=0获取消息不结束_流如果代码=S则编号=1总计_时间=总计_时间-开始_时间E LSE总计_时间=总计_时间结束_时间结束打印”会话数=“如果编号0则打印”平均会话时间=“总计_时间/结束消息的编号结束_流结束;31,系统建议修改以找出一天中最长的租赁时间:LONGGEST_SESSION_TIME=PPP要求将每日

13、报告分为两部分,一部分在上午,另一部分在下午。通讯线路有问题,一些信息丢失了。修改系统需要从计算报告中删除所有不完整的租船信息。对于上述修改,原始系统被丢弃。真的没有办法修改它来满足这个新的要求。时间和金钱不允许他这样做。结论:不是所有设计的软件都能适应软件生命周期中不断变化的需求,也就是说,软件的灵活性不是绝对的。神话的软件开发人员神话和仍然被软件开发人员所相信的神话,都是被几十年的编程文化所培养的。这种旧的观念和方式很难改变。神话:一旦我们编写了程序并使其正常运行,我们的工作就结束了。事实:有人说:“你越早开始写一个程序,就要花越长的时间来完成它。”大量数据显示,在程序第一次移交给用户后,

14、投入到程序中的精力有50%到70%都花在了这上面。神话,神话,神话软件开发商:在程序实际运行之前,没有办法评估它的质量。事实:从项目开始就可以应用的最有效的软件质量保证机制之一是正式的技术评审。软件评审是一个“质量过滤器”,它比通过测试发现某些软件错误更有效。神话:一个成功的项目唯一应该提交的就是运行程序。事实:运行程序只是软件配置的一部分,包括程序、文档和数据。文档是成功开发的基础,更重要的是,它为软件维护提供指导。34、软件危机的解决方案、组织和管理工程项目管理方法技术措施软件开发技术和方法软件工具结论:根据工程原理和方法组织软件开发是必要和有效的,也是解决软件危机的主要途径。“软件工程”

15、一词最早是在1968年北约在德意志联邦共和国召开的一次会议上提出的,这次会议专门讨论软件危机。它反映了软件人员对软件危机出现的认识以及他们为解决这一危机所做的努力。因此,这次会议被认为是软件开发史上的一个重要里程碑。37,“软件工程的定义”,德国人鲍尔在1968年北大西洋公约组织会议上的定义:“一系列建立和使用完美的工程原理的方法,以及通过更经济的手段获得能在实际机器上有效运行的可靠软件。”1983年,IEEE定义了软件工程:“软件工程是开发、运行、维护和修复软件的系统方法。”1993年对IEEE的一个更全面的定义:将系统的、标准化的和可测量的方法应用到软件开发、运行和维护的过程中,也就是说,

16、将工程应用到软件中。38、软件工程的定义(Definition of Software Engineering),它采用工程的概念、原理、技术和方法来规划、开发和维护软件,并将经时间证明是正确的管理技术与目前可用的最佳技术方法相结合,从而以更经济的方式获得一系列能够在实际机器上运行的可靠软件。简而言之:工程方法管理技术技术方法经济,39,软件工程的框架,目标,准确性,本质,正确性,使用,本质,可行性,适宜性,销售,开发,支持,持有,V,适宜性,实用性,选择合适的开发范例,现在设置V,如果需要原始设计方法,为需求和活动提供高质量的支持工具。软件工程的目标包括正确性、可用性和成本适宜性,并规定软件工程实践(即软件)结果的基本属性;软件工程活动的基本活动包括需求分析、设计、实现、验证、确认和支持

温馨提示

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

最新文档

评论

0/150

提交评论