版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件工程
SoftwareEngineering
第一讲王玉善
amywang@课程简介授课内容授课方式考核方式参考书目:软件工程:实践者的研究方法(第5版),RogerS.Pressman机械工业出版社议题第1章软件工程学概述软件软件危机软件工程
计算机软件已经成为一种驱动力。它是进行商业决策的引擎;它是现代科学研究和工程问题寻求解答的基础;它也是鉴别现代产品和服务的关键因素。它被嵌入在各种类型的系统中:交通、医疗、电信、军事、工业生产过程、娱乐、办公、……难以穷举。软件在现代社会中确实是必不可少的。而且我们进入21世纪,软件将成为从基础教育到基因工程的所有领域新进展的驱动器。什么是软件软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合程序是按事先设计的功能和性能要求执行的指令序列数据是使程序能正常操纵信息的数据结构文档是与程序开发,维护和使用有关的图文材料软件的特点软件是一种逻辑实体,而不是具体的物理实体。因而它具有抽象性软件的生产与硬件不同,在它的开发过程中没有明显的制造过程在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题软件的特点软件的特点软件的开发和运行常受到计算机系统的限制,对计算机系统有着不同程度的依赖性软件本身是复杂的实际问题的复杂性程序逻辑结构的复杂性软件成本相当昂贵相当多的软件工作涉及到社会因素软件的发展Intheearlydays:“Software”=“Placeasequenceofinstructionstogethertogetthecomputertodosomethinguseful”.UserComputerComputerbecamecheaperandmorecommonHighlevellanguageswereinventedProgrammerUserComputerLate1950’s:Early1960s:Veryfewlargesoftwareprojectsweredonebysomeexperts.Middletolate1960s:Trulylargesoftwaresystemswereattempted.After1968:SoftwareEngineering软件危机(Crisis)软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题:成本和进度软件产品的质量可维护性软件通常没有适当的文档资料。软件成本在计算机系统总成本中所占的比例逐年上升。软件开发生产率产生软件危机的原因⑴项目没有被很好地理解;计划不周,最终导致进度拖延。例在20世纪60年代后期,一位热情的年青工程师受命为一个自动化制造应用项目“编写”计算机程序。选择他的理由非常简单,因为在整个技术小组中他是唯一参加过计算机编程培训的人。这位工程师对汇编语言的IN和OUT指令以及Fortran语言有所了解,但是却根本不懂软件工程,更不要说项目进度安排和跟踪了。他的老板给了他一大堆相关的手册,以及需要做些什么的口头描述。年轻人被告知该项目必须在两个月之内完成。他阅读了这些手册,想好了解决方法,就开始编写代码。两周后,老板将他叫到办公室询问项目进展情况。问题出在哪里?“非常好”工程师以年轻人的热情回答道,“这个项目远比我想像的简单。我差不多已经完成了75%的任务。老板笑了,说道:“真是太棒了”然后他嘱咐年轻人继续努力工作,准备好一周后再汇报一次工作进度。一周后老板将年轻人叫到办公室,问他说:“现在进度如何?”“一切顺利”年轻人回答说,“但是我遇到了一些小麻烦。我会排除这些困难,很快就可以回到正轨上来。”“你觉得在最后期限之前能否完成?”老板问道。“没有问题”工程师答道。“我差不多已经完成了90%”如果你在软件领域中工作过几年,你一定可以将这个故事写完。毫不奇怪,年轻工程师在整个项目工期内始终停留在90%的进度上,(在别人的帮助下)直到交付期限之后一个月才做完⑵没有充分的文档资料(documentation)Managers——evaluate,trackprogress,......Programmers——communicatetoeachotherMaintainers——人与人的交流比写程序困难得多。⑶.软件缺乏”可见性”,软件可靠性缺少度量的标准,质量无法保证。
如何保证软件产品的质量,是非常复杂困难的问题。特别对于规模庞大的软件.⑷软件难以维护(maintainability)不易升级(evolvability)负责软件的管理者像大多数其他行业的管理者一样,都有巨大的压力,要维持预算、保持进度,还要提高质量。就像溺水者抓住一根救命稻草,软件管理者常常抓住软件神话不放,这些神话能够缓解其压力的话(哪怕是暂时的)。神话1:我们已经有了关于建造软件的标准和规程的书籍,难道它们不能给人们提供所有它们需要知道的信息吗?现实:不错,关于标准的书籍已经存在,但真正使用它们了吗?软件实践者知道它们的存在吗?它们是否反映了现代软件工程实践?它们完备吗?它们对在保持关注质量的情况下改善交付时间是简便有效的吗?很多情况下,这些问题的答案是否定的。软件神话-管理神话神话2:如果我们已经落后于计划,可以增加更多的程序员赶上进度。现实:给一个已经延迟的软件项目增加人手只会使其更加延迟。神话3:如果我决定向第三方外包软件项目,我可以放松并让承包公司去建造它。现实:如果一个机构不了解如何在内部管理和控制软件项目,当它外包软件项目时将总是处于挣扎的境地。软件神话-客户神话在许多情况下,客户相信关于软件的神话,因为负责软件开发的管理者和开发人员很少去纠正客户的错误理解。导致客户过高的期望值,并最终引起对开发人员的不满意。神话1:有了对目标的一般性描述就足以开始写程序了,我们可以以后再补充细节。现实:糟糕的系统定义是软件项目失败的主要原因。关于信息领域、功能、行为、性能、接口、设计约束及确认标准的形式化的、详细的描述是必要的。这些内容只有通过客户和开发者之间彻底地交流后才能确定。神话2:软件需求确实是经常变更的,但这些变更能够很容易地满足,因为软件是灵活的。现实:软件需求确实是变更的,但这些变更产生的影响会随着其被引入的时间而不同的。软件神话-实践者神话在软件的早期阶段,程序设计被看成是一门艺术。神话1:一旦我们写出了程序并使其正常运行,我们的工作就结束了。现实:越早开始写代码,就要花越长的时间才能完成它。研究表明在一鼐软件上所投入的60%到80%的工作量是花费在软件第一次交付客户之后。神话2:在程序真正运行之前,没有办法评估其质量。现实:从项目一开始就可以应用的最有效的软件质量保证机制之一是--正式的技术评审。神话3:一个成功项目唯一应该提交的就是运行程序。现实:运行程序仅是软件配置的一部分,软件配置包括很多东西。神话4:软件工程将使我们创建大量的、不必要的文档,并总是延缓我们的进度。现实:软件工程并不是为创建文档,而了创建质量。消除软件危机的途径了解产生软件危机的原因,澄清错误认识,建立起关于软件开发和维护的正确概念,还仅仅是解决软件危机的开始,全面解决软件危机需要一系列综合措施。 ——软件工程
SoftwareEngineering人们对软件生产提出了许多疑问:为什么需要那么长的时间才能完成软件开发。为什么开发成本如此高为什么我们不能在把软件提交客户之前就发现所有的错误为什么在软件开发过程总是难以度量其进展造成以上问题的原因主要是:软件行业发展的速度太快,对经验总结不足人们对自身处理能力的认识不清解决的方法:多实践,积累成功和失败的案例总结、思考、提取经验建立软件的模型和模式软件工程软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它软件工程FritzBauer:建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法IEEE:软件工程是开发、运行、维护和修复软件的系统方法软件工程的本质特性软件工程关注于大型程序的构造软件工程的中心课题是控制复杂性软件经常变化开发软件的效率非常重要和谐地工作是开发软件的关键软件必须有效的支持它的用户在软件工程领域中是由一种文化背景的人替具有另一种文化背景的人创造产品软件工程的基本原理分阶段的生命周期计划严格管理坚持进行阶段评审实行严格的产品控制——基准配置管理采用现代程序设计技术结果应能清楚地审查开发小组的人员应该少而精1+1<2承认不断改进软件工程实践的必要性软件工程三要素:方法、工具和过程软件工程方法为软件开发提供了“如何做”的技术传统软件工程方法学与面向对象方法学软件工具为软件工程方法提供了自动的或半自动的软件支撑环境软件工程过程定义了:
方法使用的顺序要求交付的文档资料为保证质量和适应变化所需要的管理软件开发各个阶段完成的里程碑软件工程三要素ALayeredTechnologya“quality”focusprocessmodelmethodstoolsObject-orientedmethodRationalRose谁需要软件工程程序员项目组成员项目负责人为什么需要软件工程项目延迟用户需求维护困难项目超支我国软件业的现状我国软件业的规模目前,我国从事软件开发、研制、销售、维护和服务的软件企业有2000家左右,加上兼营的企业,总数大约有10000多家,其中具有自主软件研发能力的软件企业约5700家,从事软件销售、维护和服务的企业5000多家。在这里面,营业规模超过一亿元的软件企业达到100家以上,超过5亿元的达到18家,超过10亿元的达到12家。我国软件业的现状2001年,世界软件产品市场销售额超过1865亿美元,我国当年的销售额为285亿元人民币,只占世界市场不到2%的份额。国内软件市场有限的份额中大部分为国外软件厂商所瓜分,国内所开发的软件产品仅占小部分。我国软件业的现状2001年我国软件销售总额96.3亿美元,软件企业约5000家,从业人员29万。2001年印度软件销售总额102.3亿美元,软件企业约6000家,从业人员40万。2001年我国软件的出口额仅为7.2亿美元,2000年与1999年分别为4亿美元及2.5亿美元。印度在软件出口方面,则一直保持高速的增长。1990年印度软件出口只有5000万美元,1999年就达到了39亿美元,2000年达到了62亿美元,而2001年印度软件出口额为77.8亿美元,已经占到了印度全部出口总额的10.5%。我国软件业的现状我国软件业发展不理想的原因除了政策和盗版外,最大的问题是我国绝大多数软件企业对其软件开发工作过程缺乏有效的管理和控制。多数软件企业开发和生产基本上处于“技术少标准、开发缺规范、生产无检验、质量无保证”的状态。在这方面印度软件业的发展能够给我们以启发。它山之石印度软件业能够这么迅速地发展起来,除了有政府支持、英语程度、人才储备等原因外,最重要的是从标准化与产品流程入手,重视管理。印度的软件开发管理的特点是流程重于项目,流程管理人员独立于研发部门,专门检查研发部门的开发流程是不是按照既定流程走,如果流程不对,项目肯定就此停止。另外,所谓的项目经理一般都是从编码人员
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 销售装修合同范本
- 合同模板格式规范字体大小
- 承包业务转让合同模板
- 全新协议土地流转合同范本下载2篇
- 房屋装修合同范本下载
- 绿化修剪服务合同
- 影视编剧工作室合作经营合同(2024版)
- 农村河道承包合同范本
- 二零二四年物联网技术研发与合作合同
- 聘用管理合同模板
- 护理类专业知识考试标准
- 译林版英语五年级上册 Project2 教案
- 2023年秋季新改版青岛版(六三制)六年级上册科学教学计划
- 物业费催费技巧课件
- -2月班主任随堂听课记录表
- 黑布林英语阅读初一年级16《柳林风声》译文和答案
- 中药饮片出库单
- 危重患者营养支持的意义及时机
- 林业基础知识考试复习题库(浓缩500题)
- 国开2023春《语言学概论》形考任务1-3+大作业参考答案
- 六年级上册《比》《圆》测试题(A4版)
评论
0/150
提交评论