1、贺志军贺志军 北师大珠海分校信息技术学院励耘楼北师大珠海分校信息技术学院励耘楼small 308 软件工程软件工程 之之Copyright Zhijun He软件和软件工程软件和软件工程21.计算机软件(概念、特点、分类、语言)2.软件危机(表现和根源)3.软件工程(概念、研究内容、发展历程、实践框架)Copyright Zhijun He软件和软件工程软件和软件工程3n什么是计算机软件n计算机软件的特点Copyright Zhijun He软件和软件工程软件和软件工程4可执行部分可执行部分不可执行部分不可执行部分文档文档1文档文档2文档文档3n计算机系统中的程序及其文档的集合,文档是为了便于
2、了解程序所需的阐明性资料,文档一般是给人看的,不一定装入计算机程序程序Copyright Zhijun He软件和软件工程软件和软件工程5n程序:由程序设计语言所描述的、能为计算机所识别、理解和处理的语句序列n程序例子Main()int i,j;/变量定义 char Str10;i=i+j;/语句说明 Copyright Zhijun He软件和软件工程软件和软件工程6n程序设计语言具有良好、严格语法和语义n目前程序设计语言主要有以下几种类型 面向机器:如汇编语言、机器语言等 面向过程:如Fortran,Pascal,C等等 面向对象:如Java等等 面向问题:如结构化查询语言SQL等等早期早
3、期 第二阶段第二阶段 第三阶段第三阶段 第四阶段第四阶段面向批处理面向批处理 多用户多用户 分布式系统分布式系统 强大的桌面系统强大的桌面系统有限的分布有限的分布 实时实时 嵌入嵌入“智能智能”面向对象技面向对象技术术自定义软件自定义软件 数据库数据库 低成本硬件低成本硬件 专家系专家系统 软件产品软件产品 消费者的影响 人工神经网络人工神经网络 并行计算并行计算 网络计算机网络计算机195019601970198019902000Copyright Zhijun He软件和软件工程软件和软件工程8n 1946-1956年年 从计算机问世到实用的高级程序语言出现前从计算机问世到实用的高级程序语
4、言出现前存储容量比较小,运算速度比较慢存储容量比较小,运算速度比较慢采用个体工作方式采用个体工作方式,用低级语言编写程序用低级语言编写程序应用领域主要是以数值数据处理为主的科学应用领域主要是以数值数据处理为主的科学计算,计算,其特点是输入、输出量较小其特点是输入、输出量较小衡量程序质量的标准主要是功效,即运行时间省、衡量程序质量的标准主要是功效,即运行时间省、占用内存小占用内存小主要研究内容是科学计算程序、服务性程序和程主要研究内容是科学计算程序、服务性程序和程序库,研究对象是顺序程序序库,研究对象是顺序程序Copyright Zhijun He软件和软件工程软件和软件工程9n1956-196
5、8年年 从实用的高级程序语言出现到软件工程出现前从实用的高级程序语言出现到软件工程出现前存储器容量大,外围设备得到迅速发展,出现存储器容量大,外围设备得到迅速发展,出现了高级程序设计语言了高级程序设计语言应用领域包括应用领域包括数据处理(非数值数据),其特数据处理(非数值数据),其特点是计算量不大,但输入、输出量却较大点是计算量不大,但输入、输出量却较大高速主机与低速外围设备的矛盾突出,出现了高速主机与低速外围设备的矛盾突出,出现了操作系统、并发程序、数据库及其管理系统操作系统、并发程序、数据库及其管理系统2020世纪世纪6060年代初提出了软件一词,开始认识到年代初提出了软件一词,开始认识到
6、文档的重要性文档的重要性研究高级程序设计语言、编译程序、操作系统、研究高级程序设计语言、编译程序、操作系统、支持编程的工具及各种应用软件支持编程的工具及各种应用软件工作方式逐步从个体方式转向合作方式工作方式逐步从个体方式转向合作方式出现软件危机出现软件危机Copyright Zhijun He软件和软件工程软件和软件工程10n1968年年-至今至今 从软件工程出现到现在从软件工程出现到现在硬件向巨型机和微型机二个方向发展,出现了硬件向巨型机和微型机二个方向发展,出现了计算机网络,软件方面提出了软件工程,出现计算机网络,软件方面提出了软件工程,出现了了“计算机辅助软件工程计算机辅助软件工程”(C
7、ASE)计算机的应用领域渗透到各个业务领域,出现计算机的应用领域渗透到各个业务领域,出现了嵌入式应用,其特点是受制于它所嵌入的宿了嵌入式应用,其特点是受制于它所嵌入的宿主系统主系统开发方式逐步由个体合作方式转向工程方式开发方式逐步由个体合作方式转向工程方式软件工程方面的研究主要包括软件开发模型、软件工程方面的研究主要包括软件开发模型、软件开发方法及技术、软件工具与环境、软件软件开发方法及技术、软件工具与环境、软件过程、软件自动化系统等过程、软件自动化系统等软件方面研究以智能化、自动化、集成化、并软件方面研究以智能化、自动化、集成化、并行化、以及自然化为标志的软件开发新技术行化、以及自然化为标志
8、的软件开发新技术Copyright Zhijun He软件和软件工程软件和软件工程11n追求更具表达能力、更符合人类思维模式、易构造、易演化的计算模型n软件基本模型=实体元素连接和交互Copyright Zhijun He软件和软件工程软件和软件工程12n尽可能提高软件开发的效率和质量n凝练共性并复用Copyright Zhijun He软件和软件工程软件和软件工程13n开发而成非制造产生的,n逻辑产品(智力,无形)非物理产品n维护困难和复杂(完善,纠错,.)n不会老化磨损,只会失效,维护引起的副作用Copyright Zhijun He软件和软件工程软件和软件工程14Copyright Zh
9、ijun He软件和软件工程软件和软件工程15n生产只需复制n软件开发性质如成本、进度等难以估计n软件的开发更加依赖于开发人员的业务素质、智力、人员的合作、组织和管理n软件的开发和运行常受到计算机硬件的限制,对计算机硬件有着不同程度的依赖性n软件的开发至今尚未完全实现自动化n软件成本相当昂贵n相当多的软件工作涉及到社会因素Copyright Zhijun He软件和软件工程软件和软件工程16n按工作范围和使用特点分:n系统软件:系统软件是一组为其他程序服务的程序。一些系统软件(如编译器、编辑器和文件管理程序)处理复杂的但也是确定的信息结构。其他的系统应用(如操作系统、驱动程序和通讯进程等)则处
10、理大量的非确定的数据。不管哪种情况,系统软件均具有以下特点:与计算机硬件频繁交互;多用户支持;需要精细调度、资源共享及灵活的进程管理的并发操作;复杂的数据结构;及多外部接口。Copyright Zhijun He软件和软件工程软件和软件工程17n商业软件:商业信息处理是最大的软件应用领域。具体的“系统”(如工资表、帐目支付和接收、存货清单等)均可归为管理信息系统(MIS)软件,它们可以访问一个或多个包含商业信息的大型数据库。该领域的应用将已有的数据重新构造,变换成一种能够辅助商业操作和管理决策的形式。除了传统的数据处理应用之外,商业软件应用还包括交互式的和客户机/服务器式的计算(如POS 事务
11、处理)。Copyright Zhijun He软件和软件工程软件和软件工程18n实时软件:管理、分析、控制现实世界中发生的事件的程序称为实时软件。实时软件的组成包括:一个数据收集部件,负责从外部环境获取和格式化信息;一个分析部件,负责将信息转换成应用时所需要的形式;一个控制/输出部件,负责响应外部环境;及一个管理部件,负责协调其他各部件,使得系统能够保持一个可接受的实时响应时间(一般从1 毫秒到1 分钟),应该注意到术语“实时”不同于“交互”或“分时”。一个实时系统必须在严格的时间范围内响应。而一个交互系统(或分时系统)的响应时间可以延迟,且不会带来灾难性的后果。Copyright Zhiju
12、n He软件和软件工程软件和软件工程19n工程和科学计算软件:工程和科学计算软件的特征是“数值分析”算法。此类应用含盖面很广,从天文学到火山学;从汽车压力分析到航天飞机的轨道动力学;从分子生物学到自动化制造。不过,目前工程和科学计算软件已不仅限于传统的数值算法。计算机辅助设计、系统仿真和其他交互应用已经开始具有实时软件和系统软件的特征。Copyright Zhijun He软件和软件工程软件和软件工程20n嵌入式软件:智能产品在几乎每一个消费或工业市场上都是必不可少的,嵌入式软件驻留在只读内存中,用于控制这些智能产品。嵌入式软件能够执行很有限但专职的功能(如微波炉的按钮控制),或是提供比较强大
13、的功能及控制能力(如汽车中的数字控制,包括燃料控制、仪表板显示,刹车系统等)Copyright Zhijun He软件和软件工程软件和软件工程21n个人计算机软件:个人计算机软件市场是在过去十年中萌芽和发展起来的。字处理、电子表格、计算机图形、多媒体、娱乐、数据库管理、个人及商业金融应用、外部网络或数据库访问,这些仅仅是成百上千这类应用中的几种Copyright Zhijun He软件和软件工程软件和软件工程22n人工智能软件:人工智能(AI)软件利用非数值算法去解决复杂的问题,这些问题不能通过计算或直接分析得到答案。一个活跃的AI 领域是专家系统,也称为基于知识的系统。AI 软件的其他应用领
14、域还包括模式识别(图象或声音)、定理证明和游戏。最近,AI 软件的一个新分支,称为人工神经网络,得到了很大进展。神经网络仿真人脑的处理结构(生物神经系统的功能),这有可能导致一个全新类型的软件登场,它不仅能够识别复杂的模式,而且还能从过去的经验中自行学习进步。Copyright Zhijun He软件和软件工程软件和软件工程23n 按软件工作方式划分:按软件工作方式划分:实时处理软件实时处理软件 分时软件分时软件 交互式软件交互式软件 批处理软件批处理软件n 按软件服务对象的范围划分:按软件服务对象的范围划分:项目软件项目软件 产品软件产品软件 Copyright Zhijun He软件和软件
15、工程软件和软件工程24n 按使用的频度进行划分:按使用的频度进行划分:一次使用一次使用 频繁使用频繁使用n 按软件失效的影响进行划分:按软件失效的影响进行划分:高可靠性软件高可靠性软件 一般可靠性软件一般可靠性软件Copyright Zhijun He软件和软件工程软件和软件工程25 软件语言是用于书写计算机软件的语言。它主要包括:需求定义语言需求定义语言 功能性语言功能性语言 设计性语言设计性语言 实现性语言(即程序设计语言)实现性语言(即程序设计语言)文档语言文档语言Copyright Zhijun He软件和软件工程软件和软件工程26需求定义语言用来书写软件需求定义。需求定义语言用来书写
16、软件需求定义。软件需求定义是软件功能需求和非功能需软件需求定义是软件功能需求和非功能需求的定义性描述。软件功能需求刻画软件求的定义性描述。软件功能需求刻画软件“做做什么什么”,软件非功能需求刻画诸如功能性限制、,软件非功能需求刻画诸如功能性限制、设计限制、环境描述、数据与通信规程及项目设计限制、环境描述、数据与通信规程及项目管理等管理等典型的需求定义语言有典型的需求定义语言有PSL语言(语言(Problem Statement Language问题陈述语言)问题陈述语言)Copyright Zhijun He软件和软件工程软件和软件工程27功能性语言用来书写软件功能规约功能性语言用来书写软件功
17、能规约(functional specification)软件功能规约是软件功能的严格而完软件功能规约是软件功能的严格而完整的陈述。通常它只刻画软件系统整的陈述。通常它只刻画软件系统“做做什么什么”的外部功能,而不涉及系统的外部功能,而不涉及系统“如如何做何做”的内部算法。的内部算法。典型的功能性语言有广谱语言、典型的功能性语言有广谱语言、Z语语言。言。Copyright Zhijun He软件和软件工程软件和软件工程28设计性语言用来书写软件设计规约(设计性语言用来书写软件设计规约(design specification)软件设计规约是软件设计的严格而完整的软件设计规约是软件设计的严格而完
18、整的陈述。一方面,它是软件功能规约的算法性细陈述。一方面,它是软件功能规约的算法性细化,刻画软件化,刻画软件“如何做如何做”的内部算法,另一方的内部算法,另一方面,它是软件实现的依据。面,它是软件实现的依据。典型的设计性语言有典型的设计性语言有PDL语言(语言(Program Design Language)Copyright Zhijun He软件和软件工程软件和软件工程29 实现性语言用来书写计算机程序实现性语言用来书写计算机程序 实现性语言也称实现性语言也称编程语言编程语言或或程序设计程序设计语言语言(programming language)程序设计语言可按语言的级别、对使用程序设计语
19、言可按语言的级别、对使用者的要求、应用范围、使用方式、成分者的要求、应用范围、使用方式、成分性质等多种角度进行分类性质等多种角度进行分类 Copyright Zhijun He软件和软件工程软件和软件工程30n 按语言级别分:按语言级别分:低级语言低级语言和和高级语言高级语言 低级语言低级语言是与特定计算机体系结构密切是与特定计算机体系结构密切相关的程序设计语言,如机器语言、汇编相关的程序设计语言,如机器语言、汇编语言。其特点是与机器有关,功效高,但语言。其特点是与机器有关,功效高,但使用复杂,开发费时,难维护。使用复杂,开发费时,难维护。高级语言高级语言是不反映特定计算机体系结构是不反映特定
20、计算机体系结构的程序设计语言,它的表示方法比低级语的程序设计语言,它的表示方法比低级语言更接近于待解问题的表示方法。其特点言更接近于待解问题的表示方法。其特点是在一定程度上与具体机器无关,易学、是在一定程度上与具体机器无关,易学、易用、易维护。但高级语言程序经编译后易用、易维护。但高级语言程序经编译后产生的目标程序的功效往往较低。产生的目标程序的功效往往较低。Copyright Zhijun He软件和软件工程软件和软件工程31n 按用户要求分:按用户要求分:过程式语言过程式语言和和非过程式语言非过程式语言 过程式语言(过程式语言(procedural language)是通过是通过指明一列可
21、执行的运算及运算次序来描述计算指明一列可执行的运算及运算次序来描述计算过程的程序设计语言。如过程的程序设计语言。如FORTRAN、COBOL、C等。等。非过程式语言(非过程式语言(nonprocedural language)是不显式指明处理过程细节的程序设计语言。是不显式指明处理过程细节的程序设计语言。在这种语言中尽量引进各种抽象度较高的非过在这种语言中尽量引进各种抽象度较高的非过程性描述手段,以期做到在程序中增加程性描述手段,以期做到在程序中增加“做什做什么么”的描述成分,减少的描述成分,减少“如何做如何做”的细节描述。的细节描述。如第四代语言(如第四代语言(4GL)、函数式语言、逻辑式)
22、、函数式语言、逻辑式语言。语言。Copyright Zhijun He软件和软件工程软件和软件工程32也可称:也可称:命令式语言命令式语言和和申述式语言申述式语言 命令式语言(命令式语言(imperative language)即即过程式语言。过程式语言。申述式语言(申述式语言(declarative language)是是着重描述要处理什么,而非描述如何处理着重描述要处理什么,而非描述如何处理的语言。申述式语言程序是关于问题解的的语言。申述式语言程序是关于问题解的约束陈述,这些约束迫使含于实现中的算约束陈述,这些约束迫使含于实现中的算法处理机制生成一个解或一组解。如函数法处理机制生成一个解或
23、一组解。如函数式语言、逻辑式语言。式语言、逻辑式语言。Copyright Zhijun He软件和软件工程软件和软件工程33复旦大学计算机科学与工程系 软件工程课程33/154 函数式语言函数式语言(functional programming language)中函数是构造程序的基本成分,它提供一些设中函数是构造程序的基本成分,它提供一些设施用于构造更为复杂的函数。程序人员根据提施用于构造更为复杂的函数。程序人员根据提出的问题去定义求解函数(即主程序),其中出的问题去定义求解函数(即主程序),其中可能包含一些辅助函数。如可能包含一些辅助函数。如Lisp语言。语言。逻辑式语言逻辑式语言(log
24、ic programming language)的基的基本运算单位是谓词。谓词定义了变元间的逻辑本运算单位是谓词。谓词定义了变元间的逻辑关系。例如,关系。例如,Prolog语言的基本形式是语言的基本形式是Horn子子句,其程序围绕着某一主题的事实、规则和询句,其程序围绕着某一主题的事实、规则和询问三类语句组成。这三类语句分别用来陈述事问三类语句组成。这三类语句分别用来陈述事实、定义规则和提出问题。实、定义规则和提出问题。Copyright Zhijun He软件和软件工程软件和软件工程34n 按应用范围分:按应用范围分:通用语言通用语言和和专用语言专用语言 通用语言通用语言指目标非单一的语言,
25、如指目标非单一的语言,如FORTRAN、COBOL、C等。等。专用语言专用语言指目标单一的语言,如自动指目标单一的语言,如自动数控程序数控程序APT。Copyright Zhijun He软件和软件工程软件和软件工程35n 按使用方式分:按使用方式分:交互式语言交互式语言和和非交互非交互式语言式语言 交互式语言交互式语言指具有反映人机交互作用指具有反映人机交互作用的语言,如的语言,如BASIC。非交互式语言非交互式语言指不反映人机交互作用指不反映人机交互作用的语言,如的语言,如FORTRAN、COBOL。Copyright Zhijun He软件和软件工程软件和软件工程36n 按成分性质分:按
26、成分性质分:顺序语言顺序语言、并发语言并发语言、分布语言分布语言 顺序语言顺序语言指只含顺序成分的语言,如指只含顺序成分的语言,如FORTRAN、C。并发语言并发语言指含有并发成分的语言,如指含有并发成分的语言,如Modula、Ada、并发、并发Pascal。分布语言分布语言指考虑到分布计算要求的语指考虑到分布计算要求的语言,如言,如Modula。Copyright Zhijun He软件和软件工程软件和软件工程37n 文档语言文档语言用来书写软件文档。用来书写软件文档。计算机软件文档是计算机开发、维护计算机软件文档是计算机开发、维护和使用过程的档案资料和对软件本身的和使用过程的档案资料和对软
27、件本身的阐述性资料。阐述性资料。通常用自然语言或半形式化语言书写。通常用自然语言或半形式化语言书写。Copyright Zhijun He软件和软件工程软件和软件工程38n文档:记录软件开发活动和阶段性成果、理解软件所必需的阐述性资料 需求分析文档 软件设计文挡等 n编写文档目的 促进对软件的开发,管理和维护;便于各种人员(用户,开发人员)的交流Copyright Zhijun He软件和软件工程软件和软件工程39nRUP文档模板Copyright Zhijun He软件和软件工程软件和软件工程401.计算机软件(概念、特点、分类、语言)2.软件危机(表现和根源)3.软件工程(概念、研究内容、
28、发展历程、实践框架)Copyright Zhijun He软件和软件工程软件和软件工程41n什么是软件危机n软件危机的表现n产生软件危机的根源n解决危机的技术途径n解决危机的管理途径Crisis!Copyright Zhijun He软件和软件工程软件和软件工程42n软件在开发和维护过程中遇到的一系列问题 艺术 vs.标准化 错误的发现 软件需求获取 软件支持和维护 开发速度 vs.市场需求 开发周期过长、开发成本过高 研发风险 软件Trouble 软件开发中的复杂的协作(人员,问题,过程)不同角色的软件神话(管理者,用户,开发者,大众)Copyright Zhijun He软件和软件工程软件
29、和软件工程43n成本高 IBM 360 OS,5000多人年,耗时4年(19631966),花费2亿多美元 美国空军:1955年软件占总费用(计算机系统)的18%,70年60%,85年达到85 美国全球军事指挥控制系统,硬件1亿美元,软件高达7.2亿美元n计算机软件和硬件费用比Copyright Zhijun He软件和软件工程软件和软件工程44n软件质量得不到保证 软件应用面的扩大:科学计算、军事、航空航天、工业控制、企业管理、办公、家庭 软件越来越多的应用于安全犹关(safety critical)的系统,对软件质量提出更高的要求 80年代欧洲亚丽安娜火箭的发射失败,原因是软件错误 美国阿
30、托拉斯火箭的发射失败,原因是软件故障 英国1986年开发的办公室信息系统Folios经4年,因性能达不到要求,1989年取消 日本第5代机因为软件问题在投入50亿美元后于1993年下马n由于软件质量问题导致失败的软件项目非常多Copyright Zhijun He软件和软件工程软件和软件工程45n进度难以控制 项目延期比比皆是 由于进度问题而取消的软件项目较常见 只有一小部分的项目能够按期完成n维护非常困难 软件维护的多样性 软件维护的复杂性 软件维护的副作用Copyright Zhijun He软件和软件工程软件和软件工程46n逻辑产品,不同于物理产品n复杂性高 逻辑产品,逻辑复杂性,远高于
31、硬件复杂性 软件的复杂性随规模呈指数级上升n规模大 应用扩大,代码量,1000万行,仍在不断膨胀n影响软件生产率和质量的因素比较复杂 人员的能力和水平 团队合作n缺乏有效、系统原理、原则、方法和工具的指导和辅助Copyright Zhijun He软件和软件工程软件和软件工程47n开发一个具有一定规模和复杂性的软件系统与编写一个简单的程序不一样 正如建设狗窝和高楼大厦n大型、复杂软件系统的开发是一项工程,必须按照工程化的方法组织软件的生产和管理,必须经过分析、设计、实现、测试、维护等一系列软件过程和活动Copyright Zhijun He软件和软件工程软件和软件工程48n20世纪60年代爆发
32、,然而实际上软件危机随着计算机软件的产生而产生,只是在此之前其问题的严重性没有引起人们的关注和重视n提出有效的方法和工具支持软件开发 1968年提出软件工程概念和思想 20世纪70年代的结构化软件开发方法 20世纪80年代的面向对象的软件开发方法 新的技术:软件重用、快速原型、需求工程 典型技术:COM,Java,C+,J2EE,.Net,.支撑工具和环境:Eclipse,Visual Studio,WebLogic,Rose,CVSCopyright Zhijun He软件和软件工程软件和软件工程49n到了20世纪90年代,软件危机依然存在,甚至更为严重 应用牵引技术的发展n瀑布模型n结构化
33、软件开发方法nOO软件开发方法 技术推动应用的深化n应用的扩大和深入 应用变得越来越大和复杂,技术变得更加力不从心 错误的观念“只要有好的软件开发方法和工具就能高效率地开发出高质量的软件”Copyright Zhijun He软件和软件工程软件和软件工程50n问题出在哪里?n20世纪80年代末,美国DoD和工业界开始认识到管理的重要性 美国DoD的一项研究表明,70%的项目由于管理不善导致难以控制进步、成本和质量;进一步的研究发现:管理是影响软件项目成功开发的全局性因素,而技术只影响局部 如果软件开发组织不能对软件项目进行有效管理,就不能充分发挥软件开发方法和工具的潜力,也就不能高效率地开发出
34、高质量的软件产品Copyright Zhijun He软件和软件工程软件和软件工程511.计算机软件(概念、特点、分类、语言)2.软件危机(表现和根源)3.软件工程(概念、研究内容、发展历程、实践框架)Copyright Zhijun He软件和软件工程软件和软件工程52n软件危机-根源-解决途径:软件工程n产生:1968年 NATO 计算机科学会议,Fritz Bauer在在会议会议上给出的定义:上给出的定义:“软件工程是为了经济地获得软件工程是为了经济地获得可靠的和能在实际机器上高效运行可靠的和能在实际机器上高效运行的软件而确立和使用的健全的工程的软件而确立和使用的健全的工程原理(方法)。
35、原理(方法)。”Copyright Zhijun He软件和软件工程软件和软件工程53 IEEEIEEE【IEE93】给出了一个更加综给出了一个更加综合的定义:合的定义:“(1)将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中。(2)(1)中所述方法的研究。”n软件工程是运用工程的、数学的、计算机等科学概念、方法和原理来指导软件开发和管理和维护的一门学科Copyright Zhijun He软件和软件工程软件和软件工程54-n任何工程方法(包括软件工程)必须以有组织的质量保证为基础。n全面的质量管理和类似的理念刺激了不断的过程改进,n正是这种改进导致了
36、更加成熟的软件工程方法的不断出现,以及支持方法的工具的出现。n支持软件工程的根基就在于对质量的关注工具方法过程质量焦点Roger S.PressmanCopyright Zhijun He软件和软件工程软件和软件工程55-n软件工程过程是将技术层结合在一起的凝聚力,使得计算机软件能够被合理地和及时地开发出来。过程定义了一组关键过程区域的框架,这对于软件工程技术的有效应用是必须的。n关键过程区域构成了软件项目的管理控制的基础,并且确立了上下各区域之间的关系,其中规定了技术方法的采用、工程产品(模型、文档、数据、报告、表格等)的产生、里程碑的建立、质量的保证及变化的适当管理质量焦点Copyrigh
37、t Zhijun He软件和软件工程软件和软件工程56n软件工程的方法层提供了建造软件在技术上需要“如何做”。方法涵盖了一系列的任务:需求分析、设计、编程、测试和维护。n软件工程方法依赖于一组基本原则,这些原则控制了每一个技术区域,且包含建模活动和其他描述技术。Copyright Zhijun He软件和软件工程软件和软件工程57n软件工程的工具层对过程和方法提供了自动的或半自动的支持。当这些工具被集成起来使得一个工具产生的信息可被另外一个工具使用时,一个支持软件开发的系统就建立了,称为计算机辅助软件工程(CASE)。nCASE 集成了软件、硬件和一个软件工程数据库(一个仓库,其中包含了关于分
38、析、设计、编程和测试的重要信息),从而形成了一个软件工程环境,它类似于硬件的CAD/CAE(计算机辅助设计/工程)。软件工程主要研究内容(从学科角度)1 1、软件开发、软件开发技术技术:软件开发方法软件开发方法学学 软件开发过程软件开发过程 软件工具软件工具和软件工程和软件工程环境环境 2 2、软件工程管理、软件工程管理:软件管理软件管理学学 软件经济学软件经济学 软件软件心理学心理学 软件工程所包含的内容不是一成不变的,软件工程所包含的内容不是一成不变的,随着人们对软件系统的研制开发和生产的理解。随着人们对软件系统的研制开发和生产的理解。应用发展的眼光看待它。应用发展的眼光看待它。Copyr
39、ight Zhijun He软件和软件工程软件和软件工程59(1).(1).软件开发过程模型软件开发过程模型,如:瀑布模型、,如:瀑布模型、增量模型、原型模型、螺旋模型、迭代模增量模型、原型模型、螺旋模型、迭代模型等。型等。(2).(2).软件开发模型和方法软件开发模型和方法,如:面向过程,如:面向过程的方法、面向数据的方法、面向对象的方的方法、面向数据的方法、面向对象的方法法(包括面向业务基础平台的方法、面向包括面向业务基础平台的方法、面向工作流方法、面向主体的方法、面向方面工作流方法、面向主体的方法、面向方面的方法、面向代理的方法等等的方法、面向代理的方法等等),以及形,以及形式化方法。式
40、化方法。Copyright Zhijun He软件和软件工程软件和软件工程60(3).(3).软件支持过程(工具)软件支持过程(工具),如:,如:CASECASE工具工具RoseRose、北大青鸟系统、北大青鸟系统、Power Power DesignerDesigner、ERWinERWin,以及配置管理工具,以及配置管理工具等。等。(4).(4).软件管理过程软件管理过程,如:,如:ISO9000ISO9000、CMM/CMMICMM/CMMI、软件企业文化、软件企业文化(微软企业文微软企业文件、敏捷文化现象、件、敏捷文化现象、IBMIBM企业文化企业文化)。Copyright Zhiju
41、n He软件和软件工程软件和软件工程61Copyright Zhijun He软件和软件工程软件和软件工程62Copyright Zhijun He软件和软件工程软件和软件工程63软件工程技术呈多线、并行、交叉发展,软件工程技术呈多线、并行、交叉发展,每个线路都有各自的里程碑每个线路都有各自的里程碑Copyright Zhijun He软件和软件工程软件和软件工程64n软件开发队伍的最佳实践Copyright Zhijun He软件和软件工程65 统一软件开发过程统一软件开发过程RUPRUP(Rational Unified Process)是是Rational公司公司1998年发布的通用的软
42、件开发过程框架年发布的通用的软件开发过程框架RUP是一种软件工程过程是一种软件工程过程;统一了各种开发方法统一了各种开发方法;使用统一建模语言使用统一建模语言UML RUP和和CMM相辅相成相辅相成;软件企业使用软件企业使用RUP很容易达到很容易达到CMM3级的要求级的要求;RUP可以作为可以作为CMM3级所要求的机构标准软件级所要求的机构标准软件 过程过程;可可用用性性性性性性确确正正经经济济选取适宜的过程模型选取适宜的过程模型采用合适开发方法采用合适开发方法提供高质量的工程支持提供高质量的工程支持重视软件工程的管理重视软件工程的管理基基本本过过程程原则原则 目标目标 过过 程程支支持持过过
43、程程组组织织过过程程Copyright Zhijun He软件和软件工程软件和软件工程67n正确性 满足用户的需求(功能、性能等)n可靠性 具有能够防止因概念、设计和结构等方面的不完善而造成的系统失效,具有挽回因操作不当造成软件系统失效的能力 n可维护性 便于对软件增加新功能、改进性能、修改错误、移植 n可重用性 软件易于被再次使用Copyright Zhijun He软件和软件工程软件和软件工程68n可追踪性 对软件进行正向和反向追踪的能力 n可移植性 从一个环境搬迁到另一个环境 n可互操作性 多个软件要素相互通讯协同完成任务能力 n有效性 充分利用计算机的时间和空间资源 Copyright Zhijun He软件和软件工程软件和软件工程69n选取适宜的过程模型n采用合适的分析设计方法n提供高质量的工程支持-人力、软、硬件基础设施n重视软件过程管理Copyright Zhijun He软件和软件工程软件和软件工程701.软件是程序以及相关文档的集合2.软件危机的表现,根源之一在于缺乏系统的方法和工具的指导3.软件工程:方法,工具和过程4.软件工程的目标和原则Copyright Zhijun He软件和软件工程软件和软件工程71Practice,Practice,and Practice
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。