进入新世纪以来,中国的高技术产业,特别是信息产业的持续高速发展,信息技术已经成为 21世纪经济发展的驱动力 。
为什么要学习软件工程序软件是信息化的核心,国民经济,国防建设,社会发展及人民生活都离不开软件 。 软件产业是增长最快的朝阳产业,是高投入/高产出,无污染,低能耗的绿色产业 。 软件产业关系到国家经济和文化安全,体现了国家综合实力,是决定 21世纪国际竞争地位的战略性产业 。
软件工程已成为软件产业健康发展的关键技术,软件工程技术在经济,科技,国防各个领域的广泛应用与实践过程证明:
提高软件的质量和生产率的关键是软件系统的分析与设计,建立系统模型 。
1.1 软件工程的产生和发展
1.1软件工程的产生和发展软件工程 ( Software Engineering)是在克服 60年代末所出现的,软件危机,的过程中逐渐形成与发展的 。 软件工程是一门指导计算机软件系统开发和维护的工程学科,是一门新兴的边缘学科,主要 研究如何应用软件开发的科学理论和工程技术来指导大型软件系统的开发 。
在我国加入WTO后,大力推广,应用软件工程的开发技术及管理技术,提高软件工程的应用水平,对促进我国软件产业与国际接轨,推动我国软件产业的迅速发展起着十分重要的关键作用 。
1.1.1软件工程的产生和发展
1.1.1 软件工程的产生和发展软件工程的发展已经历了四个重要阶段:
4,第 四代 软件工程 — 构件工程
3,第三代 软件工程 — 过程工程
2,第二代 软件工程 — 对象工程
1,第一代 软件工程 — 传统 的软件工程点击查看相应信息
1.1.1软件工程的产生和发展
1.1.1 软件工程的产生和发展软件工程的发展已经历了四个重要阶段:
1,第一代 软件工程 — 传统 的软件工程
2,第二代 软件工程 — 对象工程
3,第三代 软件工程 — 过程工程
4,第 四代 软件工程 — 构件工程
60年代末到 70年代为了克服,软件危机,
(Software crisis) 提出
,软件工程,的名词,将软件开发纳入工程化的轨道,
基本形成软件工程的概念,
框架,技术和方法 。 称为 传统 的软件工程 。
1.1.1软件工程的产生和发展
1.1.1 软件工程的产生和发展软件工程的发展已经历了四个重要阶段:
1,第一代 软件工程 — 传统 的软件工程
2,第二代 软件工程 — 对象工程
3,第三代 软件工程 — 过程工程
4,第 四代 软件工程 — 构件工程80年代中到 90年代,面向对象的方法与技术得到发展,研究的重点转移到面向对象的分析与设计,
演化为一种完整的软件开发方法和系统的技术体系,称为 对象工程。
1.1.1软件工程的产生和发展
1.1.1 软件工程的产生和发展软件工程的发展已经历了四个重要阶段:
1,第一代 软件工程 — 传统 的软件工程
2,第二代 软件工程 — 对象工程
3,第三代 软件工程 — 过程工程
4,第 四代 软件工程 — 构件工程
80年代中开始,人们在软件开发的实践过程中认识到:提高软件生产率,保证软件质量的关键是,软件过程,,是软件开发和维护中的管理和支持能力,逐步形成软件过程工程 。
1.1.1软件工程的产生和发展
1.1.1 软件工程的产生和发展软件工程的发展已经历了四个重要阶段:
1,第一代 软件工程 — 传统 的软件工程
2,第二代 软件工程 — 对象工程
3,第三代 软件工程 — 过程工程
4,第 四代 软件工程 — 构件工程
90起年代,基于构件( Component)
的开发方法取得重要进展,软件系统的开发可 通过使用现成的可复用构件组装完成,而无需从头开始构造,以此达到提高效率和质量,降低成本的目的。称为 构件工程。
1.1.2 软件工程研究的内容软件工程 是一门新兴的边缘学科,涉及的学科多,研究的范围广 。 归结起来软件工程研究的主要内容有以下几方面:
}软件开发技术软件开发方法,技术软件开发工具及环境软件管理技术软件规范 ( 国际规范 )
}软件管理技术
(1)软件开发技术 ( 软件结构,开发方法,工具与软件工程环境,软件工程标准化 )
(2)软件工程管理 ( 质量管理,软件工程经济学:成本估算,
计划安排 )
1.1.2 软件工程研究的内容一、课程内容,
1、传统的软件工程方法和技术
2、面向对象的开发方法
3,UML统一建模语言
4、构件技术介绍课程内容与主要参考书二、教材及主要参考书:
1,软件工程 — 理论与实践 许家珆 曾 翎 彭德中 编著高等教育出版社
2,软件工程概论 朱三元 钱乐秋 宿为民 编著科学出版社
3,UML面向对象分析 吴际 金茂忠 编著北京航空航天大学出版社关于课程根据课程的主要特点进行教学安排
1.研究内容广泛,发展迅速。
2.实践性强。
注意取材,内容反映最新发展。
A.采用多媒体课堂教学与 网络教学相结合。
B.以综合性的设计型课程设计带动课程的学习。 在教师指导组成开发小组成员协同工作,完成一个实际课题的开发。
三、课程安排使用说明 课程大纲 课程指导 课件浏览课程设计 自测系统 资料查询 案例分析网络教学系统主要功能介绍课程定位,学习对象和学习基本要求明确。
有明确的学习目的。提供了必要的课程指导及各章的学习指导。
系统主要功能介绍
1,2 软件工程过程与软件生存期
1.2 软件工程过程与软件生存期从 68年北大西洋公约的软件可靠性会议 ( NATO) 上,
首次提出,软件工程,的概念,提出了在软件生产中采用工程化的方法,采用一系列科学的,现代化的方法技术来开发软件 。 这种工程化的思想贯穿到软件开发和维护的全过程 。
了解有关软件,软件生存期及软件工程过程等重要的概念,对掌握,学习和应用软件工程的方法,技术是极有益的 。
1.2.1 软件的概念和特点
1.2.1 软件的概念和特点一,软件 ( Software) 要纠正软件就是程序,开发软件就是编写程序的错误观念 。 软件是,程序以及开发使用维护程序所需的所有文档,,由应用程序,系统程序,面向用户的文档,及面向开发者的文档四部分构成 。
二,软件的特点
1,软件是一种逻辑实体,不是具体的物理实体 。
2,软件产品的生产主要是研制 。
3,软件具有,复杂性,,其开发和运行常受到计算机系统的限制 。
4,软件成本昂贵,其开发方式目前尚未完全摆脱手工生产方式 。
5,软件不存在磨损和老化问题,但存在退化问题 。
1.2.1 软件的概念和特点失效率时间实际曲线理想曲线图1,2软件失效率曲线硬件失效率曲线,是一 U型曲线 ( 即浴盆曲线 ) 。 软件失效率曲线,它没有 U型曲线的右半翼 。 因为软件不存在磨损和老化问题,然而存在退化问题 。
三、软件的分类
1,按照软件功能划分系统软件 — 如操作系统,设备驱动程序等 。
支撑软件 ( 实用软件 ) — 协助用户开发的工具软件,如编辑程序,程序库,图形软件包等 。
应用软件 — 如工程与科学计算软件,CAD/CAM软件,CAI软件,信息管理系统等 。
失效率时间图1,1硬件失效率曲线
2,按照软件规模划分类 别 参加人数 研制期限 产品规模(源代码行)
微 型 1 1 –4 周 0.5K
小 型 1 1 – 6 月 1K – 2K
中 型 2 - 5 1 – 2 年 5 – 50 K
大 型 5 - 20 2 – 3 年 50 – 500 K
甚大型 100 - 1000 4 – 5 年 1M
极大型 2000 -5000 5 – 10 年 1M – 10 M
1.2.1 软件的概念和特点 分类续
3,按照软件工作方式划分交互式软件 批处理软件
4,按照软件服务对象的范围划分
— 由客户委托开发的软件 。
— 由软件开发机构开发,提供给市场的 。
此外,还可以按照软件使用的频度及按照软件失效的影响进行划分 。
软件工程过程 ( Software engineering process),
是指在软件工具的支持下,所进行的一系列软件工程活动 。
通常包括以下四类基本过程:
1,软件规格说明,规定软件的功能及其运行环境
2,软件开发,产生满足规格说明的软件
3,软件确认,确认软件能够完成客户提出的要求
4,软件演进,为满足客户的变更要求,软件必须在使用的过程中演进 。
软件工程过程的特性:
1,可理解性 2,可见性 ( 过程的进展和结果可见 )
3,可靠性 4,可支持性 ( 易于使用 CASE工具支持 )
5,可维护性 6,可接受性 ( 为软件工程师接受 )
7,开发效率 8,健壮性 ( 抵御外部意外错误的能力 )
1.2.2 软件工程过程
1.2.2 软件工程过程软件生命周期 ( SDLD) 是指从软件开始开发到报废的全过程,亦称 软件生存期 ( life cycle) 。 一般用经典的 瀑布模型 来描述 。
在大部分文献中将生存周期划分为 5个阶段,即要求定义,
设计,编码,测试及维护 。 其中要求定义阶段包括可行性研究和项目开发计划,需求分析,设计阶段包括概要设计和详细设计 。
,提出了多种生存期模型:
例如:瀑布模型,循环模型,演化模型,螺旋模型等 。
1.2.3 软件生存期
1.2..3 软件生存期问题定义编 程需求分析设 计可行性研究运行与维护测 试开发时期运行时期计划时期
(目标与范围说明书 )
(可行性论证论告 )
(维护报告 )
(测试报告 )
(程序 )
(设计文档 )
(需求说明书 )
瀑布模型图 1.3 瀑布模型
1.2.4 软件需求分析需求分析阶段的任务:
在可行性分析的基础上,进一步了解确定用户需求 。 准确地回答,系统必须做什么?,的问题 。 获得需求规格说明书 。
Boehm对软件需求的定义:
研究一种无二义性的表达工具,它能为用户和软件人员双方都接受并能够把,需求,严格地,形式地表达出来 。
由于需求分析方法不同,描述形式不同。其实现步骤如图所示:
当前系统模型化目标系统物理模型具体化物理模型抽象化逻辑模型实例化逻辑模型做什么 导出理解需求表达需求
1.2..4 软件需求分析图 1.4 需求分析过程一、需求分析的具体任务
3、导出系统的逻辑模型(如 DFD图)
4、修正系统的开发计划
1,确定系统的综合要求系统功能要求 系统性能要求系统运行要求 将来可能提出的要求
2、分析系统的数据要求软件系统本质上是信息处理系统,因此,必须考虑:
数据 (需要哪些数据、数据间联系、数据性质、结构)
数据处理 (处理的类型、处理的逻辑功能)
1.2.4 软件需求分析二,需求分析方法不同的开发方法,需求分析的方法也有所不同,常见的分析方法有:
三、需求分析的文档需求规格说明书,目标系统的模型。显然,采用不同的开发方法,建摸的方法是不同的。
功能分析方法结构化分析方法信息建模法面向对象的分析方法
1.2.4 软件需求分析软件设计阶段要解决,怎么做,的问题,是整个软件开发过程的核心问题,所有的开发工作都将根据设计的方案进行 。
系统的总体结构在该阶段决定,因此软件的总体设计决定了系统的质量 。 软件设计的任务是分为总体设计和详细设计两个阶段 。
总体设计需求说明书复审软件结构修 改详细设计可接受 模块描述 复审修 改设计说明书
1,设计阶段结束要交付的文档是设计说明书,根据设计方法的不同,有不同的设计文档 。
2,每个设计步骤完成后,都应进行复审 。
1.2.5 软件设计
1.2.5 软件设计一、软件设计任务
1,划分模块,确定软件结构开发方法不同,确定软件结构的方法也不同 。 例如 SD法,
是从分层的 DFD图导出初始的结构图,再对初始的结构图进行改进,获得最终的结构图 。
一般包括确定系统的软件结构,分解模块,确定系统的模块层次关系 。
2,确定系统的数据结构数据结构的建立对于信息系统而言尤为重要 。 要确定数据的类型,组织,存取方式,相关程度及处理方式等 。
3,设计用户界面作为人机接口的用户界面起着越来越重要的作用,它直接影响到软件的寿命 。
一,软件设计阶段的任务软件设计的目标1.2.5 软件设计三、软件设计的目标软件设计高可靠性 高可维护性高可理解性高效率图 1.5 软件设计的目标
1.2..5 软件设计三,软件设计的目标提高可靠性;提高可维护性;提高可理解性;提高效率 。
衡量该目标的准则,
1,软件实体有明显的层次结构,利于软件元素间控制 。
2,软件实体应该是模块化的,模块具有独立功能 。
3,软件实体与环境的界面清晰 。
4,设计规格说明清晰,简洁,完整和无二义性 。
常用的设计方法有,SD法,Jackson法,HIPO法,Parnas法、
Warnier法等。
1,软件结构的准则
2,模块化准则
3、软件独立性准则四、软件设计准则软件设计是软件开发过程的重要阶段,对保证软件系统的质量起着关键作用。但是如何保证软件设计的质量呢?有以下经过长期考验的设计准则:
1.2.5 软件设计
1,软件的层次结构顶层
1层
2层
A
B C D
E F G H
I J K L M
N
深度扇入为 2
扇出为 3
扇入为 3
3层
4层宽度宽度宽度图 1.6 软件结构示意图有关指标,
深度,表示软件结构中从顶层模块到最底层模块的层数;
宽度,表示控制的总分布;
扇出数,指一个模块直接控制下属的模块个数;
扇入数,指一个模块的直接上属模块个数 。
一个好的软件结构的形态准则是:顶部宽度小,中部宽度大,底部宽度次之;在结构顶部有较高的扇出数,在底部有较高的扇入数 。
软件结构图表示软件的系统结构,它是软件模块间关系的表示,软件之间的各种关系,均可表示为层次结构 。
1.2.5 软件设计
2,模块化准则
2,模块化准则模块化方法已经为所有工程领域所接受。模块化的主要优点是,模块化设计降低了软件系统的复杂性,使得系统容易修改,
同时使得系统各个部分可以并行开发,从而提高了软件的生产率。
并非模块分得越小越好,因为模块之间接口的复杂度和工作量增加 。 显然,每个软件系统都有一个最佳模块数 M。 注意选择分解的最佳模块数 。 图 1.7描述了模块化与软件成本的关系 。
软件总成本图 1.7 模块化与软件成本的关系成本模块数目模块成本接口成本最小成本区
M
1.2.5 软件设计软件独立性的含义是指开发具有功能专一,模块之间无过多相互作用的模块。又称为 模块独立性准则。
这种类型的模块可以并行开发,开发容易,能减少错误的影响,使模块容易组合、修改及测试。
软件独立性的度量标准是两个定性指标:
耦合性 用于描述模块之间联系的紧密程度。
内聚性 用于描述模块内部联系的紧密程度。
3、软件独立性准则
1.2.5 软件设计
3.3.3 内聚性内聚性 (cohesion)
偶然型 逻辑型瞬时型 通讯型顺序型弱内聚性强功能型内聚性表示一个模块内部各种数据和各种处理之间联系的紧密程度,它是从功能的角度来度量模块间的联系 。 显然,块内联系愈紧,即内聚性愈强,模块独立性愈好 。
图 1.9
内容耦合 公共耦合 控制耦合复合耦合 数据耦合高耦合性低图 1.8
耦合性是指软件结构中模块相互连接的紧密程度,是模块间相互连接性的度量 。 块间联系的大小可从信息 方式,作用,数量三个方面衡量 。
耦合性 (Coupling)
1.2.5 软件设计
1.3 软件开发模型软件开发模型是描述软件开发过程中各种活动如何执行的模型 。
,增量模型,螺旋模型,喷泉模型,变换模型和基于知识的模型等 。
1.3 软件开发模型需求分析设计 编码测试运行评价计划问题定义编 程需求分析设 计可行性研究运行与维护测 试开发时期运行时期计划时期
(目标与范围说明书 )
(可行性论证论告 )
(维护报告 )
(测试报告 )
(程序 )
(设计文档 )
(需求说明书 )
1.3.1 软件开发模型瀑布模型 循环模型螺旋模型图原型化模型快速分析或修改评价 构造运 行放大 放大放大放大瀑布模型 是将软件生存周期各活动规定为依线性顺序联接的若干阶段的模型 。
。 该模型说明整个软件开发过程是按图中的各个阶段进行的,每个阶段的任务完成之后,产生右边相应的文档 。
1.3.1 瀑布模型
1.3.1 瀑布模型问题定义编 程需求分析设 计可行性研究运行与维护测 试开发时期运行时期计划时期
(目标与范围说明书 )
(可行性论证论告 )
(维护报告 )
(测试报告 )
(程序 )
(设计文档 )
(需求说明书 )
图 1.10 瀑布模型问题定义编 程需求分析设 计可行性研究运行与维护测 试开发时期运行时期计划时期
(目标与范围说明书 )
(可行性论证论告 )
(维护报告 )
(测试报告 )
(程序 )
(设计文档 )
(需求说明书 )
瀑布模型
1.3.1瀑布模型图 1.10 瀑布模型为了描述软件开发过程中可能的回溯,尤其是维护阶段往往要经历上述各个阶段 。 采用循环模型描述 。
需求分析设计 编码测试运行评价计划
1.3.2 循环模型
1.3.2 循环模型图 1.11 循环模型
1.3.3 增量模型 (incremental model)
1.3.2 渐增模型增量模型是一种非整体开发的模型 。 根据增量的方式和形式的不同,分为基于瀑布模型的渐增模型和基于原型的 快速原型模型 。
该模型具有较大的灵活性,适合于软件需求不明确,
设计方案有一定风险的软件项目 。
增量模型和瀑布模型之间的本质区别是:瀑布模型属于整体开发模型,它规定在开始下一个阶段的工作之前,
必须完成前一阶段的所有细节 。 而增量模型属于非整体开发模型,它推迟某些阶段或所有阶段中的细节,从而较早地产生工作软件 。
对于大型软件,只开发一个原型显然是不能描述系统的生存期的,螺旋模型将瀑布模型与原型化模型结合起来,并加入了风险分析 。
1.3.4 螺旋模型
1.3.4 螺旋模型图 1.12 螺旋模型螺旋模型将开发过程分为几个螺旋周期,每个螺旋周期可分为 4个工作步骤:
第一,确定目标、
方案和限制条件;
第二,评估方案、
标识风险和解决风险;
第三,开发确认产品;
第四,计划下一周期工作。
1.3.5 智能模型 (intelligent model)
获取需求 需求分析 具体描述 优化 程序调整验证维护知识库专家系统程序也称为基于知识的软件开发模型,是知识工程与软件工程相结合的软件开发模型。其主要特点是必须建立知识库,
并将模型本身、软件工程知识、特定领域知识放入知识库。
具体描述可以使用形式功能规约,也可以使用知识处理语言描述等。其模型如图所示:
1.3.5 智能模型图 1.13 智能模型
1.3.6 喷泉模型分 析系统 设计软件 设计实 现图 1.5 喷泉模型该模型是由 B.H.Sollers和 J.M.Edwards于 1990年提出的一种新的开发模型。主要用于采用对象技术的软件开发项目。它克服了瀑布模型不支持软件重用和多项开发活动集成的局限性,
喷泉模型使开发过程具有迭代性和无间隙性。
其特点如下:
1,开发过程有分析、系统设计、软件设计和实现 4个阶段。
2、各阶段相互重叠,它反映了软件过程并行性的特点。
3、以分析为基础,资源消耗成塔型。
4、反映了软件过程迭代性的自然特性,
从高层返回低层无资源消耗。
5、强调增量开发,整个过程是一个迭代的逐步提炼的过程。
1.3.6 喷泉模型
1.4 软件开发方法
1.4 软件开发方法软件开发的目标是要在规定的投资和时间内,开发出符合用户的需求,高质量的软件,为此需要有成功的开发方法 。
为了克服软件危机,从 60年代末开始,一直在进行软件方法的研究与实践,提出了多种软件开发方法和技术,对软件产业的发展起着不可估量的作用 。
软件开发方法可分为几大类:
面向过程的开发方法面向对象的开发方法基于构件的开发方法结构化开发方法 ( Structured Developing Method)
是现有的软件开发方法中最成熟,应用最广泛的方法,主要特点是快速,自然和方便 。
,逐步求精 。 它的基本原则是功能的分解与抽象 。
一,结构化开发方法的组成
70年代初 结构化程序设计方法 SP法 ( Structured Program)
70年代中 结构化设计方法 SD法 ( Structured Design)
70年代末 结构化分析方法 SA法 ( Structured Analysis)
SA,SD,SP 法相互衔接,形成了一整套开发方法 。 若将 SA,
SD 法结合起来,又称为结构化分析与设计技术 ( SADT 技术 ) 。
1.4.1 结构化方法
1.4.1 结构化方法结构化方法的工作模型 — 瀑布模型( Waterfall Model)
但从 80年代开始,逐渐发现其不足,软件开发过程是个充满回朔的过程。而瀑布模型将其分割为独立的几个阶段,不能从本质上反映软件开发过程本身的规律。此外,过分强调复审,
并不能完全避免较为频繁的变动。尽管如此,瀑布模型仍然是开发软件产品的一个行之有效的工程模型。
二、结构化方法的工作模型
1.4.1 结构化方法问题定义编 程需求分析设 计可行性研究运行与维护测 试开发时期运行时期计划时期
(目标与范围说明书 )
(可行性论证论告 )
(维护报告 )
(测试报告 )
(程序 )
(设计文档 )
(需求说明书 )
瀑布模型一,原型化方法 ( Prototyping Method)
原型是软件开发过程中,软件的一个早期可运行的版本,
它反映了最终系统的部分重要特性 。 原型化方法的基本思想是花费少量代价建立一个可运行的系统,使用户及早获得学习 的 机 会,原 型 化 方 法 又 称 速 成 原 型 法 ( Rapid
Prototyping) 。 强调的是软件开发人员与用户的不断交互,
通过原型的演进不断适应用户任务改变的需求 。 将维护和修改阶段的工作尽早进行,使用户验收提前,从而使软件产品更加适用 。
1.4.2 原型化方法及其工作模型
1.4.2 原型化方法及其工作模型原型化方法按运用原型的目的和方式的不同,分为两类:
1) 快速建立需求规格原型 ( RSP 法 )
RSP( Rapid Specification Prototyping) 法所建立的原型反映了系统的某些特征,让用户学习,有利于获得更加精确的需求说明书,待需求说明书一旦确定原型被废弃,后阶段的工作仍按照瀑布模型开发 。
2) 快速建立渐进原型 ( RCP 法 )
RCP( Rapid Cyclic Prototyping) 法采用循环渐进的开发方式,对系统模型作连续精化,将系统需要具备的性质逐步添加上去,直至所有性质全部满足,此时的原型模型也就是最终的产品 。
,探索型,,,实验型,与,进化型,一类的软件系统 。
分类1.3.3 原型化方法及其工作模型速成原型的工作模型是一个循环的模型 。
快速原型法按以下步骤循环执行:
1,快速分析 快速确定软件系统的基本要求,确定原型所要体现的特征 (界面,总体结构,功能,性能 )
2,构造原型 在快速分析的基础上,
根据基本规格说明,忽略细节,只考虑主要特征,快速构造一个可运行的系统 。
有三类原型:用户界面原型,功能原型,
性能原型 。
3,运行和评价原型 用户试用原型并与开发者之间频繁交流,发现问题,目的是验证原型的正确性 。
4,修改与改进 对原型进行修改,增删 。
图 1.19 原型的工作模型工作模型1.3.3 原型化方法及其工作模型构造原型运行 /评价原型原型完成否要细部说明否严格说明细部效果满意否整理原型提供文档修正改进原型
Y
Y
N
N
快速分析,确定初步规格说明
Y
N
1.3.3 原型化方法及其工作模型图 1.20 细化的快速原型模型图 2 细化的快速原型模型
OOSD( Object-Oriented Software Development) 法这是 80年代推出的一种全新的软件开发方法 。 非常实用而强有力,被誉为 90年代软件的核心技术之一 。
1.3.4 面向对象方法及其工作模型
1.4.3 面向对象方法及其工作模型其基本思想是,对问题领域进行自然的分割,以更接近人类通常思维的方式建立问题领域的模型,以便对客观的信息实体进行结构和行为的模拟,从而使设计的软件更直接地表现问题的求解过程 。 面向对象的开发方法以对象作为最基本的元素,是分析和解决问题的核心 。
1.3.5 面向对象开发方法的组成
1.4.4 面向对象开发方法的组成
OOSD由三部分组成:
OOA(Object-Oriented Analysis)面向对象的分析
OOD(Object-Oriented Design)面向对象的设计
OOP (Object-Oriented Program)面向对象的程序设计
OOA 强调的是对一个系统中的对象特征和行为的定义。建立系统的三类模型。
OOD 与 OOA密切配合顺序实现对现实世界的进一步建模。
OOP 是面向对象的技术中发展最快的,使用面向对象的程序设计语言,进行编码。
1,OOA法就是要解决,作什么,的问题 。 OOA 法的基本任务就是要建立三种模型:
状态模型 ( 动态模型 )
描述任何时刻对象的联系及其联系的改变,即时序 。 常用状态图,事件追踪图描述 。
处理模型 ( 函数模型 )
描述系统内部数据的传送处理 。
显然,在三大模型中,最重要的是对象模型 。
对象模型 ( 信息模型 )
定义构成系统的类和对象,它们的属性与操作 。
1,OOA法1.3.5 面向对象开发方法的组成
2,OOD 法在需求分析的基础上,进一步解决,如何作,的问题,
OOD 法也分为概要设计和详细设计。
概要设计,细化对象行为,添加新对象,认定类,组类库,确定外部接口及主要数据结构详细设计,加细对象描述
3,OOP 法使用面向对象的程序设计语言,如 C++进行程序设计 。
Coad和 Yourdon给出一个面向对象的定义:
面向对象 =对象 +类 +继承 +消息

