第一章软件工程概论_第1页
第一章软件工程概论_第2页
第一章软件工程概论_第3页
第一章软件工程概论_第4页
第一章软件工程概论_第5页
已阅读5页,还剩76页未读 继续免费阅读

下载本文档

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

文档简介

软件工程华南理工大学计算机科学与工程学院信息网络中心/数园网络有限公司开发存在的主要问题总结没有明确的项目计划,缺乏整体对项目进展的规划项目没有明确的的生命周期模型,没有明确的阶段性,无法衡量各个阶段的进展情况。只能靠领导或者专家的经验来评估。整个开发过程对上层管理者不可视,不能及时发现和纠正开发过程中存在的问题整个开发过程缺乏质量保证意识,目前基本上没有质量改进和过程改进的计划和措施,还是依靠几个"专家"和"牛人"的力量。开发存在的主要问题项目缺乏过程控制,开发过程没有纳入配置管理,整个项目运作完成后,不能回顾开发过程中的工作产品。没有配置管理,也会给开发人员带来较大的随意性,产生问题的几率也会增大。项目之间的相互牵扯较多,一个人属于多个项目,每个项目的人力投入、时间计划很难估算。也给这些人进度延迟或者出现问题找到了托词。没有需求管理措施,什么需求应该接纳,什么需求应该拒绝,需求如何跟踪都没有有效管理。开发存在的主要问题开发过程中一般较多关注功能实现,缺乏对可测试性、可维护性等等质量属性方面的关注。开发过程中所使用的规程、规范、文档模板、检查单较少。针对开发过程、设计方法等方面的培训资料较少,企业需要在紧张的工作中去培育员工多方面的管理和业务素质。制定了一些规范和标准,但可操作性还不强,需要更新和完善。开发存在的主要问题缺乏一些必要的IT支撑体系,如:缺陷跟踪电子流,项目跟踪电子流、质量保证电子流和必要的辅助工具。……不成熟组织软件项目的特征1、缺乏确定的软件过程和相应的管理和控制;2、即使给出了软件过程,也不严格的遵循和强制执行;3、管理是完全被动的,管理者采用的策略是救火式的,即出了事才去解决,解决的时候也难以纵观全局,往往只顾眼前;4、由于缺乏有依据的估算,制订软件预算和生产计划时往往跟着感觉走,实际生产时则常常超标;5、如果强制在预定期限内完成,那么软件的功能和质量肯定是得不到保证;

6、缺乏评价软件产品质量和解决产品缺陷和过程问题的客观基础成熟组织软件项目的特征具有在企业范围内管理、控制软件开发和维护过程的能力;现有人员和新进人员均了解所遵循的软件过程,且工作活动均按照事先的计划完成;在定义好的软件过程中,所有项目和机构中的角色和责任分明;制定的计划是有效的且与实际的工作进展一致;软件过程在必要时可按照一定规则和程序加以修改;软件产品和过程的具有一定的可控性。这主要体现在:成熟组织软件项目的特征1.

管理者能够监督软件产品的质量和生产过程;2.

具有客观的和定量化的措施来判断产品质量并分析产品与生产过程中的问题;3.

计划和预算有章可循,它是基于历史数据的,从而是实际可行的;4.

预算的结果,包括成本、时间表、产品功能和质量等,通常能够达到;5.

有关的参与者完全理解遵循软件过程的价值并认真地遵循之;6.

具有支撑软件过程的基础设施,如标准过程库、历史数据库等。不成熟组织软件项目的结果救火英雄辈出错误付出高昂代价员工积极性降低企业生存压力受到严重挑战……数据分析0.117KLOC/人月软件生产率软件开发生产率对比0.3公司SEI数据分析数/KLOCBug率软件Bug率对比0.5公司SEI7.3数据分析问题所占百分比错误类型XX产品XX版本问题按错误分布统计图14.214.814.84.833.118.3接口需求编码逻辑设计其他数据分析问题所占百分比错误类型设计问题分布设计思想错误设计缺陷更改设计新增设计32.1数据分析问题所占百分比错误类型需求问题分布244需求不明确需求不合理新增需求72华为流程化管理历程介绍1、质量大会(万人领废品)给人的启示2、流程化管理历程3、取得的效果原微软全球技术中心总经理唐俊会见朱鎔基时分析中国软件企业的不足:中国软件企业缺乏标准化的研发模式,缺乏了解正规的软件研发流程的管理人员,缺乏真正熟悉软件开发流程的高级程序员。印度软件产业现状:

