720 likes | 833 Vues
软件工程新技术 对软件产业发展的影响. 乔布斯的贡献 定义了 PC 产业的轨迹 实践了人文科技产业(科技与文化的融合). 乔布斯精神内涵: 让科技简化生活,让产品美化生活,让人文与科技融合,让人生追求卓越,让世界与众不同。. 乔布斯堪比成就电核时代的爱因斯坦 + 爱迪生 因为在他定义了 PC 产业轨迹的同时,也让计算资源化,让科技回归了人文。. 一、软件与软件工程 二、软件工程技术 1. 对象与建模 2. 改进与成熟度
E N D
软件工程新技术 对软件产业发展的影响
乔布斯的贡献 • 定义了PC产业的轨迹 • 实践了人文科技产业(科技与文化的融合) 乔布斯精神内涵: • 让科技简化生活,让产品美化生活,让人文与科技融合,让人生追求卓越,让世界与众不同。
乔布斯堪比成就电核时代的爱因斯坦+爱迪生 因为在他定义了PC产业轨迹的同时,也让计算资源化,让科技回归了人文。
一、软件与软件工程 二、软件工程技术 1. 对象与建模 2. 改进与成熟度 3. 构件和软件重用 4. 模式与架构 5. 中间件 三、产业趋势与技术影响 云与云端:虚拟技术 开源与协作共享 组织化、媒体化、生态化 四、结论 目 录
承载当代文化的 软件载体 临界的工科 硅片:40年 陶瓷:千年 历史变迁 好莱坞 与:80年 迪士尼、功夫熊猫 丝绸:千年
软件 • 一、软件与软件工程 在计算机与网络环境中,受逻辑、工程和使用目的约束的、可借助计算机进行处理的逻辑化、代码化文学艺术作品。 客观世界中问题空间与解空间的具体描述,它追求的是表达能力强、更符合人类思维模式,具有构造性和易演化性的计算模型。
软件工程 • 软件工程是为了经济地获得能够在实际机器上高效运行的可靠软件而建立和使用的一系列好的工程化原则[Bauer 1972]。 • 软件工程是以工程的形式应用计算机科学和数学原理,从而经济有效地解决软件问题[CMU/SEI-90-TR-003]。 • 软件工程是将系统性的、规范化的、可定量的方法应用于软件的开发、运行和维护[IEEE 1990]。
一、软件与软件工程 • IEEE-CS/ACM
软件工程知识体系(SWEBOK) • 软件需求 • 软件设计 • 软件构造 • 软件维护 • 软件测试 • 基本概念 • 维护过程 • 关键问题 • 维护技术 • 软件工具 • 软件方法 • 组织管理 • 过程/项目管理 • 软件工程度量 • 需求工程过程 • 需求获取 • 需求分析 • 需求规格说明 • 需求验证 • 需求管理 • 降低复杂性 • 预知多样性 • 结构化验证 • 使用外部标准 • 软件配置管理 • 软件工程管理 • 软件工程过程 • 软件工程工具与方法 • 软件质量 • 基本概念 • 关键问题 • 结构与体系结构 • 质量分析与评价 • 设计符号 • 策略与方法 • 基本概念和定义 • 测试级别 • 测试技术 • 测试相关度量 • 测试过程管理 • 软件过程概念 • 过程基础设施 • 过程度量 • 过程定义 • 定性过程分析 • 过程实施与变更 • 软件质量概念 • SQA和V&V目的与计划 • SQA和V&V活动与技术 • 适用于SQA和V&V的度量 • 配置过程管理 • 配置标识 • 配置控制 • 配置状态报告 • 配置审计 • 软件发布管理与交付
二、IT产业与软件产业 • 2011年GDP 30万亿 • 2010年电子信息7.8万亿 • 软件1万亿
IT产业与软件产业 • 软件
IT产业与软件产业 美国 硬件:软件=3:7 中国 硬件:软件=88:12
IT产业与软件产业 中国软件规模(2010年超过1万亿人民币) IBM(800亿美金)+微软(600亿美金) 美国软件:中国软件=10:1 中国2万家(180万人) IBM/微软是几万和几十万人
IT产业与软件产业 便捷能源化 传统科技 IT:物质 抽象化、泛艺术化 人文化科技典范 软件:精神 文化
二、软件工程技术:面向对象与统一建模语言 四十年代 Assembly 五十年代 Fortran(计算) 六十年代 Cobol (商业)七十年代 C (系统) 八十年代 C++ (任务) 九十年代 Java (分布) ◇ 面向对象(Object-Oriented)方法形成最初是从面向对象程序设计语言开始的。 ◇ 第一个OO语言是20世纪60年代末挪威奥斯陆大学和挪威计算中心共同研制的Simula。 ◇ 到20世纪80年代中期,OO语言达数十种之多。
二、软件工程技术:面向对象与统一建模语言 ◇ 面向对象(Object-Oriented)方法形成最初是从面向对象程序设计语言开始的。 ◇ 第一个OO语言是20世纪60年代末挪威奥斯陆大学和挪威计算中心共同研制的Simula。 ◇ 到20世纪80年代中期,OO语言达数十种之多。
二、软件工程技术:面向对象与统一建模语言 ◇ 一些专家按照OO思想,对系统分析和设计工作的步骤、方法、图形工具等进行了详细的研究,提出了许多不同的实施方案。 ◇ 比较著名和流行的有Coad/Yourdon方法、Booch方法和Rumbaugh的OMT方法。 ◇ OMT方法把分析时收集的信息构造在三类模型中,即对象模型、功能模型和动态模型。
二、软件工程技术:面向对象与统一建模语言 • 对象模型是三个模型中最关键的一个模型,它的作用是描述系统的静态结构,包括构成系统的类和对象,它们的属性和操作,及它们之间的关系。
二、软件工程技术:面向对象与统一建模语言 • 动态模型由多个状态图组成。
二、软件工程技术:面向对象与统一建模语言 功能模型由多个数据流图组成,它们指明从外部输入,通过操作和内部存储,直到外部输出,这整个的数据流情况。
二、软件工程技术:面向对象与统一建模语言 ◇ UML(Unified Modeling Language)是下面这些最好的建模方法中最好部分的集成: • 数据建模的概念(E-R模型) • 商务流程模型(Work Flow) • 对象建模方法 • 软构件建模思想 ◇ UML是一种用可视化方法对软件系统进行描述、实施和说明的标准语言。 ◇ 支持用不同实现技术进行的软件开发全过程。
二、软件工程技术:面向对象与统一建模语言 • UML的历史
二、软件工程技术:软件过程改进与 能力成熟度模型 ◇ 软件过程(Software Process)是人们建立、维护和进化软件产品整个过程中所有技术活动和管理活动的集合。 ◇ 从1984年起每年有软件过程国际研讨会(ISPW),从1991年起开始召开软件过程国际会议(ICSP),每个国家几乎都有自己的软件过程改进网络(SPIN)。 ◇ 主要研究方向:软件过程分析和建模、软件过程支持、软件过程评估和改进。
二、软件工程技术:软件过程改进与 能力成熟度模型 ◇ RUP软件过程 ◇ XP软件过程 ◇ 敏捷软件过程 ◇ CMM软件过程 ◇ PSP个体软件过程 ◇ TSP群组软件过程
二、软件工程技术:软件过程改进与 能力成熟度模型 基于RUP的软件过程 ◇ Rational Unified Process(RUP)是Rational公司的一个软件过程产品,其初始版本为5.0,先后经历了5.1、5.1.1、5.5等版本直到最新的Rational Unified Process 2000版本。 ◇ RUP将项目管理、商业建模、分析与设计等统一起来,贯穿整个开发过程。 ◇ RUP采用Internet技术,可以增强团队的开发效率,并为所有成员提供最佳的软件实现方案。
二、软件工程技术:软件过程改进与 能力成熟度模型 基于RUP的软件过程
二、软件工程技术:软件过程改进与 能力成熟度模型 基于XP的软件过程 ◇ Kent Beck于1997年在《Extreme Programming Explained – Embrace Change》中提出 ◇ 一种高度动态的过程,它通过非常短的迭代周期来应对软件开发中的变化 ◇ 强调有效测试和演化设计
二、软件工程技术:软件过程改进与 能力成熟度模型 基于XP的软件过程 什么时候需要XP? ◇ 需求不明确、变化快 ◇ 高风险:在特定的时间内,面对一个相当难开发的系统 ◇ 中小型团队(人数不超过10 个)
二、软件工程技术:软件过程改进与 能力成熟度模型 基于XP的软件过程 XP的计划反馈循环
二、软件工程技术:软件过程改进与 能力成熟度模型 敏捷软件过程 ◇ 敏捷(agility)软件过程是Aoyama在1998年提出来的。 ◇基于时间的、并行的、分布的、演化的快速软件开发过程。
二、软件工程技术:软件过程改进与 能力成熟度模型 软件能力成熟度模型(SW-CMM) ◇80年代,在美国国防部资助下,由卡内基梅隆大学软件工程研究所(CMU/SEI)建立,用于评价软件开发组织的软件过程能力成熟度。1991年,CMM1.0版;1993年,CMM 1.1版 ◇ 软件过程能力:遵循一个软件过程后能够得到的预期结果的界限范围。该指标是对能力的一种衡量,用它可以预测一个组织在承接下一个软件项目时,所能期望得到的最可能的结果。
二、软件工程技术:软件过程改进与 能力成熟度模型 • 成 • 熟 • 度 • 优 化 级 • 已 管 理 级 • 风 • 险 • 已 定 义 级 • 可 重 复 级 • 初 始 级 软件能力成熟度模型(SW-CMM)
二、软件工程技术:软件过程改进与 能力成熟度模型 • 不断改进的过程 • 可预测的过程 • 优 化 级 • 标准一致的过程 • 已 管 理 级 • 纪律化的过程 • 已 定 义 级 • 可 重 复 级 • 初 始 级 软件能力成熟度模型(SW-CMM)
二、软件工程技术:软件过程改进与 能力成熟度模型 个体软件过程(PSP) ◇ PSP是一种可用于控制、管理和改进个人工作方式的自我持续改进过程,是一个包括软件开发表格、指南和规程的结构化框架。 ◇PSP与具体的技术(程序设计语言、工具或者设计方法)相对独立,其原则能够应用到几乎任何的软件工程任务之中。
二、软件工程技术:软件过程改进与 能力成熟度模型 群组软件过程(TSP) ◇ 指导项目组中的成员如何有效地规划和管理所面临的项目开发任务。 ◇ 告诉管理人员如何指导软件开发队伍始终以最佳状态来完成工作。 ◇ TSP实施集体管理与自已管理自己相结合的原则,最终目的在于指导一切人员如何在最少的时间内,以预定的费用生产出高质量的软件产品。
二、软件工程技术:软件过程改进与 能力成熟度模型 CMM/PSP/TSP
二、软件工程技术:软件过程改进与 能力成熟度模型 集成化过程改进(CMMI) ◇ 工程系统越来越复杂 ◇ 执行工程的方式发生了变化 ◇ 各种模型之间的不协调
二、软件工程技术:软件过程改进与 能力成熟度模型 集成化过程改进(CMMI) • ◇ CMMI是由美国产业界、政府和CMU/SEI共同主持的项目,于1998年启动,2002年1月11日正式发布CMMI 1.1版。 • ◇ CMMI参照CMM模型,也是分成五个等级。
二、软件工程技术:构件与软件重用 ◇ 软件重用是指在两次或多次不同的软件开发过程中重复使用相同或相似软件元素的过程。软件元素包括程序代码、测试用例、设计文档、设计过程、需要分析文档甚至领域知识。通常将这些软件元素称为软构件。 ◇ 简单地说,构件是具有一定的功能,能够独立工作或能同其它构件装配起来协调工作的程序体,构件的使用同他的开发、生产无关。
二、软件工程技术:构件与软件重用 • ◇ 横向重用是指重用不同应用领域中的软件元素,例如数据结构、分类算法、人机界面构件等。标准函数库是一种典型的、原始的横向重用机制。 • ◇ 纵向重用是指在一类具有较多公共性的应用领域之间进行软部件重用。
二、软件工程技术:构件与软件重用 • ◇ 降低费用、提高复用性、提高可定制性和适应性、提高可维护性。 • ◇ 至今, 构件技术已形成三个流派:Sun的Java平台、Microsoft的COM+、IBM的CORBA。
二、软件工程技术:模式与构架 ◇ 软件体系结构(Software architecture)的定义: 1997年,Bass,Clements etc.《使用软件体系结构》:一个程序或计算机系统的软件体系结构包括一个或一组软件部件、软件部件的外部的可见特性及其相互关系。 ◇ 定义了软件部件;一个系统可以包括多于一个结构;系统可看作是由软件部件及其相互关系组成;每一部件的行为都是体系结构的一部分;基本单位是部件。
二、软件工程技术:模式与构架 • 客户机/服务器模式 ◇ Client/Server (客户机/服务器)结构,是基于资源不对等,且为实现共享而提出来的,是20世纪90年代成熟起来的技术。 ◇ C/S结构将应用一分为二,服务器(后台)负责数据管理,客户机(前台)完成与用户的交互任务。 ◇C/S 体系结构具有强大的数据操作和事务处理能力,模型思想简单,易于人们理解和接受。
二、软件工程技术:模式与构架 • 客户机/服务器模式 ◇ 开发成本较高。C/S 体系结构对客户端软硬件配置要求较高,增加了整个系统的成本。 ◇ 客户端程序设计复杂。大部分工作量放在客户端的程序设计上,客户端显得十分庞大。 ◇软件移植困难。采用不同开发工具或平台开发的软件,一般互不兼容,不能或很难移植到其它平台上运行。 ◇ 软件维护和升级困难。对软件的一个小小改动,每一个客户端都必须更新。
二、软件工程技术:模式与构架 • 浏览器/服务器模式 ◇ Browser/Server(浏览器/服务器)结构是随着Internet技术的兴起,对C/S体系结构的一种变化或者改进的结构。 ◇ 在B/S体系结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现。 ◇ 节约了开发成本,系统安装、修改和维护全在服务器端解决。真正达到了“零客户端”的功能,很容易在运行时自动升级。
二、软件工程技术:模式与构架 • 浏览器/服务器模式 ◇ B/S体系结构缺乏对动态页面的支持能力,没有集成有效的数据库处理功能。 ◇ B/S体系结构的系统扩展能力差,安全性难以控制。 ◇ 在数据查询等响应速度上,要远远地低于C/S体系结构。 ◇数据提交一般以页面为单位,数据的动态交互性不强,不利于在线事务处理(OLTP)应用。