资源描述
软件工程发展史及发展趋势
一: 软件工程定义
软件工程是一门研究用工程化方法构建和维护有效、 实用和高质量软件学科。它包含到程序设计语言、 数据库、 软件开发工具、 系统平台、 标准、 设计模式等方面。在现代社会中, 软件应用于多个方面。经典软件有电子邮件、 嵌入式系统、 人机界面、 办公套件、 操作系统、 编译器、 数据库、 游戏等。同时, 各个行业几乎都有计算机软件应用, 如工业、 农业、 银行、 航空、 政府部门等。这些应用促进了经济和社会发展, 也提升了工作和生活效率
二: 软件工程发展历史
伴随人类发展, 计算机作为第三次科技革命关键代表产品, 极大推进了人类社会发展。与此同时, 软件作为现代计算机关键支撑部分, 伴伴随计算机发展不停发展。
早在20世纪50年代, 相关软件编程语言就已经出现, 不过相关软件工程这个概念却要远远晚于软件发展。据资料显示, 软件工程这个概念最早出现在20世纪60年代末期。在软件工程发展半个多世纪内, 软件工程所使用程序语言不停发展, 而且有相关软件四六七零零四零二二号码论文写作工程模型不停发展, 从最早瀑布模型到现在光为人所知云计算, 软件工程几乎每隔5-就会取得一次突破性发展, 而且相关软件语言从最早面向程序结构转向为面向对象, 极大提升了软件编程效率。现在, 软件工程经过50多年发展, 已经深入到社会生活各个层面, 能够说, 现代社会生活, 几乎在每一个方面都包含到软件工程。 1.软件工程开发过程
软件是由计算机程序和程序设计概念发展演化而来, 是在程序和程序设计发展到一定规模而且逐步商品化过程中形成。软件开发经历了程序设计阶段、 软件设计阶段和软件工程阶段演变过程。 程序设计阶段
程序设计阶段出现在1946年~1955年。此阶段特点是: 尚无软件概念, 程序设计关键围绕硬件进行开发, 规模很小, 工具简单, 无明确分工(开发者和用户), 程序设计追求节省空间和编程技巧, 无文档资料(除程序清单外), 关键用于科学计算。 软件设计阶段
软件设计阶段出现在1956年~1970年。此阶段特点是: 硬件环境相对稳定, 出现了“软件作坊”开发组织形式。开始广泛使用产品软件(可购置), 从而建立了软件概念。伴随计算机技术发展和计算机应用日益普及, 软件系统规模越来越庞大, 高级编程语言层出不穷, 应用领域不停拓宽, 开发者和用户有了明确分工, 社会对软件需求量剧增。但软件开发技术没有重大突破, 软件产品质量不高, 生产效率低下, 从而造成了“软件危机”产生。 软件工程阶段
自1970年起, 软件开发进入了软件工程阶段。因为“软件危机”产生, 迫使大家不得不研究、 改变软件开发技术手段和管理方法。以后软件产生进入了软件工程时代。此阶段特定是: 硬件已向巨型化、 微型化、 网络化和智能化四个方向发展, 数据库技术已成熟并广泛应用, 第三代、 第四代语言出现; 第一代软件技术: 结构化程序设计在数值计算领域取得优异成绩; 第二代软件技术: 软件测试技术、 方法、 原理用于软件生产过程; 第三代软件技术: 处理需求定义技术用于软件需求分析和描述。 2.软件工程各个阶段
面向对象软件工程(OOSE)
自从1985年首次提出面向对象概念以来, 面向对象技术作为一个全新软件开发方法开始在软件工程领域越来越被广泛使用。80年代末90年代初, 面向对象软件工程方法展现百花齐放、 百家争鸣局面。其中, 引人注意是Booch、 Rumbaugh和Jacobson为代表三种面向对象技术。这三种关键面向对象方法各有优缺点, 而期望采取面向对象方法用户并不深知这些方法优缺点及相互之间差异, 所以极难依据应用特点选择适宜建模方法和建模语言。于是, 出现了UML。面向对象技术在软件工程领域全方面应用即是面向对象软件工程方法。它包含面向对象分析(OOA)、 面向对象设计(OOD)、 面向对象编程(OOP)、 面向对象测试(OOT)和面向对象软件维护(OOSM)等关键内容。面向对象分析和设计建模技术是面向对象软件工程方法关键组成部分。
OOA 基础任务是针对问题域和系统责任, 利用OO方法, 建立一个反应问题域OOA模型, 不考虑与系统实现相关原因(包含编程语言、 图形用户界面、 数据库等等), 从而使OOA模型独立于具体实现。
OOD基础任务是依据已确立系统对象模型, 利用面向对象技术, 进行系统软件设计。其中包含两方面工作: 一是把OOA模型直接搬到OOD, 做为OOD一个部分; 二是针对具体实现中人机界面、 数据存放、 任务管理等原因补充部分与实现相关部分。这些部分与OOA采取相同表示法和模型结构。从OOA到OOD不存在转换, 只有很局部修改或调整, 并增加多个与实现相关独立部分。OOA与OOD工作是连续、 无缝, 许可有一定相交, 也许可从OOD返回到OOA。
OOP工作就是用同一个面向对象编程语言把OOD模型中每个成份书写出来。 OOT即是对于用OO技术开发软件, 在测试过程中继续利用OO 概念和标准, 进行以对象概念为中心软件测试。
OOSM。面向对象软件工程方法为改善软件维护提供了有效路径。程序与问题域一致, 各个阶段表示一致, 从而大大降低了了解难度; 系统中最轻易改变原因(功效)作为对象服务封装在对象内部, 对象封装性使一个对象修改对其她影响很小, 从而避免了波动效应。
OOSE可很好描述系统与其用户之间信息交换机制, 即用于向软件系统提出需求后, 软件系统完成这项需求过程。OOSE方法遵照瀑布式软件开发过程, 首先是描述与系统交互相关用户视图, 然后建立分析模型, 最终结构过程则完成交互设计、 实现和测试。
OOSE方法最大特点是面向用例。用例(use case)代表一些用户可见功效, 实现一个具体用户目标。用例代表一类功效而不是使用该功效某一具体实例。用例是正确描述需求关键工具, 贯穿于整个软件开发过程, 包含对系统测试和验证过程。 基于组件软件工程(CBSE)
怎样愈加好地实现软件重用一直是软件工程关键研究课题。OO技术出现是软件开发技术巨大进步, 但怎样实现大粒度重用以提升软件可维护性和可扩展性仍是一个难题, CBSE发展从根本上处理这一问题: 因为COM/DCOM、 JavaBeans/EJB等组件标准出现, CBSE趋向实用。1990年开始在基于面向对象技术基础上发展了组件技术, 它丰富了重用手段和方法, 逐步成为研究热点。组件(Component)是可用来组成软件系统即插即用(plug and play)软件成份, 是能够独立地制造、 分发、 销售、 装配二进制软件单元。CBSE是指用装配可重用软件组件方法来结构应用程序。它包含了系统分析、 结构、 维护和扩展各个方面, 在这些方面中都是以组件方法为关键。 面向服务软件工程(SOSE)
面对市场需求快速改变, 要求企业系统含有灵敏服务、 快速重构、 资源重用及自由扩充等特点。这么就应运而生了面向服务架构(Service Oriented Architecture, SOA)。
它定义了组成系统服务, 经过描述服务之间交互提供特定功效特征, 而且将服务映射为具体某种实现技术。SOA关键概念是服务, 即把软件一些功效独立出来, 使之能独立运行, 而且在逻辑关系上和运行应用系统成为一个层次。它接收来自全部授权对象请求, 使得服务能够同时为多个应用程序提供相同功效, 大大增大软件复用程度, 降低开发和维护成本。一个服务是服务提供者为实现服务请求而实施一个工作单元(应用程序), 是部分良定义操作, 也就是说, 一个服务实现了一个应用功效, 它是一个粗粒度、 可发觉软件实体, 经过一组松散耦合和基于消息模型与其它应用或服务交互。
三: 软件工程未来发展趋势
1.需求工程, 渐成热点: 专业化角色, 日益复杂业务创新, 全球分布团体以及互联网级交付速度, 这些都对需求获取正确性和有效性提出了更高要求; 我估计需求工程研究和实施会成为近期热点, 其中Use Case技术会被更广泛而正确应用, 而相关工具研发也会成为热点(如IBM Rational RequiementsComposer、 Ravenflow等)。 用例优势在于它天生是黑盒, 它用自然语言抽象了用户和目标系统交互, 避免了混入分析、 设计和实现细节, 以确保用例能够被不懂具体技术业务及测试人员所真正了解。 2. DSSA和MDD, 老树新花(基于领域构架[DSSA]与模型驱动开发[MDD]): 伴随软件应用日益普及, 软件已经超出了将手动步骤自动化范围, 而开始成为业务创新关键推进力。所以, 引入捕捉特定领域内最优异需求及其实现架构DSSA成为行业用户热点之一。而且, DSSA引入将MDD门槛大大降低了, 也使基于DSSAMDD支撑工具成为可能, 从而能够极大地提升开发效率并确保软件质量(比如, 。]elelogicRhapsody就是一个成功基于实时嵌入式系统构架MDD工具)。
3.迭代/灵敏, 渐成标准: 伴随软件交付周期日益加紧, 迭代化开发已经成为大多数软件开发团体必选项。不过迭代对整个团体需求、 架构、 协同及测试能力都提出了更高要求, 现在很多开发团体都在试图导入迭代化开发过程中, 灵敏能够是被看成迭代化开发一个导入方法, 只不过灵敏范围其实比迭代化开发更大部分。
4.连续集成, 蓄势待发: 连续集成是确保迭代化开发质量关键方法, 经过连续集成能够利用自动化方法来尽可能自动地、 尽早确保代码质量。伴随迭代和灵敏流行, 连续集成相关工具成为现在市场上新热点(如连续集成框架IBM Rational BuildForge, 开源软件CruiseControl, 代码静态分析工具Klocwork Insigtlt, IBM Rational Software Analyzer等)。
5.基于实践过程框架, 方兴未艾: 开发角色专业化和分布全球化都要求软件开发过程愈加规范, 而灵敏又要求过程必需紧密贴合项目实际需要, 所以传统大一统过程无法符合这一需求。新一代过程将是以实践为关键, 项目能够经过组装所需不一样实践来取得贴近项目要求过程。lJI(Ivar Jacobson International)EssWork框架和IBMRationalRMC都是新一代基于实践过程框架。
6.配置管理, 昨日黄花: 伴随开发团体规模日益减小, 配置管理复杂性大大降低了, 我们注意到越来越多用户转向使用开源配置管理工具(如Subeverison, JIRA, hosted-proiects 等等); 未来配置管理工具更多以一个全生命周期管理平台(Application LifecycleManagement)方法出现, 弱化了单项配置管理能力而强调了全步骤整合。
7.全球化软件协作交付 :全球化世界肯定带来全球化软件交付模式。依据Forrester数据, 现在87%开发团体是分布式, 56%有两个以上开发地点, 同时企业合并和收购趋势不停产生众多新分布式开发团体, 企业为了提供全球化24×7支持和开发能力, 也在不停加强全球化软件协作交付能力。
展开阅读全文