2002年软件产值为101亿美元、出口76.8亿美元,估计在2008年为850亿美元,出口500亿美元。全球最大的500家公司中有200多家采用印度软件,美国最大的100家公司几乎100%把印度作为国外软件的首选地。印度成功的经验:CMM流程化管理,全球CMM五级组织有42家,CMM四级组织有87家,印度有80多家。如何搜集、管理和使用信息,将决定你在竞争中的输赢。中国不缺少软件人才,缺少的只是群体作业和协同发展的全球战略眼光以及市场运作的能力。——比尔·盖茨第一章软件工程概述§1.1软件工程的背景和历史软件发展阶段:程序设计阶段—50至60年代程序系统阶段—60至70年代软件工程阶段—70年代以后195019601970198019902000早期:面向批处理有限的分布自定义软件第二阶段:多用户实时数据库软件产品第三阶段:分布式系统嵌入“智能”低成本硬件消费者的影响第四阶段:强大的桌面系统面向对象技术专家系统人工神经网络并行计算网络计算机软件开发大事记

1945年6月30日,冯•诺依曼在EDVIC计算机设计报告草案中介绍了存储程序的概念。图灵谢绝了剑桥大学帝国学院研究的地位,参加了英国国家物理实验室(NPL)数学部的工作。他把早先对可计算性的研究成果与他在战时的电子学方面经验结合在一起,以极大的热情从事电子计算机的设计工作。他起草了关于自动计算机机器ACE(automaticcomputingengine)的报告,描述了存储程序概念在计算机中的应用,阐明了用程序实现某些运算而程序员不必知道机器细节的情况,这就预言了以后对高级语言的开发,他甚至还想象远程终端的使用,指出“利用电话线来控制远距离的计算机是完全可能的”1945年软件开发大事记

6月,冯•诺依曼(JohnvonNeumann)与高德斯坦等人发表了《电子计算机装置逻辑结构初探》的论文,成为EDVAC的设计基础。

1946年

10月,图灵发表了一篇论文《计算机器与智能》(ComputingMachineryandIntelligence),指出如果一台机器对于质问的响应与人类的响应完全无法区别,那么这台机器就具有智能。今天,人们把这一论断称为图灵测试,它奠定了人工智能的理论基础。1950年软件开发大事记

1951年开始使用子程序概念。霍尔倍顿(BettyHolbertor)创建了一种分类-合并生成器,成为编译系统的前驱。霍普研制成功第一个编译程序A-O。1952年

IBM资助的一个委员会在JohnBackus领导下开始研制高级语言,设计用于科学与工程计算的FORTRAN语言。

IBM推出了IBM704,其机器性能较以前的计算机有了显著提高。并且在IBM704上首次运行了符号汇编程序SAP(symbolicassemblyprogram),成为程序发展史上最有意义的事。它确立了汇编的基本形式。1954年1956年软件开发大事记

1957年,在IBM704上运行了第一个高级语言FORTRAN,它适合科技运算,至今还在使用。

