软件工程的过去
软件与软件危机\r\n\r\n软件工程起源:于1968年在联邦德国召开的北大西洋公约软件可靠性会议( NATO )上,首次提出 “软件工程”的概念,提出了在软件生产中采用工程化的方法,采用一系列科学的、现代化的方法技术来开发软件。\r\n1975年开始第一届世界软件工程大会
2014年5月3日
世界软件工程大会
世界软件工程大会会议概况 :\r\n 世界软件工程大会 ICSE,是国际软件界主要的技术交流活动之一 。由于涉及面宽且学术和技术水准高,受到软件界的广泛重视和特别关注,可以说是国际软件领域的一个核心会议 。尽管本身是一个学术性会议,但由于软件工程一直偏重实践应用,也得到工业界的广泛参与和支持,是交流软件工程最新技术进展的重要场所 。该会议自 1975 年第一届起,基本上是每年一届,至今已召开过 27届,但都是在发达国家举行,2006年首次在发展中国家召开。
2014年5月3日
3/85
软件工程大会
ICSE 2006 Shanghai, CHINA ICSE-28(中国)\r\nICSE 2005 St. Louis, MO, USA ICSE-27(美国)\r\nICSE 2004 Edinburgh, Scotland, United Kingdom ICSE-26联合王国(英国)\r\nICSE 2003 Portland, Oregon, USA ICSE-25 (美国)\r\nICSE 2002 Orlando, Florida, USA ICSE-24 (美国)\r\nICSE 2001 Toronto, Ontario, Canada ICSE-23(加拿大)\r\nICSE 2000 Limerick, Ireland ICSE-22(爱尔兰)\r\nICSE 1999 Los Angeles, CA, USA ICSE-21 (美国)\r\nICSE 1998 Kyoto, Japan ICSE-20(日本)\r\nICSE 1997 Boston, MA, USA ICSE-19 (美国)\r\nICSE 1996 Berlin, Germany ICSE-18(德国)\r\nICSE 1995 Seattle, WA, USA ICSE-17 (美国)
2014年5月3日
4/85
世界软件工程大会
ICSE 1994 Sorrento, Italy ICSE-16(意大利)ICSE 1993 Baltimore, Maryland, USA ICSE-15(美国)ICSE 1992 Melbourne, Australia ICSE-14(澳大利亚)ICSE 1991 Austin, Texas, USA ICSE-13 (美国) ICSE 1990 Nice, France ICSE-12(法国)ICSE 1989 Pittsburgh, Pennsylvania, USA ICSE-11 (美国) ICSE 1988 Singapore ICSE-10(新加坡)ICSE 1987 Monterey, California, USA ICSE-09 (美国) ICSE 1985 London, UK ICSE-08(联合王国——英国) ICSE 1984 Orlando, Florida, USA ICSE-07 (美国) ICSE 1982 Tokyo, Japan ICSE-06(日本)ICSE 1981 San Diego, California, USA ICSE-05 (美国) ICSE 1979 Munich, Germany ICSE-04(德国)ICSE 1978 Atlanta, Georgia, USA ICSE-03 (美国) ICSE 1976 San Francisco, California, USA ICSE-02 (美国) ICSE 1975 Washington DC, USA ICSE-01 (美国)
2014年5月3日
5/85
中国软件工程大会
2003年大会(第一届)湖南长沙 \r\n2005年大会(第二届)北京 \r\n2006年大会(第三届)湖南长沙 \r\n2007年大会(第四届)杭州
2014年5月3日
6/85
软件规模越来越大
Windows95有1000万行代码\r\n Windows2000有5000万行代码
Exchange2000和 Windows2000开发人员结构
2014年5月3日
7/85
软件开发的发展过程
计算机应用发展
软件数量多规模大
软件成本高质量低
个体化软件开发方法
软件维护困难
软件危机
软件工程
2014年5月3日
8/85
软件工程的发展经历
软件工程发展阶段论没有统一定论
第一代\r\n传统软件工程\r\n(60到70年代,\r\n为克服软件危机提出…)
第二代\r\n 对象工程\r\n(80、90年代提出,现在发展…)
第三代\r\n构件工程\r\n(90年代提出,\r\n基于硬件的思路…)
2014年5月3日
9/85
软件工程学的范畴
软件工程学
软件开发技术
软件工程管理
软件开发方法学
软件工具
软件工程环境
软件管理学
软件经济学
软件度量学
2014年5月3日
10/85
传统软件工程
传统的软件工也称为面向过程的软件开发方法,这类开发方法都典型地包含了分析、设计、实现、确认(测试)、演化(维护)等活动。\r\n 典型的传统软件开发方法有:\r\n Parnas方法 ——1972\r\n Jackson方法——1975\r\n 结构化开发方法——60年代末提出80年代中成熟\r\n 原型化方法——80年代中期提出\r\n HIPO法——1980\r\n IDEF法——1981\r\n 问题分析法\r\n …….等。
2014年5月3日
11/85
典型的软件生存周期——瀑布模型
问题定义
编 码
需求分析
设 计
可行性研究
运行与维护
测 试
开发\r\n时期
运行\r\n时期
计划时期
(目标与范围说明书)
(可行性论证论告)
(测试报告)
(程序)
(设计文档)
(需求说明书)
(运行日志,维护报告)
2014年5月3日
12/85
系统实现过程流程
系统实现模型
目标系统
当前系统
物理模型
逻辑模型
逻辑模型
物理模型
模型化
抽象化
实例化
具体化
理\r\n解\r\n需\r\n求
表\r\n达\r\n需\r\n求
导\r\n出
做什么
怎\r\n么\r\n做
需求分析的主要工作
系统流程图或高层DFD图
DFD图、STD图、E-R图、用例图、类图、顺序图等
2014年5月3日
13/85
需求分析的任务
在需求分析阶段应完成的任务就是借助于当前系统的逻辑模型导出目标系统的逻辑模型。\r\n\r\n主要有三个任务:\r\n1、完成可行性分析(研究)报告(多数单列不在需求分析中)\r\n2、建立分析模型——数据、功能和行为模型\r\n3、编写需求说明书。\r\n \r\n其实现模型如下图所示:
2014年5月3日
14/85
结构化分析模型
数据(信息)\r\n模型
功能模型
行为(动态)\r\n模型
2014年5月3日
15/85
传统软件工程
需求分析阶段强调建立分析模型!\r\n相应的在系统设计阶段强调建立设计模型!\r\n 我们习惯于编程!就如盖楼不用设计图纸,买来材料就动手盖!大家想象一下会有什么结果。\r\n 什么是模型 :建筑模型可以是图纸上所绘的建筑图,也可以是用厚纸板制作的三维模型,还可以用存于计算机中的有限元方程来表示。一个建筑物的结构模型不仅能够展示这个建筑物的外观,还可以用它来进行工程设计和成本核算。 \r\n模型表达的意义…..\r\n各方面的利益相关者…
2014年5月3日
16/85
系统分析数据流图例
会计系统的分析
2014年5月3日
17/85
系统分析数据流图例
会计系统的分析
2014年5月3日
18/85
系统分析数据流图例
会计系统的分析
2014年5月3日
19/85
系统分析数据流图例
会计系统的分析
2014年5月3日
20/85
系统分析数据流图例
会计系统的分析
2014年5月3日
21/85
会计系统数据流图例
计算机会计系统逻辑模型的建立
2014年5月3日
22/85
软件产品的实现过程模型
2014年5月3日
23/85
面向对象软件工程
1980年Xerox公司推出的Smalltalk—80语言标志着面向对象程序设计进入了实用阶段,80年代中期起人们注重于面向对象分析与设计的研究,逐步形成了面向对象方法学。\r\n典型的有:\r\n1. Peter Coad 和Edward Yourdon的OOA与OOD\r\n2. Grady Booch的面向对象开发方法\r\n3. James Rumbaugh 的面向对象技术\r\n4. Ivar Jacobson 的面向对象软件工程\r\n5. Wirfs-Brock 的RDD方法\r\n6. IBM 的可视化模型技术
2014年5月3日
24/85
统一建模语言
Unified Modeling Language\r\n近十几年来OOSE最重要的成果!\r\n ——于1996年6月推出V0.8\r\n 1997年形成V1.0,V1.1,同时被国际对象管理组织(OMG)确定为标准的建模语言!\r\n中文网站:\r\nhttp://www. umlchina.com\r\nhttp://www.uml.com.cn\r\nhttp://www.uml.org.cn
2014年5月3日
25/85
贡献者
Grady Booch\r\n 1981年创建Rational软件公司任首席科学家
James Rumbaugh\r\n 1994年加入 Rational 公司,之前在纽约斯卡奈塔第的通用电气研发中心
Ivar Jacobson\r\n 1995年加入 Rational公司,之前87年前在爱立信,88创办瑞典Objectory AB公司
2014年5月3日
26/85
统一建模语言
UML是一种可视化的图形符号建模语言,利用它可以进行需求分析、概要设计、详细设计、编程实现、项目计划、测试、原型迭代、产品发布、产品维护等。\r\n 目前在软件工程里主要用于系统分析与系统设计。\r\nRational Rose是UML的主要建模工具。\r\nMicrosoft Visio是UML常见的建模工具。
2014年5月3日
27/85
UML的重要影响
软件生存周期:RUP(Rational Unified Process)\r\n软件建模方式:可视化的语言\r\n软件文档规范:文档由UML建模工具自动产生\r\n软件人员分工:岗位界线逐渐趋向模糊\r\n (分析、设计、编码)
2014年5月3日
28/85
UML的内容结构
2014年5月3日
29/85
UML模型中的图
UML共提供了九种图:\r\n 第一类图是用例图。用例图(Use Case,用况、实例)从用户的角度描述系统功能,并指出各功能的操作者。\r\n 第二类图是静态图,包括类图(Class)、对象图(Object)。类图描述类的定义和类之间的关系(关联、继承、聚合等),对象是类的实例。包描述系统的分层结构。\r\n 第三类图是行为图,包括状态图(State chart)和活动图(Activity)。状态图描述对象的所有可能状态及事件发生时状态的转移条件。活动图描述了用例的活动行为以及活动时的约束关系。
2014年5月3日
30/85
第四类图是交互图,包括时序图(Sequence、循序、顺序、序列、轨迹)和协作图(Collaboration、合作图)。顺序图描述了对象间的动态协作关系,强调消息的时间排列;合作图同样描述了对象间的动态协作关系,但他强调消息发送和接收的对象的结构组织(及连接关系)。\r\n 第五类图是实现图,包括构件图(Component、组件、部件)和部署图(Deployment、配置、实施)。构件图描述了代码构件(模块)的物理结构和构件(模块)间的依赖关系;配置图定义了系统中软、硬件的体系结构。
UML模型中的图
2014年5月3日
31/85
面向对象分析模型
STD图\r\n跟踪图
简略的\r\nDFD图/\r\n控制流图
类/对象\r\n图
用例
处
理
规
格
说
明
控
制
规
说
明
格
述
描
关
象
对
及
系
功能模型
对象模型
行为模型
2014年5月3日
32/85
用例模型
会议管理系统用例图
2014年5月3日
33/85
类与对象关系模型
2014年5月3日
34/85
打电话者
打电话的事件跟追综图
电话线
接电话者
行为﹃动态﹄模型
2014年5月3日
35/85
①删除会议顺序图——会议管理者删除某个会议。\r\n(跟踪图)
动态模型——对象交互模型
2014年5月3日
36/85
②定义会议顺序图——会议管理者定义一个会议。
动态模型——对象交互模型
2014年5月3日
37/85
③取消会议顺序图——用户要求取消一个会议(取消申请)
动态模型——对象交互模型
2014年5月3日
38/85
④申请会议召开顺序图
动态模型——对象交互模型
2014年5月3日
39/85
申请会议召开对象合作图
动态模型——对象合作图
2014年5月3日
40/85
申请会议召开活动图
动态模型—活动图模型
2014年5月3日
41/85
UML 推出的目标是用面向对象的方式来描述任何类型的系统,具有广阔的应用前景,最直接的是用 UML 为软件系统创建模型,但是, UML 标准并非计算机软件系统专用,同时它也可应用于其他的非计算机软件的系统,或者广泛应用于商业活动或过程。现今,在商业系统中用 UML 标准描述商业的目标、资源(人、计算机),规则(商业策略、政策等)以及描述商业的实际工作如商业活动过程。总之, UML 是一种通用的标准建模语言,可以对任何的静态结构和动态行为的系统进行建模。本文只是结合了商业活动说明 UML 在商业建模中的简单应用,商业活动的中关键是信息交流的高效性,而用 UML 实现建模能呈现给用户以简洁、明晰的可视化模型,更便于信息的沟通于交流,大大提高工作效率。相信 UML 具有广阔的市场前景,具有很大的经济价值。
UML小结
2014年5月3日
42/85
在面向对象技术给解决软件危机带来曙光之时, 分布式网络计算的巨大压力又给软件开发提出了许多新的难题,使软件开发仍处于高风险状态。新的分布式网络计算要求软件实现跨空间、跨时间、跨设备、跨用户的共享,导致软件在规模、复杂度、功能上的极大增长,迫使软件要向异构协同工作、各层次上集成、可反复重用的工业化道路上前进。为适应软件的这种需求,新的软件开发模式必须支持分布式计算、浏览器/服务器结构、模块化和构件化集成,使软件类似于硬件一样,可用不同的标准构件拼装而成。\r\n 一、基于构件的软件 (软件复用)——应运而生\r\n 构建技术已有雏形:\r\n Sun的Java平台、Microsoft的COM 、IBM的CORBA
软件工程的未来发展方向
公共对象请求代理体系结构
构件对象模型
2014年5月3日
43/85
早在1998年4月,在日本京都召开的基于构件的软件开发(CBSD)国际专题学术会议上达成了两个共识:\r\n对于CBSD而言,对象技术并不是必需的,同时仅仅依靠对象技术也不能实现CBSD。 \r\n构件离不开体系结构 \r\n 软件复用是指重复使用“为了复用目的而设计的软件(即构件)”的过程。 - 复用对软件质量的影响:包含60%复用代码的应用程序,其错误率大 约可降低50%; - 复用对软件生产率的影响:包含30%-50%复用代码的应用程序,其生产 率大约可提高25%-40%。
一、基于构建的软件工程(软件复用)
2014年5月3日
44/85
一、基于构建的软件工程(软件复用)
2014年5月3日
45/85
未来软件生产线
应用构件\r\n提取车间
应用\r\n构件库
构件生\r\n产车间
构件库
组装\r\n车间
领域\r\n 1
领域\r\n 2
应用\r\n系统
...
1
2
3
4
1基础构件,2功能构件 \r\n3接口构件,4用户界面构件
2014年5月3日
46/85
目前对体系结构的研究内容有:\r\n(1)体系结构描述 ;\r\n(2)提供体系结构设计技术的形式化的基础; \r\n(3)研究体系结构的分析技术; \r\n(4)设计规则与开发方法的研究;\r\n(5)设计工具和环境 ;\r\n(6)体系结构的发现与再造工程;\r\n(7)体系结构的分类编目及使用指南。
一、基于构建的软件工程(软件复用)
2014年5月3日
47/85
实现软件复用的主要关键因素(技术和非技术因素)有:软件构件技术(software component technology)、领域工程(domain engineering)、软件构架(software architecture)、软件再工程(software reengineering)、开放系统(open system)、软件过程(software process)、CASE技术等,以及各种非技术因素,且各种因素是相互联系、相互影响的。
一、基于构建的软件工程(软件复用)
2014年5月3日
48/85
软件复用在技术、管理和决策方面都存在许多未能解决的难题。\r\n1.技术难题 \r\n (1)构造和识别技术\r\n (2)分类和查找技术\r\n (3)理解与修改技术\r\n (4) 系统集成。\r\n2.管理与决策问题\r\n (1)“两难”问题——通用性与处理能力,构件大小与可复用潜力,复用库的投资与收益\r\n (2)配置管理问题\r\n (3)标准化问题
一、基于构建的软件工程(软件复用)
2014年5月3日
49/85
随着计算机网络和软件工业的迅速发展,促进了软件系统空间结构模式的改变,即以基于模块构件的分布式组合代替传统的单地址结构模式:分布式组合具有高性能、可扩展、支持软件复用和资源共享的优势,但由于服务的物理分布、并发控制、局部失效、异质互操作及规格多样性大大地增加了应用软件的功能、性能、规模和复杂性。因此系统集成就成为重要的研究方向,由此而产生的网络互操作性、分布对象技术、对象之间的通讯以及分布式系统的开放性(如系统的动态裁剪、迁移和进化等)等问题已成为软件工程的研究热点。
二、分布计算和分布对象技术
2014年5月3日
50/85
1.分布计算/分布系统优点\r\n (1)系统性能可提高几个数量级;\r\n (2)计算资源、用户信息共享;\r\n (3)与应用本身的自然结构和需求相适应。\r\n2.分布系统必须解决两个最基本的问题\r\n (1)逻辑互联方式;\r\n (2)系统的互操作性。\r\n3.分布系统还面临着如下两个难题\r\n (1)高度异构的分布环境;\r\n (2)系统管理和实用化支持。
二、分布计算和分布对象技术
2014年5月3日
51/85
当前的主流技术及其发展\r\n当前分布计算的主流技术有:\r\nCORBA(公用对象请求代理程序结构 );\r\nJava/RMI(远程方法调用);\r\nActive/DCOM(分布式对象模型); \r\nODP(开放型分布式处理器 ,ISO/ITU)。
二、分布计算和分布对象技术
2014年5月3日
52/85
什么是Agent? \r\n Agent简单的被译成“代理”或“智能体” 。\r\n 每一个Agent都是具有特定完整功能的、独立的、高度智能化的个体。它掌握一定的知识,有自己的目标和解决问题的能力。Agent有以下特征。\r\n 自主性Agent应是具有自身计算功能的自动控制行为的实体。它能够在非选定的模式下和动态变化的环境中,不用外界直接操纵,根据其内部状态和感知到的环境信息,决定和控制自身的行为。这是Agent区别于“对象”(object)的一个重要特征。
三、面向Agent的软件工程
2014年5月3日
53/85
Agent具有以下8个主要特点 :\r\n(1) 协作性\r\n(2) 智能性 \r\n(3) 代理性 \r\n(4) 交互性\r\n(5) 反应性\r\n(6) 主动性\r\n(7) 机动性\r\n(8) 自成长性
三、面向Agent的软件工程
2014年5月3日
54/85
面向Agent的高层建模\r\n1)Gaia建模方法\r\n Wooldridge,Jennings和Kinny等学者提出了Gaia模型用于封闭系统中面向Agent的分析和设计。Gaia支持 Agent的结构以及Agent之间的社会和组织结构的建模。但是,它要求单个Agent的能力以及Agent之间的交互关系在系统运行过程中是静态的。这就使得Agent失去了自主性和反应性等特点。其主要过程由分析和设计两个阶段构成:分析过程侧重于对系统以及系统结构的理解,主要涉及Agent组织关系中的角色( Roles)和角色之间的交互(Interactions);设计阶段主要是定义Agent系统实际的结构,主要涉及组成系统的Agent类(Classes)和实例(Instances),以及每个Agent所提供的服务(Services)和熟悉度(Acquaintance)模型。
三、面向Agent的软件工程
2014年5月3日
55/85
2)多Agent系统的建模方法\r\n Gaia模型不适合于开放的、有自己喜好的Agent组成的、具有一定社会准则的系统。因此Wood和Deloach又提出了多Agent系统的工程化方法(MultiAgent Systems Engineering Methodology,MASE)。MASE是Gaia模型的扩展,它支持动态代码的创建,其目标是将最初的系统规范转换成可以运作的Agent系统。 \r\n3)信息系统的建模\r\n 面向Agent的信息系统的建模Wagner提出了面向 Agent的关系模型方法(Agent Object Relationship,AOR)。AOR模型是基于目前广泛使用的实体关系模型( Entity Relationship,ER)和关系数据库模型(Relational Database Model,RDM)。
三、面向Agent的软件工程
2014年5月3日
56/85
面向对象方法在AOSE中的应用 \r\n1)AUML\r\n 统一建模语言(Unified Modeling Language。UML)是一种图形化的表示语言,最初用于标准化对象类的设计,后来被扩展为支持面向对象系统中所涉及的所有部件。如组件、包等。Odell,Parunak和Bauer提出了AIP(Agent Interactions Protocols)的三层表示模型。在UML的基础之上进行了扩展。扩展后的模型被定义为AUML(Agent UML)。在AUML中。对UML中的其本元素作了适当的改变,主要包括:包(Packages)、模板(Templates)、序列图(Sequence Diagrams)、合作图(Collaboration Diagrams)、活动图(Activity Diagrams)和状态图(Statecharts)。
三、面向Agent的软件工程
2014年5月3日
57/85
2)设计模式(Design Patterns)\r\n 设计模式是指在程序的编码或组件的软件体系结构中能够再现的模式。根据这种设想。Aridor和Lange提出了在移动Agent的内容上进行设计模式的分类。认为模式是属于每一个类的。其主要目的是增加系统的可重用度和增强程序编码的质量。以及减少设计移动 Agent系统的代价。分类模式主要有三种:旅游模式( Travelling)、任务模式(Task)和交互模式(Interaction)。 \r\n3)组件(Components)\r\n 组件是相关对象的封装用于提供一定的功能。组件与Agent相比较。组件不具有自主性,但基于组件的重用的技术已经广泛地应用于软件系统的开发中。并取得了一定的成功。
三、面向Agent的软件工程
2014年5月3日
58/85
结论\r\n 面向Agent的开发方法是一种正在兴起的软件工程方法,虽然还不能达到面向对象开发方法的普及度,但它已经不断地被应用于生产实践中。如Microsoft Office中的Office助手、计算机游戏中的智能体、商务领域中的贸易和协约智能体、用于Internet搜索引擎中的网络蜘蛛(Web Spiders)等。总之,软件开发方法的发展是人们认识不断深化的过程。从早期的结构化方法到目前的面向Agent的软件开发技术的应用。反映了人们对客观世界认识的深入,同时,也更加符合人们的思维方式及反映客观世界的真面目。面向Agent的软件工程方法是软件工程未来的发展方向。尤其适合于复杂的、动态的大型系统。未来工作主要是上述模型的更进一步研究。
三、面向Agent的软件工程
2014年5月3日
59/85
敏捷方法\r\n 2001年2月在美国犹他州,敏捷软件开发联盟(Agile Software Development Alliance)成立。在这之前,联盟的成员们在轻型方法的探索与实践方面做了很多有益的工作,知名的XP(Extreme Programming,极端编程)方法就是众多Agile方法论中的一种。敏捷(Agi1e)在无过程和过于繁琐的过程中达到了一种平衡,使得能以不多的步骤过程获取较满意的结果。
四、敏捷方法
2014年5月3日
60/85
1)XP(Extreme Programming,极端编程)方法\r\n XP是一种轻型方法。它规定了一组核心价值和方法,消除了大多数重量型过程的不必要产物。建立了一个渐进型的开发过程,它依赖于每次迭代时对源码的重组。所有的设计都是围绕着当前这次迭代,而不管将来的需求。这种设计过程的结果是纪律性与适配性的高度统一。使得XP在适配性方法中成为发展的最好的一种方法。
四、敏捷方法
2014年5月3日
61/85
2) Cockburn(人名:克可伴)的水晶系列方法\r\n 水晶系列与XP一样,都有以人为中心的理念,但在实践上有所不同。Cockburn考虑到人们一般很难严格遵循一个纪律约束很强的过程,因此,与XP的高度纪律性不同,Cockburn探索了用最少纪律约束而仍能成功的方法,从而在产出效率与易于运作上达到一种平衡。虽然水晶系列不如XP那样的产出效率,但会有更多的人能够接受并遵循它。
四、敏捷方法
2014年5月3日
62/85
3)High smith的ASD(Adaptive Software Development,自适应软件开发)方法\r\n该方法把一些起源于复杂适配性系统(通常称之为混沌理论——chaos theory)的思想在软件开发中加以应用。 ASD的核心是3个非线性的、重迭的开发阶段即猜测。合作与学习。在一个适配性环境中。因为结果是不可预测的,偏离计划则是在引导开发人员向正确的目标迈进。在管理上。其重点不在于告诉大家做什么。而是鼓励大家交流沟通,从而使他们能自己提出创造性的解决方案。计划和设计都得随开发的推进而改变。
四、敏捷方法
2014年5月3日
63/85
4)SCRUM方法\r\n 该方法明确定义了的可重复的(defined and repeatable)方法过程只限于在明确定义了的可重复的环境中,为明确定义了的可重复的人员所用,去解决明确定义了的可重复的问题。SCRUM文献多集中论述迭代阶段计划与进度跟踪,特别强调开发队伍和管理层的交流协作。它与其他敏捷型方法在许多方面都很相似。特别是它可以与XP的编程准则很好地结合起来。
四、敏捷方法
2014年5月3日
64/85
5)Coad的FDD(Feature-Driven Development特征驱动开发)方法\r\n 它致力于短时的迭代阶段和可见可用的功能。FDD有以下五项任务:建立总体模型、提出功用清单、针对功用逐项制订计划、针对功用逐项进行设计、针对功用逐项开发实现。编程开发人员分成两类:首席程序员和类程序员。首席程序员负责开发实现系统的各项功能。对每一项功能,首席程序员要定出需要哪些类来实现这项功能,并召集类程序员们组成一个针对这项功能的开发组。首席程序员作为协调者,设计者和指导者,而类程序员则主要作源码编写。
四、敏捷方法
2014年5月3日
65/85
2 敏捷建模(Agile Modeling, AM)\r\n AM是一组软件建模阶段的指导性原则。是针对基于软件系统的有效建模和编写文档的一个混乱而有序的、基于实践的方法。\r\n AM没有定义创建某种模型的详细步骤,但为怎样做一个有效的建模人员提供了建议。
四、敏捷方法
2014年5月3日
66/85
3 发展前景及其注意事项\r\n 针对以CMM为代表的重型方法软件过程,敏捷过程表明了完全不同的立场,宣称好的开发过程应该可以在保证质量的前提下,做到文档、度量适度,很容易适应变化并迅速做出自我调整,实现企业效益的最大化。在敏捷组织2001年发表了敏捷宣言之后的实践中。敏捷方法得到了快速的发展和大量的响应。敏捷软件开发,特别是AM,对大多数的软件组织来说都是新生事物。
四、敏捷方法
2014年5月3日
67/85
1 网络时代的软件工程技术\r\n 随着全球网络的发展,网络时代已经来临,它引发了软件工程技术的“蝉变”,影响着软件的计划、开发、维护和销售等多个方面,但这种“蝉变”也是随着时间的推移而逐渐进行的,许多技术都是在传统基础上赋以网络特征而诞生出来的,而且这些新生的技术和方法仍在不断地向前发展。 \r\n(1)用于网络上的传统的软件工程技术\r\n(2)网络上软件应用的特性
五、网络时代软件工程技术发展的趋势
2014年5月3日
68/85
2 网络时代软件工程技术发展的趋势 \r\n 如何在未来Internet平台上进一步进行资源整合,形成巨型的、高效的、可信的和统一的虚拟环境,使所有资源能够高效、可信地为所有用户服务,成为软件技术的研究热点。\r\n\r\n 软件技术的总体发展趋势可归结为:软件平台网络化、方法对象化、系统构件化、产品家族化、开发工程化、过程规范化、生产规模化、竞争国际化。
五、网络时代软件工程技术发展的趋势
2014年5月3日
69/85
软件工程理论在不断完善和发展,实际应用却十分有限。现存的许多软件技术都是从理论研究发展而来,但由于从理论转化为实际应用是一个十分缓慢的过程,需要一定的条件和环境,所以,大量理论成果没有在实践中得到有效的应用。造成这种状况的原因主要是:①理论研究和应用研究严重脱节;②现有软件产品开发的投资大、成本高、周期长、价格昂贵,阻碍了软件的开发和推广;③软件工程的管理人员素质普遍不高。
六、软件工程理论研究和实践的结合
2014年5月3日
70/85
从根本上解决软件工程理论与实践结合问题的方法应该是对软件工程理论知识和实践知识(包括过程知识和特定领域知识)的管理、集成、复用与创新,与软件工程标准化和软件复用相对应。理论知识与实践知识的复用和标准化将为理论与实践的结合提供新的方法和思想,从另一个角度对信息系统提出了新的要求和新的研究方向,这一研究方向与人工智能、信息挖掘等技术的结合将对软件工程从理论到实践的转化过程产生突破性的影响。
六、软件工程理论研究和实践的结合
2014年5月3日
71/85
1 政府大力支持软件产业发展 \r\n 1984年的9月中国软件行业协会的成立 \r\n 1986年8月,第一个关于软件产业发展规划的指导性文件《关于建立和发展我国软件产业的报告》出台。 \r\n 进入上世纪90年代 ,随着《中华人民共和国著作权法》、《计算机软件保护条例》以及1992年的《计算机软件著作权登记办法》相继颁布实施,软件企业有了正式的发展规范。 \r\n 21世纪,出台了两个划时代的软件政策文件:2000年6月国务院印发的《鼓励软件和集成电路产业发展的若干政策》(简称18号文件)。2002年7月24日,国务院又下发了《振兴软件产业行动纲要》(简称47号文件),以作为对18号文件的延续和细化。
七、我国软件产业的现状和发展趋势
2014年5月3日
72/85
2 软件企业由弱到强 \r\n3 中国软件产业的特征 \r\n(1)软件产业区域横向合作关联度有所提高 \r\n(2)产业链分工日趋完善,市场成熟度不断提高 \r\n(3)软件产业继续加大纵向辐射,信息服务比例进一步扩大 \r\n(4)互联网建设与计算机设备的普及带动行业应用及消费软件的增长 \r\n(5)软件产业国际化竞争加剧\r\n(6)解决方案提供商成为软件与服务的供应主体。
七、我国软件产业的现状和发展趋势
2014年5月3日
73/85
4 中国软件产业的发展趋势 \r\n(1)企业用户更加趋向于定制解决方案应用与服务 \r\n(2)安全、智能化平台软件实现市场突破,Linux将进入行业关键业务应用领域 \r\n(3)中间软件产品市场呈应用融合趋势,协同软件与网络安全服务将成为新的增长点 \r\n(4) ERP产品将满足两极应用 \r\n(5)应用软件企业将逐步拓展产品应用领域,多行业竞争趋势明显 \r\n(6)中国软件外包市场趋热,外包项目的利润率呈提高趋势
七、我国软件产业的现状和发展趋势
2014年5月3日
74/85
软件工程应用滞后于理论、软件开发滞后于硬件发展的一个重要原因是在软件教育过程中存在一些严重的缺陷。 \r\n 软件教育应该从整体和全局的高度出发,注重软件开发方法学的研究与创新,并将设计和系统结构的启发式方法较好地结合起来,培养学生的灵活性和创造性。\r\n 软件工程是应用计算机科学、数学及管理科学等原理,开发软件的工程。它的教育培养目标是让受教育者了解和掌握软件开发中的方法学和工程学知识,并应用于实践。软件工程人才培养在现阶段体现了国际化、多元化、本地化和工程化的特点。
八、软件工程教育
2014年5月3日
75/85
1 法律意识和职业素质 \r\n(1)法律意识 \r\n(2)职业道德 \r\n(3)职业精神 \r\n(4)团队精神 \r\n(5)科学精神与人文精神
八、软件工程教育
2014年5月3日
76/85
2 国际化与软件工程教育 \r\n(1)社会与文化基础 \r\n(2)外语与双语教学的问题 \r\n(3)双语教学存在的困难 \r\n多元化与软件工程教育 \r\n(1)专业化教育 \r\n(2)工业标准 \r\n(3)具有行业领域的概念 \r\n(4)具有系统集成的意识
八、软件工程教育
2014年5月3日
77/85
4 本地化与软件工程教育 \r\n (1)与本地软件(或IT)企业的紧密合作 \r\n (2)本地教师团队建设 \r\n5 工程化与软件工程教育 \r\n (1) 争取项目的能力 \r\n (2)建立创新基地和创新模式
八、软件工程教育
2014年5月3日
78/85
未来软件产业发展的总体趋势要求着重培养四种软件人才:\r\n(1)学术型人才:主要是研究、发现软件的客观规律,这类人才要求具有较深厚的理论基础,扎实的数学基础、清晰的基本概念和多学科的知识,具有独立的研究能力和团队合作交流意识,要具备工程实践能力和创新精神。\r\n(2)工程型人才:能运用科学原理进行工程或产业设计、工作规划与运行决策,具有一定的理论基础、较宽的知识面、以及设计开发和解决实际问题的能力。
八、软件工程教育
2014年5月3日
79/85
(3)技术型人才:使设计、规划、决策变成物质形态。\r\n(4)技能型人才:主要在生产第一线或工作现场直接操作。\r\n 技术性和技能型人才须具备必要的专业知识,有综合运用专业知识解决具体问题的能力以及解决现场实发性问题的应变能力和一定的操作技能。在软件发展中技术创新是解决关键问题,工程创新则是走向实用。
八、软件工程教育