则可以认为这个软件系统是面向对象的 。
模型分类续1.3.5 面向对象方法及其工作模型面向对象的方法的代表性成果有:
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方法,OMT
和 OOSE的基础上推出了统一建模语言 UML。
1.3.5 面向对象方法及其工作模型
1.5 软件复用技术
―软件重用,或,软件复用,( Software Reuse)技术是提高软件生产率和质量,降低成本的有效方法。
一、复用方式:
复用数据,程序(包括 I/O数据)不作任何修改,可在不同环境下使用。
复用结构,复用模块结构或者数据结构。
复用模块,将模块连接到大程序中,包括程序生成器及第四代语言。
复用设计 复用规格说明
1.5 软件复用技术通常有两类:合成技术、生成技术生成技术,
通过生成程序产生一个新的程序段、及采用模式复用。
合成技术,
又称为构件复用,以构件作为复用的基础,构件可以是函数、过程、子程序、数据类型、算法等。用构件来构造软件系统或者更大的构件。
合成方式:连接、消息传递、继承和管道机制等( UNIX
中用管道连接 Shell命令)。
二、软件复用技术
1.5 软件复用技术
1.5 软件工程的基本目标
1.5 软件工程的基本目标软件工程的产生源于克服软件危机,其最终目标是要实现软件生产的自动化,也只有那样,才有可能真正彻底克服软件危机。然而,由于软件开发的特殊性;软件开发过程是高密集性的脑力劳动,使开发过程的复杂性难以控制。
因此,软件工程的基本目标,就是要在确定的时间内,
实现成功开发高质量的软件系统。
这也是学习本课程要实现的基本目标。
软件工程项目具有多目标的特性,其基本目标如图所示:
低开发成本易于维护高可靠性 高性能按时交付互斥互补
1.5.2 软件工程项目的基本目标可见,软件工程所追求的目标是:
多、快、好、省
1.6 软件工具及软件开发环境
CASE(计算机辅助软件工程)的两个阶段:
1、依赖与于软件内生命周期各阶段的分散工具。
2、软件开发环境( Software Development Environment)
软件工程环境( Software Engineering Environment)
包括方法、工具和管理等多种技术在内的综合系统。应具备以下特点:
① 紧密性 (各种工具紧密配合工作)
② 坚定性 (环境可自我保护,不受用户和系统影响,可实现非预见性的环境恢复)
③ 可适应性(适应用户要求,环境中的工具可修改、增加、
减少)
④ 可移植性 (工具可移植)
典型的软件工程环境典型的软件工程环境具有三级结构:
1、核心级 (核心工具组、数据库、通讯工具、运行支持功能、与硬件无关的移植接口)
2、基本级 (环境的用户工具,编译、编辑程序,作业控制语言的解释程序等)
3、应用级 (应用软件的开发工具)
应用级基本级核心级