在高级语言方面出现了COMITⅡ,IPL-Ⅴ,IT等。COMITⅡ是用字符串处理与模式匹配的第一语言。IPL-Ⅴ是一种表处理语言,形式上与汇编语言类似,曾在60年代大量使用。IT是在IBM650小型机上实现的第一语言,对编译程序的研究起了推动作用。1957年软件开发大事记高级语言方面,MIT的JohnMcCarthy发明了LISP语言。它是为人工智能领域的应用而设计。至今仍在广泛使用。ALGOL58出现:它由一个国际数学家小组设计,主要用于数学与科学计算。出现了第一个专用语言APT,用于数控机床的程序编写。此外,还有用于商业数据处理的语言Flow-Matic。在象棋程序方面,AlexBernstein等人开发了运行在IBM704机的第一个成熟的程序。AlanNewell,JohnShaw,HerbertSimon还使用高级语言首次开发了模仿人类思维过程的程序。在1958年,空中交通管理系统开始开发。1958年软件开发大事记

建立了数据处理系统委员会(CODASYL)以创建通用的商用语言COBOL。麦卡锡(JohnMcCarthy)开发了用于人工智能的表处理语言LISP。1959年

ALGOL60问世。它是在ALGOL58的基础上,由一个国际数学家小组定义的。FORTRAN的设计者JohnBackus也参加了这项工作。ALGOL语言正是通过BackusNaurForm(即巴科斯•诺尔范式)这种元语言来定义的。ALGOL是使用递归的第一个主要的面向过程的语言。

COBOL语言的规格报告正式公布。它是自1959年5月,由GraceM.Hopper领导的小组在五角大楼支持下的工作的结果。

1960年软件开发大事记出现了第一个模拟语言GPSS。它是GeneralPurposeSystemSimulator的缩写。意为“通用系统模拟程序”。所谓模拟,就是用计算机来“做实验”,通过模拟可得知“实验”的反应与结果。MIT在IBM7090上开发了第一个实验性分时系统CTSS(compatibletimesharingsystem)。当时的7090只有32K内存,监控程序为5K,剩下27K给用户使用。CTSS成功地支持着32个用户,允许他们同时用各自的终端来编译程序和运行程序。CTSS对IBM后来的操作系统产生了很大的影响。

1961年软件开发大事记在测试技术方面,Auerback公司提供了最早的基准程序Benchmark。在语音识别方面,贝尔实验室的Kersta研制了用语音谱图,发现同一个人同一个音的谱图总是比不同的人发同一个音的谱图更为相似。为此他创造了一个类似于“指纹”(fingerprint)的新词“声纹”(voiceprint),就是说像用“指纹”辨别人那样,可以用“声纹”来辨别人。这很有应用价值。贝尔实验室的另一个小组开发了能设计、存储及编辑合成音乐的软件。美国斯坦福及普度大学首次建立计算机科学系。1962年软件开发大事记贝尔实验室发明了为字符串处理提供完善功能的一种独特的编程语言SNOBOL。GPSS之后又一种模拟语言SIMSCRIPT问世。由大型软件系统支持的美国半自动防空系统(SAGE)花费了80亿美元才得以成功1963年软件开发大事记5月1日,美国达特茅斯学院的凯梅尼(JohnKemeny)和汤姆斯(ThomasKurtz)发明了BASIC语言。他们认为FORTRAN等语言都是为专业人员设计的,而他们希望能为毫无经验的人提供一种新的语言,特别是使用非计算机专业的大学生都能通过这种语言学会使用计算机。此外,在编程语言方面还出现了PL/1、Formac,以及IBM公司开发的报表生成程序:RPGⅡ。后者是一种使用方便的专用语言,用户只需了解有关“输入、文件描述、计算、输出”这4个规格说明,就可用RPGⅡ产生报表。因此,有人曾说RPG是第四代编程语言的先兆。IBM经7年努力,完成了航空订票系统。为分散于各地的机票代理机构提供方便。IBM在当年开发了计算机辅助设计系统。1964年软件开发大事记开始了MAC工程,服务于大型分时系统。后来发展成为Multics操作系统。罗宾森(J.A.Robinson)的工作打下了逻辑程序设计的基础。荷兰计算机科学家迪克斯特拉(EdsgarW.Dijkstra)提出结构化编程技术,适合在软件的详细设计或低层设计及编码实现阶段采用。1965年IBM公司的P.H.Howard提出英文字符识别系统,推动了文字识别技术的发展。R.Casey和G.Nagy对汉字OCR(光学字符识别)进行了研究,并提出二级匹配的方法。1966年软件开发大事记在模拟语言方面,出现了Simula67。这是第一个面向对象语言。它是挪威计算中心的O.J.Dahl和K.Nygaard用ALGOL语言开发的。在科学计算方面,出现了Reduce软件包。美国科学家克努斯(DonaldKnuth)开发发表其经典巨作——TheArtofComputerProgramming。把算法与数据结构作为独立实体从使用它们的程序中分离出来。1967年软件开发大事记10月北大西洋公约组织(NATO)的科学委员会在德国加尔密斯(Garmisch)开会讨论软件可靠性及软件危机的问题,产生了关于“软件工程”的加尔密斯报告,简称G-报告。首次提出了关于“软件工程”的问题。荷兰科学家埃德EdsgarW.Dijkstra在ACM通信上发表了“GOTO语句值得考虑的害处”(GOTOStatementConsideredHarmful)的短文,指出调试修改程序的困难与它包含的GOTO数目成正比,假如取消了GOTO语句,将会使编程错误大幅减少。于是引发了一场关于结构化编程的大讨论。在编程语言方面,国际信息处理联合会(FP)的工作小组设计了ALGOL68。虽然它是ALGOL60的后继者,但它却是一种全新的语言。其设计目的是:为算法间的交流、为不同计算机上程序的可移植、为计算机科学的教育提供一种通用的程序设计语言。ALGOL68有很丰富的表达能力,有令人感兴趣的优美结构。该联合会还鼓励使用六位数字的数据格式(YYMMDD)来表示日期进行信息交换,从而造成今天的2000年危机问题。此外,SeymourPapert、W.Feurzeig等开发了Logo语言。它作为LISP语言的一种方言,是专为儿童介绍计算机及其编程而研制的。它在用户接口上开发完整的编程环境。在计算机图形学方面,IvanE.Suterland提出窗口技术。

