1、信息工程大学学会如何在现代学会如何在现代IT企业的环境中做一个成功者;企业的环境中做一个成功者;学会如何做世界级的、高质量的研究;学会如何做世界级的、高质量的研究;学会如何创建大规模的软件产品。学会如何创建大规模的软件产品。微软全球资深副总裁微软全球资深副总裁 原微软亚洲研究院院长原微软亚洲研究院院长 首席科学家首席科学家 张亚勤张亚勤 The Challenges and Opportunities of the Global Software Industry.1.软件产业的网络化趋势软件产业的网络化趋势2.软件产业的服务化趋势软件产业的服务化趋势3.软件产业的全球化趋势软件产业的全球化趋
2、势智能网络智能网络(Intelligent Web)从静态网到动态网从静态网到动态网从被动方式到主动方式从被动方式到主动方式从呈现信息和浏览的窗从呈现信息和浏览的窗口到智能生成的平台口到智能生成的平台从从HTML到到XML The Challenges and Opportunities of the Global Software Industry.1.软件产业的网络化趋势软件产业的网络化趋势2.软件产业的服务化趋势软件产业的服务化趋势3.软件产业的全球化趋势软件产业的全球化趋势 相对目前相对目前“打打包式包式”软件,为用户软件,为用户提供智能化的提供智能化的“服务服务式式”软件。软件。Th
3、e Challenges and Opportunities of the Global Software Industry.1.软件产业的网络化趋势软件产业的网络化趋势2.软件产业的服务化趋势软件产业的服务化趋势3.软件产业的全球化趋势软件产业的全球化趋势强调开放性、交互性强调开放性、交互性支持主流的开放式标准支持主流的开放式标准人才的全球化人才的全球化对中国软件企业有什么启示和挑战?对中国软件企业有什么启示和挑战?Talent Beyond Technology _What Kind of Talent We Need for Modern Software Development扎实的基
4、础扎实的基础创新、独立的工作能力创新、独立的工作能力主人翁精神和团队精神主人翁精神和团队精神沟通与协调能力沟通与协调能力成就感强、有激情成就感强、有激情自觉地干好工作自觉地干好工作契而不舍,从错误中学习契而不舍,从错误中学习二、现代软件开发对人才的要求二、现代软件开发对人才的要求 有一次比尔有一次比尔.盖茨和上帝谈话,上帝对他说:盖茨和上帝谈话,上帝对他说:“地球明天就要毁灭了!由于你是如此的成功,因地球明天就要毁灭了!由于你是如此的成功,因此我特许你从地球上带一样东西到天堂!你想带什此我特许你从地球上带一样东西到天堂!你想带什么?么?”比尔比尔.盖茨回答:盖茨回答:“请允许我从微软选请允许我
5、从微软选300个最个最优秀的人,我要把他们带到天堂!优秀的人,我要把他们带到天堂!”尽管微软的尽管微软的windows,Exchang,SQL,Office等等都非常重要,但如果没有象你们这些人才,微软也都非常重要,但如果没有象你们这些人才,微软也将一无所有。你们对微软来说是处于第一位的。将一无所有。你们对微软来说是处于第一位的。我国复合型软件人才匮乏我国复合型软件人才匮乏,培养适应迅速培养适应迅速变化的市场需求的复合型软件人才已是迫在变化的市场需求的复合型软件人才已是迫在眉睫。眉睫。三、信息化建设中对复合型软件人才的需求三、信息化建设中对复合型软件人才的需求 复合型软件人才复合型软件人才具备
6、不同专业背景、具备不同专业背景、有市场观念的开发管理、工程管理和软件经有市场观念的开发管理、工程管理和软件经营等复合型软件人才;营等复合型软件人才;2.2.软件需求分析很困难,不管三七二十一先软件需求分析很困难,不管三七二十一先把软件做了再说,反正软件是灵活的,随把软件做了再说,反正软件是灵活的,随时可以修改。时可以修改。1.1.只要掌握了只要掌握了1-21-2门程序设计语言,进行软门程序设计语言,进行软件开发就没有问题。件开发就没有问题。总之,错误认为:软件就是程序,开发软件就是总之,错误认为:软件就是程序,开发软件就是编写程序。编写程序。3.只要有最好的开发工具、最好的计算机,只要有最好的
7、开发工具、最好的计算机,一定能做出优秀的软件。一定能做出优秀的软件。1.传统的软件工程方法传统的软件工程方法2.面向对象的建模技术面向对象的建模技术UML统一建模语言统一建模语言3.软件项目管理及软件项目管理及CMM4.软件复用及构件工程软件复用及构件工程 本课程以传统的软件工程技术为基础,主要本课程以传统的软件工程技术为基础,主要讨论如何应用软件工程的最新技术讨论如何应用软件工程的最新技术 UML统一统一建模语言进行软件开发,提高软件开发的水平和建模语言进行软件开发,提高软件开发的水平和技术。技术。实践性强、发展迅速实践性强、发展迅速2.2.课堂教学课堂教学(32学时学时)授课、案例分析、讨
8、论授课、案例分析、讨论 课程设计课程设计(需求分析、总体设计及实现及评审(需求分析、总体设计及实现及评审 共共8学时学时)3 3.关于关于考试:考试:笔试笔试:60分,课程设计分,课程设计:30分,平时分,平时:10分分作者:许家珆作者:许家珆 曾翎曾翎 彭德中彭德中出版社:高等教育出版社出版社:高等教育出版社出版日期:出版日期:2009-10配套光盘配套光盘1张张本书是教育部新世纪网络课程建设工程的子课题本书是教育部新世纪网络课程建设工程的子课题“软件工程网络课程软件工程网络课程”配套教材。其主要特色是理论配套教材。其主要特色是理论与实践密切结合,给出了与实践密切结合,给出了“软件工程课程设
9、计软件工程课程设计”的相的相关指导。关指导。Software Engineering,6th Edition作者:作者:(英)(英)Ian Sommerville出版社:机械工业出版社出版社:机械工业出版社(影印版)(影印版)本书是英国著名软件工程学家本书是英国著名软件工程学家 Ian Sommerville 系统介绍软件工程系统介绍软件工程理论的力作,以要求极高的一类系理论的力作,以要求极高的一类系统为实例,精辟透彻地阐述了软件统为实例,精辟透彻地阐述了软件工程的内涵。工程的内涵。http:/ 软件工程网软件工程网www.sei.cmu.edu 卡内基梅大学软件工程研究所卡内基梅大学软件工程
10、研究所http:/www.cetus-links.org/对象技术和构件技术对象技术和构件技术链接链接 Rational公司公司http:/www.omg.org OMG(Object Management Group)http:/ 软件工程网软件工程网www.sei.cmu.edu 卡内基梅大学软件工程研究所卡内基梅大学软件工程研究所http:/www.cetus-links.org/对象技术和构件技术对象技术和构件技术链接链接 Rational公司公司1 软件工程的发展已经历了四个重要阶段:软件工程的发展已经历了四个重要阶段:软件工程的发展已经历了四个重要阶段:软件工程的发展已经历了四个重
11、要阶段:6060年代末到年代末到7070年代为了年代为了克 服克 服“”(Software crisis)(Software crisis)提出提出“软件工程软件工程”的名词的名词,将软将软件开发纳入工程化的轨道,件开发纳入工程化的轨道,基本形成软件工程的概念、基本形成软件工程的概念、框架、技术和方法。称为框架、技术和方法。称为传传统统的软件工程的软件工程软件工程的发展已经历了四个重要阶段:软件工程的发展已经历了四个重要阶段:8080年代中到年代中到9090年代,面向对象年代,面向对象的方法与技术得到发展,研究的重的方法与技术得到发展,研究的重点转移到面向对象的分析与设计,点转移到面向对象的分
12、析与设计,演化为一种完整的软件开发方法和演化为一种完整的软件开发方法和系统的技术体系,称为对象工程。系统的技术体系,称为对象工程。软件工程的发展已经历了四个重要阶段:软件工程的发展已经历了四个重要阶段:8080年代中开始,年代中开始,人们在软件开发人们在软件开发的实践过程中认识到:提高软件生产的实践过程中认识到:提高软件生产率,保证软件质量的关键是率,保证软件质量的关键是“软件过软件过程程”,是软件开发和维护中的管理和,是软件开发和维护中的管理和支持能力,逐步形成软件过程工程。支持能力,逐步形成软件过程工程。软件工程的发展已经历了四个重要阶段:软件工程的发展已经历了四个重要阶段:90起年代,基
13、于构件(起年代,基于构件(Component)的开发方法取得重要进展,软件系统的的开发方法取得重要进展,软件系统的开发可开发可通过使用现成的可复用构件组装通过使用现成的可复用构件组装完成,而无需从头开始构造,以此达到完成,而无需从头开始构造,以此达到提高效率和质量,降低成本的目的。称提高效率和质量,降低成本的目的。称为为构件工程。构件工程。软件工程的概念软件工程的概念IEEE(1983):软件工程是开发、运行、维护和修复):软件工程是开发、运行、维护和修复软件的系统方法。软件的系统方法。(1990):对软件开发、运作、维护的系统化的、规):对软件开发、运作、维护的系统化的、规范的、可定量的方法
14、之应用,即对软件的工程化应用。范的、可定量的方法之应用,即对软件的工程化应用。(2004):以系统的、学科的、定量的途径,把工程):以系统的、学科的、定量的途径,把工程应用于软件的开发、运营和维护;同时,开展对上述应用于软件的开发、运营和维护;同时,开展对上述过程中的各种方法和途径的研究。过程中的各种方法和途径的研究。软件工程是一门指导软件系统开发的工程学科,以计软件工程是一门指导软件系统开发的工程学科,以计算机理论及其他相关学科理论为指导,采用工程化的算机理论及其他相关学科理论为指导,采用工程化的概念、原理、技术和方法进行软件的开发和维护,把概念、原理、技术和方法进行软件的开发和维护,把经过
15、实践证明的科学的管理措施与最先进的技术方法经过实践证明的科学的管理措施与最先进的技术方法结合起来。目标:以较少的投资获取高质量的软件。结合起来。目标:以较少的投资获取高质量的软件。软件工程软件工程是一门新兴的边缘学科是一门新兴的边缘学科,涉及的学科多,涉及的学科多,研究的范围广,研究的主要内容有以下几方面:研究的范围广,研究的主要内容有以下几方面:软件开发技术软件开发技术 软件管理技术软件管理技术软件工程知识体系(软件工程知识体系(SWEBOK)软件工程的基本原则:软件工程的基本原则:1、对软件需求的可变动性的适应、对软件需求的可变动性的适应2、稳妥的设计方法的方便性,软件工具与环境的、稳妥的
16、设计方法的方便性,软件工具与环境的重要性重要性3、软件项目的质量和费用取决于对它所提供支撑、软件项目的质量和费用取决于对它所提供支撑环境、工具、开发过程、技术的质量和效用环境、工具、开发过程、技术的质量和效用4、强调对软件过程的有效管理。、强调对软件过程的有效管理。软件软件=程序(系统、应用)程序(系统、应用)+文档(用户、开发者)文档(用户、开发者)特点:特点:1、逻辑实体,非物理实体、逻辑实体,非物理实体2、生产过程为研制、生产过程为研制3、复杂性,受计算机系统限制、复杂性,受计算机系统限制4、成本昂贵、成本昂贵5、不存在磨损和老化问题,存在退化问题、不存在磨损和老化问题,存在退化问题失效
17、率曲线失效率曲线开发开发时期时期运行运行时期时期计划计划时期时期(目标与范围说明书目标与范围说明书)(可行性论证论告可行性论证论告)(维护报告维护报告)(测试报告测试报告)(程序程序)(设计文档设计文档)(需求说明书需求说明书)瀑布模型是指在软件工具的支持下,所进行的一系列软是指在软件工具的支持下,所进行的一系列软件开发和进化的活动。件开发和进化的活动。通常包括以下四类基本过程:通常包括以下四类基本过程:1 1、软件规格说明:、软件规格说明:规定软件的功能及其运行环境。规定软件的功能及其运行环境。2 2、软件开发:、软件开发:产生满足规格说明的软件。产生满足规格说明的软件。3 3、软件确认:、
18、软件确认:确认软件能够完成客户提出的要求。确认软件能够完成客户提出的要求。4 4、软件演进:、软件演进:为满足客户的变更要求,软件必须在为满足客户的变更要求,软件必须在使用的过程中演进。使用的过程中演进。软件工程过程软件工程过程(Software engineering process)软件工程过程软件工程过程(Software engineering process)工具工具和设备和设备有技能经过培有技能经过培训的开发人员训的开发人员软件过程模型是描述软件开发过程中各种活动如软件过程模型是描述软件开发过程中各种活动如何执行的模型。因此又称为何执行的模型。因此又称为软件开发模型软件开发模型。软
19、件过程模型是对软件开发实际过程的抽象和软件过程模型是对软件开发实际过程的抽象和简化。简化。目前典型的软件开发模型有:目前典型的软件开发模型有:瀑布模型、增量模型、螺旋模型、喷泉模型、瀑布模型、增量模型、螺旋模型、喷泉模型、循环模型和基于知识的模型等。循环模型和基于知识的模型等。不同的开发方法有不同的软件过程模型。不同的开发方法有不同的软件过程模型。开发开发时期时期运行运行时期时期计划计划时期时期(目标与范围说明书目标与范围说明书)(可行性论证论告可行性论证论告)(维护报告维护报告)(测试报告测试报告)(程序程序)(设计文档设计文档)(需求说明书需求说明书)瀑布模型增量模型是一种非整体开发的模型
20、。是一种进增量模型是一种非整体开发的模型。是一种进化式的开发过程。化式的开发过程。根据增量的方式和形式的不同,分为:根据增量的方式和形式的不同,分为:基于瀑布模型的渐增模型基于瀑布模型的渐增模型基于原型的快速原型模型基于原型的快速原型模型该模型具有较大的灵活性,适合于软件需求不该模型具有较大的灵活性,适合于软件需求不明确、设计方案有一定风险的软件项目。明确、设计方案有一定风险的软件项目。对大型软件对大型软件,需要多个原型描述系统的生存期,需要多个原型描述系统的生存期,螺旋模螺旋模型将瀑布模型与原型化模型结合起来型将瀑布模型与原型化模型结合起来,并加入了风险分析。并加入了风险分析。螺旋模型 螺旋
21、模型将开发过程螺旋模型将开发过程分为几个螺旋周期,每分为几个螺旋周期,每个螺旋周期可分为个螺旋周期可分为4 4个工个工作步骤:作步骤:第一,确定目标、方案第一,确定目标、方案和限制条件;和限制条件;第二,评估方案、标识第二,评估方案、标识风险和解决风险;风险和解决风险;第三,开发确认产品;第三,开发确认产品;第四,计划下一周期工第四,计划下一周期工作。作。分分 析析系统系统 设计设计软件软件 设计设计实实 现现喷泉模型该模型是由该模型是由B.H.Sollers和和J.M.Edwards于于1990年提出的年提出的一种新的开发模型。它克服了瀑布模型不支持软件重用和一种新的开发模型。它克服了瀑布模
22、型不支持软件重用和多项开发活动集成的局限性,喷泉模型使开发过程具有迭多项开发活动集成的局限性,喷泉模型使开发过程具有迭代性和无间隙性。代性和无间隙性。其特点如下:其特点如下:.开发过程有分析、系统设计、软件开发过程有分析、系统设计、软件设计和实现设计和实现4个阶段。个阶段。.各阶段相互重叠,它反映了软件过各阶段相互重叠,它反映了软件过程并行性的特点。程并行性的特点。.以分析为基础,资源消耗成塔型。以分析为基础,资源消耗成塔型。.反映了软件过程迭代性的自然特性,反映了软件过程迭代性的自然特性,从高层返回低层无资源消耗。从高层返回低层无资源消耗。.强调增量开发,整个过程是一个迭强调增量开发,整个过
23、程是一个迭代的逐步提炼的过程。代的逐步提炼的过程。需求分析需求分析设计设计编码编码测试测试运行运行评价评价计划计划循环模型获取需求获取需求需求分析需求分析具体描述具体描述优化优化程序程序调整调整验证验证维护维护知识库知识库专家系统专家系统程序程序 也称为基于知识的软件开发模型,是知识工程也称为基于知识的软件开发模型,是知识工程与软件工程相结合的软件开发模型。与软件工程相结合的软件开发模型。智能模型软件开发的目标是要在规定的投资和时间内,软件开发的目标是要在规定的投资和时间内,开发出符合用户的需求,高质量的软件,为此需开发出符合用户的需求,高质量的软件,为此需要有成功的开发方法。要有成功的开发方
24、法。面向过程的开发方法面向过程的开发方法 面向对象的开发方法面向对象的开发方法是现有的软件开发方法中最成熟,应用最广泛的是现有的软件开发方法中最成熟,应用最广泛的方法,主要特点是快速,自然和方便。方法,主要特点是快速,自然和方便。结构化方法总的指导思想自顶向下、逐步求精。结构化方法总的指导思想自顶向下、逐步求精。它的基本原则是功能的分解与抽象。它的基本原则是功能的分解与抽象。结构化程序设计方法结构化程序设计方法 SP法(法(Structured Program)结构化设计结构化设计方法方法 SD法(法(Structured Design)结构化分析方法结构化分析方法 SA法(法(Structu
25、red Analysis)SA,SD,SP 法相互衔接,形成了法相互衔接,形成了一整套开发一整套开发方法。方法。什么是原型化方法什么是原型化方法原型原型是软件的一个早期是软件的一个早期的版本,它的版本,它反映了最终系统的部分重要特性。反映了最终系统的部分重要特性。原型化方法的基本思想是花费少量代价建立一原型化方法的基本思想是花费少量代价建立一个可运行的系统,使用户及早获得学习的机会。个可运行的系统,使用户及早获得学习的机会。原 型 化 方 法 又 称 速 成 原 型 法(原 型 化 方 法 又 称 速 成 原 型 法(R a p i d Prototyping)。)。1、废弃(、废弃(thro
26、w away)型)型)快速建)快速建立需求规格原型。立需求规格原型。2、追加(、追加(add on)型)型法。采用循环渐进的开发方式,对系统模法。采用循环渐进的开发方式,对系统模型作连续精化。型作连续精化。YYNNYN细化的快速原型模型图2 细化的快速原型模型快速分析或修改快速分析或修改评价评价构造构造运运 行行OOSD(Object-Oriented Software Development)是)是80年代推出的一种年代推出的一种全新的软件开发方法。非常实用而强有力,被誉全新的软件开发方法。非常实用而强有力,被誉为为90年代软件的核心技术之一。年代软件的核心技术之一。其基本思想是:其基本思想
27、是:对问题领域进行自然的分割,对问题领域进行自然的分割,以更接近人类通常思维的方式建立问题领域的模以更接近人类通常思维的方式建立问题领域的模型,以便对客观的信息实体进行结构和行为的模型,以便对客观的信息实体进行结构和行为的模拟,从而使设计的软件更直接地表现问题的求解拟,从而使设计的软件更直接地表现问题的求解过程。面向对象的开发方法以对象作为最基本的过程。面向对象的开发方法以对象作为最基本的元素,是分析和解决问题的核心。元素,是分析和解决问题的核心。OOSD由三部分组成:由三部分组成:OOA(Object-Oriented Analysis)面向对象的分析面向对象的分析 OOD(Object-O
28、riented Design)面向对象的设计面向对象的设计 OOP(Object-Oriented Program)面向对象的程序设计面向对象的程序设计OOAOOA强调的是对一个系统中的对象特征和行强调的是对一个系统中的对象特征和行为的定义。建立系统的三类模型。为的定义。建立系统的三类模型。OODOODOOD与与OOAOOA密切配合顺序实现对现实世界的进密切配合顺序实现对现实世界的进一步建模。一步建模。OOPOOPOOP是面向对象的技术中发展最快的,使用是面向对象的技术中发展最快的,使用面向对象的程序设计语言,进行编码。面向对象的程序设计语言,进行编码。面向对象的方法的代表性成果有:面向对象的
29、方法的代表性成果有:1.B.Henderson-sellers 和和 J.m.Edwards提出的面向对象软件提出的面向对象软件生存期喷泉模型及面向对象的系统开发方法。生存期喷泉模型及面向对象的系统开发方法。2.G.Booch提出的面向对象的开发方法。提出的面向对象的开发方法。3.P.Coad和和E.Yourd提出的提出的OOA和和OOD法。法。4.J.Rumbaugh等人提出的对象建模技术等人提出的对象建模技术(OMT)。5.Jacobson 提出的面向对象的软件工程提出的面向对象的软件工程(OOSE)。6.G.booch J.Rumbough Jacobson等人在等人在Booch方法、方
30、法、OMT和和OOSE的基础上推出了统一建模语言的基础上推出了统一建模语言UML。为支持软件开发、维护、管理而研制的计算机程序系统称为软件工具 工具、工具接口和用户接口 计算机辅助软件工程(CASE)发展阶段:阶段化的分散工具;软件开发环境 软件开发环境:工具集+集成机制(支持用户软件的开发、维护及管理,包括环境信息库、过程控制及环境用户界面)IBM公司的公司的 OS/360OS/360,共约,共约100100万条指令,花费了万条指令,花费了50005000个人个人年;经费达数亿美圆,而结果却令人沮丧,错误多达年;经费达数亿美圆,而结果却令人沮丧,错误多达20002000个以个以上,系统根本无
31、法正常运行。上,系统根本无法正常运行。OS/360OS/360系统的负责人系统的负责人BrooksBrooks这这样描述开发过程的困难和混乱:样描述开发过程的困难和混乱:“像巨兽在泥潭中作垂死挣像巨兽在泥潭中作垂死挣扎,挣扎得越猛,泥浆就沾得越多,最后没有一个野兽能够逃扎,挣扎得越猛,泥浆就沾得越多,最后没有一个野兽能够逃脱淹没在泥潭中的命运。脱淹没在泥潭中的命运。”软件危机“软件危机软件危机”(Software crisis)的出现是由于的出现是由于软件的规模越来越大,复杂度不断增加,软件需求软件的规模越来越大,复杂度不断增加,软件需求量增大。而软件开发过程是一种高密集度的脑力劳量增大。而软件开发过程是一种高密集度的脑力劳动,软件开发的模式及技术不能适应软件发展的需动,软件开发的模式及技术不能适应软件发展的需要。致使大量质量低劣的软件涌向市场,有的花费要。致使大量质量低劣的软件涌向市场,有的花费大量人力财力,而在开发过程中就夭折。大量人力财力,而在开发过程中就夭折。“软件危机软件危机”主要表现在两个方面:主要表现在两个方面:(1)(1)软件产品质量低劣,甚至开发过程就夭折。软件产品质量低劣,甚至开发过程就夭折。(2)(2)软件生产率低,不能满足需要。软件生产率低,不能满足需要。
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。