1968年软件开发大事记贝尔实验室的DennisM.Ritchie和K.Thompson用PDP-7汇编指令编写了UNIX的第一版本V1。这一著名操作系统正式问世。UNIX的发展对计算机界、尤其是对软件界产生了巨大而深刻的影响。10月,NATO的委员会又在意大利的罗马开会讨论软件开发技术问题,产生了关于“软件工程技术”的罗马报告,简称R-报告。1969年WinstonRoyce在他的《管理大型软件系统的开发》(ManagingtheDevelopmentofLargeSoftwareSystems)提出了著名的“瀑布模型”(Waterfalldevelopmentmethod)。柯特(E.F.Codd)提出关系模型为数据库技术的发展打下基础。在编程语言方面,出现了用于系统程序设计的BLISS语言,它是BasicLanguageforImplementationofSystemSoftware的缩写,用来编写编译程序和操作系统。1970年软件开发大事记瑞士联邦技术学院的NiklausWirth(尼可莱•沃斯)教授发明了第一个结构化的编程语言,并用17世纪法国著名科学家BlaisePascal(帕斯卡)的名字把它命名为Pascal语言。Pascal语言出现后,ALGOL68便销声匿迹了。这一年,Wirth教授还提出“自顶向下、逐步细化”的程序设计方法,成为从高层设计开始、贯穿整个中层设计、并延续到底层设计直到编码完成的一种重要的软件设计方法。FriedrichI.Bauer给软件工程下了个定义:“确立并使用正确的工程原理和方法,以便能够经济地获得可靠而有效的软件。”巴拿斯(DavidParnas)提出了信息隐蔽的原理,对软件工程的发展产生了巨大影响。JohnKemeny和ThomasKurtz推出BASIC第6版,使BASIC成为相当稳定的通用语言。在计算机辅助教学领域出现TUTOR语言,它在CDC6500以及Cyber系列的PLATO控制下运行。1971年软件开发大事记在编程语言方面,贝尔实验室的DennisRitchie发明了C语言。它在MartinRichards的BCPL语言和KenTbompston的B语言的基础上进行发展。最初的C语言是为编写UNIX而设计的,并在PDP-11上首先实现。法国马赛大学的AlanColmerature发明了PROLOG语言,它是用于人工智能领域的又一种编程语言,在欧洲和日本比较流行。Xerox公司的PaloAlto研究中心AlanKay(艾兰•凯)发明了Smalltalk语言。它是一种面向对象的语言,适合使用鼠标工作的可视计算机系统(Visualcomputersystem),它体现了与传统程序设计不同的观念及风格。在软件工程方面,D.Parnas进一步提出软件结构问题和Parnas分解方法。特点是分解时每个模块都隐藏着一个设计,使用这个方法能决定设计决策的层次,得到软件的结构。在计算机科学的理论方面,计算复杂性理论提出了NP问题的思想。以此表明对于某些大规模的计算问题(如旅行商问题),其计算量是极其巨大的。当年,王安等发展了字处理系统。1972年软件开发大事记在计算机辅助教学方面,加州大学的JohnA.Starkweather发明了PILOT语言。它是ProgrammedInquire,LearningOrTeaching的缩写,意为“编程查询及教学”。它的命令不多,使用简单,都是针对CAI的需要而设计,适合开发教学课件(courseware)使用。在Zerox的研究人员开展了图形用户界面的工作。1973年在计算机辅助教学方面,加州大学的JohnA.Starkweather发明了PILOT语言。它是ProgrammedInquire,LearningOrTeaching的缩写,意为“编程查询及教学”。它的命令不多,使用简单,都是针对CAI的需要而设计,适合开发教学课件(courseware)使用。在Zerox的研究人员开展了图形用户界面的工作。1974年软件开发大事记M.A.Jackson提出JSP方法,即JacksonStructuredProgramming,它是适合中小型数据处理系统进行模块结构设计的一种方法。CrayKildall创建了DigitalResearch公司,专门经销CP/M系统软件,在以后的8年里,CP/M占领了90%的8位机操作系统时常。为它开发的应用软件达2000种之多。UNIX操作系统开始从贝尔实验室走向社会,它的第六版增加了程序员工作台PWB,形成早期的编程环境。CharlesH.Moore发明了Forth语言。Forth在微机用户中拥有一小批热情的支持者,虽大多数人对它一无所知。它的准则是把计算机的机时和存储器视为宝贵的资源,必须最大限度地控制和利用这些资源。因此,Forth适合实时控制及工业机器人的编程这一年还出现了SPSS语言,它是StatisticalProgramsfortheSocialSciences的缩写,意为用于社会科学的统计程序。勃洛克(FroderickBrooks)的著作“人月的秘密”(themythicalman-month)中说明了在拖延了的项目中增加人员只会使项目更为延期。美国国防部为降低软件费用、提高嵌入式防务系统的可靠性,开展了规模宏大的统一高级语言的行动(1975年至1983年)。首先由国防部研究工程委员会建立了高级语言工作组,多次组织对语言需求的讨论。1975年软件开发大事记B.W.Boehm又对软件工程给出定义:“在软件(包括程序和文档)设计、实现、测试、运行、维护的各个过程中,建立在科学基础上的一套实用方法”。C.A.Hoare则认为软件工程是“一种导致电子数字计算机具有强大功能的艺术,这种功能表现为人可以方便地使用计算机”。在软件设计方法学方面,IBM公司的J.F.Stay提出HIPO设计方法。它建立在层次图(HC)和输入-处理-输出图(IPO)的基础上,适用于高层设计。此外,HOS公司的M.Hamilton和S.Zeldin又提出HOS设计方法。1976年软件开发大事记S.Jefferyh和T.A.Linden补充了软件工程的定义,指出“软件工程不只是一套工具和技术的集合,它是一种工程……,软件工程同一般理解的其他类型的工程相比要丰富些,软件工程师能从其他工程学科获得借鉴;反过来,软件工程当前开发的方针对其他领域的工程也是十分有用。总之,作为一门工程学科,软件工程已经到了羽翼丰满的时候。”SoftTech公司的D.T.Ross提出SADT结构化分析设计技术。11月,美国国防部高级语言工作组完成制定新语言可行性的经济分析。通过大量评审,认为现存语言都不满足对新语言的需求。同时,从投标语言中,选出四种方案:Softech的蓝色语言、SRI黄色语言、Intermetrics的红色语言、HoneywellBull的绿色语言。加州大学伯克利分校推出UNIX的1BSD版本。美国国家计算机和信息处理标准委员会(ANSC-X3)制定信息交换代码ASCII的标准X3.4-1977。与之相关的标准已有X3.32-1973(ASCII控制字符的图形)和X3.41-974(ASCII代码扩充技术)以及后来制定的X3.64-1979(使用ASCII时的附加控制)。1977年软件开发大事记美国国防部高级语言工作组把来自各国的近400名自愿者分为80个评审组,对四种候选方案进行评审。确定由红色语言和绿色语言继续竞争。1978年加州大学伯克利分校又以2BSD和UNIXV7为基础,在32位VAX上研制成具有虚拟存储讷讷公里的3BSDUNIX系统。Pascal语言的创始人Wirth在Pascal的基础上,又开发了Modula-2语言。它克服了Pascal的许多缺点,并具有了现代的模块特性。美国国防部新语言的评审中,绿色语言最后获胜。它的主要设计者是法国人JeanIchbiah。5月,新语言正式命名为Ada,以纪念对编程做过重大贡献的爱达•拉夫拉斯伯爵夫人。贝尔实验室的L.R.Rabiner等利用聚类技术开发不定人的英语识别系统。1979年8月,Microsoft公司宣布为16位的微机提供UNIX的新品种XENIX。经过长期的努力,在1980年,由美国国防部确定把ADA语言用于过程控制与嵌入式应用。1980年软件开发大事记B.W.Boehm出版了《软件工程经济学》,这一名著思想新颖、叙述生动,令人爱不释手。他提出构造费用模型(COCOMO)作为软件的估计模型。引起了软件度量的发展。同年,R.Abbott总结了面向对象的设计方法学。IBM公司推出个人计算机IBMPC,Microsoft公司的MS-DOS也同时问世。IBM公司选择PC-DOS为其新的个人计算机的操作系统。从而为BillGates的微软公司的发展开辟了道路。IBM在同年又推出IBMPC/XT。DOS升为2.0版。美国AshtonTate推出微机用的关系数据库dBASEⅡ。DBASEⅡ成为第一个PC数据库系统,得到市场广泛欢迎。AT&T公布UNIXSystemⅡ,成为第一个外部发行的版本。中国颁布了《信息交换用汉字编码字符集•基本集》,国家标准代号GB2312-80。1981年软件开发大事记SCO(Sants

CrusOperation)公司与Microsoft合作开发XENIX。JohnWarnock开发了Postscript的页面描述语言。以后,形成著名的Adobe系统。Autodesk公司推出了AutoCAD第一版。1982年王永民发明了“五笔字型”汉字输入法。AT&T公布了UNIXSystemV。伯克利分校公布了4.2BSD。ANSI批准了Ada标准。Apple公司推出用鼠标操作的图标及下拉式菜单的工作方式。贝尔实验室发展了C++语言。它原为1980年Bjarne

Stroustrup发明的“带类的C”,即增加了面向对象程序设计所需的抽象数据类型——类。直到1983年,根据RickMasetti的建议,定名为C++。1983年软件开发大事记FoxSoftware公司推出FoxBASE。Novell公司推出NetWareV1.0。10月15日,国际标准化组织ISO制定了开发系统互连参考模型OSI/RM,即ISO7498-1。它是指导信息处理系统互连、互通和协作的国际标准,是关于计算机通信系统结构的最重要的框架文件。它从逻辑上把网络分成七层。Apple公司的Micintoch使计算机图形学取得极大成功。1984年微软公司推出Windows窗口操作系统,使PC更易操作,形成DOS操作系统的一个革命性的进步。AshtonTate公司dBASEⅡPlusKemeny和Kurtz对于BASIC流行速度之快、不同方言之多、标准化进展之慢感到惊讶。他们又研制了TrueBASIC,即保持初学者易用的优点,又实现了程序的结构化。ISO国际标准化组织提出软件质量度量模型建议。该模型分高、中、低三层,各层增均有多项评价准则。1985年软件开发大事记Oracle公司推出DistributedORACLE分布式关系数据库。配有SQL,*PlusSQL,*FormSQL,*NetSQL,*CatePRO*C,Pro*FORTRAN等工具。出版了世界第一部电子图书,《美国科学院百科全书》,它的3万个图,900万字的内容就存储在一张5.25英寸的CD-ROM光盘上。在软件工程方面,WallStreetJournal一书把计算机辅助软件工程CASE的概念大大地推广开来。1986年卡内基•梅隆大学的软件工程研究所的WattsHumphrey等人发表了“软件过程成熟度框架”后来成为用于预测开发单位是否有能力生产可靠软件的“能力成熟度模型CMM”IBM和Microsoft公司合作推出OS/2操作系统,为PS/2个人系统配套。OS/2被称为32位微机的新一代操作系统。1987年软件开发大事记BarryBoehm提出了软件系统开发的“螺旋模型”,后来,该模型被认为能有效提高系统开发效率。ACM的一个工作组提出一份报告“ComputingasaDiscipline”(计算仍是一门科学)。它把计算机学科归纳为九个主题:算法与数据结构、体系结构、人工智能与机器人学、数据库与情报检索、人机通信、数值与符号计算、操作系统、编程语言、软件工程与方法学。它还包括了三种不同的处理方法:理论、抽象、设计,构成计算机学科的3×9矩阵。UNIX的标准化过程早已启动。通过了POSIXDraft13作为IEEE标准1003.1。POSIX的含义是“基于UNIX的可移植操作系统的接口与环境”。1988年美国卡内基•梅隆大学研制了SPHINX系统,使英语语音识别系统的识别率有了明显提高。1989年软件开发大事记TimBernersLee提出了关于WorldWideWeb原则,并同时给出了URLs、HTML和HTTP的概念。国际标准化组织接受了UNIX标准POSLX为国际标准ISO9945/1。微软的Windows取得极大成功。1990年IBM与Microsoft分道扬镳。DOS5.0版问世。本来,人们曾认为DOS的历史会到4.0版为止。因为已有了Windows,有了OS/2。但是Microsoft认为Windows3.0的成功说明DOS的确不赖,没有必要把它打入冷宫,如果需要,DOS6.0、DOS7.0也将会出现。Borland公司兼并了AshtonTate公司。Borland承诺将继续支持和发展dBASE系列,该公司尽力树立领导面向对象技术市场的形象。Novell公司兼并了DigitalResearch公司,于是RD的DOS和Novell产品配套出售。DR-DOS正是网络功能见长的操作系统。6月13日,中国颁布了《计算机软件保护条例》,并于同年10月1日开始实施。1991年软件开发大事记1月,Intel公司和Microsoft公司联合发表有关保持环境的APM标准。1992年伊利诺斯州大学的超级计算机应用研究中心的学生和研究人员开发了第一个基于图形界面的Internet浏览器,名为NCSAMasaic。美国白宫发表了一份长达46页的报告。阐述了克林顿政府的“NationalInformationIntfrtructure”(国家信息基础建设)发展计划。人们把NII常称为“InformationSuperHighway”(信息高速公路)。由于克林顿总统亲自挂帅,戈尔副总统具体组织,NII便如火如荼地展开。1993年Netscape公司首次推出它的浏览器。由此,在很短的时间内就培养了一群Internet的爱好者(Web冲浪者)1994年SUN公司推出Java及其集成开发环境。Java语言是基于Internet的编程语言,使得应用程序同时在不同平台运行成为可能。Microsoft公司推出WindowS95。1995年软件发展存在的问题硬件的发展一直超过软件,难以发挥硬件的潜能建造程序的能力远远不能满足人们对新程序的需求,不能满足商业和市场的要求。软件的可靠性越来越重要。软件失败,会造成巨大的经济损失,有可能带来灾难。拙劣的设计和资源的缺乏难以支持和增强已有软件。产业的观点为什么需要长时间才能结束开发?为什么成本如此之高?为什么不能在软件交付给客户之前就发现所有的错误?为什么软件开发过程中我们难以度量其进展?这种关注最终导致软件工程实践的出现老化的软件工厂软件的竞争软件技术面临的问题规模复杂性生产率

Windows95有1000万行代码Windows2000有5000万行代码Exchange2000和Windows2000开发人员结构Exchange2000Windows2000项目经理25人约250人开发人员140人约1700人测试人员350人约3200人软件危机的主要特征软件开发周期大大超过规定日期;

软件开发成本严重超标;

软件质量难于保证。改正一个问题需付出的代价需求分析结构设计详细设计编码集成测试系统测试现场改正一个问题的估计费用改正一个问题估计的工作量20200200010005.02.50.050.5(美元)(人天)yet,SuccessHasntComeEasily31%53%16%SuccessfullyChallengedCanceled

成功的标准:用户在用用户可很容易做完要做的事失败的根本原因:开发人员写出的东西达不到用户要求(人的问题.技术问题)处在十字路口的中国软件产业主权大国必须建立基于自主技术的、完整的软件产业体系。软件本国提供率:中国1/3左右,美国97%“印度模式”还是“中国模式”软件人才结构不合理,缺乏中高级软件人才,软件人员缺乏软件工程化的概念。软件工程的定义

FritzBauer在NATO会议上给出的定义:“软件工程是为了经济地获得可靠的和能在实际机器上高效运行的软件而确立和使用的好的工程原则(方法)。”软件工程的定义

IEEE【IEE83】给出的软件工程定义:“软件工程是开发、运行、维护和修复软件的系统方法。”

IEEE【IEE93】给出了一个更加综合的定义:“将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中。”

软件工程的定义

软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程。它借鉴传统工程的原则、方法,以提高质量,降低成本为目的。

软件工程的定义

软件工程是一门交叉学科软件工程的主要研究内容:软件开发技术:软件开发方法学软件开发过程软件工具和软件工程环境软件工程管理:软件管理学软件经济学软件心理学软件工程所包含的内容不是一成不变的,随着人们对软件系统的研制开发和生产的理解。应用发展的眼光看待它。软件工程—一种层次化技术工具方法过程质量焦点Softwareengineeringlayers软件工程三个要素:过程、方法、工具软件工程包括三个要素:方法、工具和过程

软件工程方法为软件开发提供了“如何做”的技术。它包括了多方面的任务,如项目计划与估算、软件系统需求分析、数据结构、系统总体结构的设计、算法的设计、编码、测试以及维护等。软件工程方法常采用某种特殊的语言或图形的表达方法及一套质量保证标准。软件工具为软件工程方法提供了自动的或半自动的软件支撑环境。如CASE、ISEE等。软件工程的过程则是将软件工程的方法和工具综合起来以达到合理、及时地进行计算机软件开发的目的。过程定义了方法使用的顺序、要求交付的文档资料、为保证质量和协调变化所需要的管理、及软件开发各个阶段完成的里程碑。软件工程就是包含上述方法、工具及过程在内的一些步骤。软件工程过程特性易理解性可见性可支持性可接受性可靠性健壮性可维护性速度软件工程的一般视图

工程是对技术(或社会)实体的分析、设计、建造、验证和管理。因此工程须回答下列问题:要解决的问题是什么?要用于解决该问题的实体具有什么特点?如何实现该实体(解决方案)?如何建造该实体?采用

温馨提示

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

评论

0/150

提交评论