1、软件工程-原理、方法与应用电子教案电子教案54课时第1页课程安排n理论理论n内容:基本原理、方法和技术内容:基本原理、方法和技术n形式:讲授、自学、讨论形式:讲授、自学、讨论n实践实践n内容:结构一个应用系统(包含分析、设计、内容:结构一个应用系统(包含分析、设计、编码、测试)编码、测试)n形式:分组、分阶段文档、编码、集成形式:分组、分阶段文档、编码、集成第2页软件工程主要内容n软件工程基本概念软件工程基本概念n软件开发模型软件开发模型n软件开发各阶段任务、技术、方法软件开发各阶段任务、技术、方法n传统方法、面向对象方法传统方法、面向对象方法n软件工程管理软件工程管理n软件质量确保软件质量确
2、保n软件工程环境软件工程环境第3页第一章 绪论n软件与软件危机软件与软件危机n软件工程学软件工程学n传统软件工程和面向对象软件工程传统软件工程和面向对象软件工程n软件工程应用软件工程应用第4页软件(定义一)软件(定义一)n程序、软件与软件产品程序、软件与软件产品独唱独唱-小合唱小合唱-合唱合唱-万人大合唱万人大合唱|简单程序简单程序 较复杂程序较复杂程序 软件软件n软件定义:软件定义:软件软件=程序程序+数据数据+文档文档程序:按事先设计功效和性能需求执行指令序列程序:按事先设计功效和性能需求执行指令序列数据:是程序能正常操纵信息数据结构数据:是程序能正常操纵信息数据结构文档:与程序开发、维护
3、和使用相关图文材料文档:与程序开发、维护和使用相关图文材料 第5页计算机软件(定义二)计算机软件(定义二)n计算机软件指计算机系统中计算机软件指计算机系统中程序及其文档程序及其文档n程序是程序是计算任务计算任务处理对象处理对象和和处理规则处理规则描述描述n任务:以计算机为处理工具任务都是计算任务任务:以计算机为处理工具任务都是计算任务n处理对象:数据(如数据、文字、图形、图像、处理对象:数据(如数据、文字、图形、图像、声音等,它们只是表示,而无含义)或信息(数声音等,它们只是表示,而无含义)或信息(数据及相关含义)据及相关含义)n处理规则普通指处理动作和步骤。程序必须装入处理规则普通指处理动作
4、和步骤。程序必须装入计算机内才能工作计算机内才能工作n文档是为了便于了解程序所需说明性资料,文档普文档是为了便于了解程序所需说明性资料,文档普通是给人看,不一定装入计算机通是给人看,不一定装入计算机第6页软件分类软件分类n系统软件系统软件:属于计算机系统中最靠近硬件一层,其:属于计算机系统中最靠近硬件一层,其它软件普通都经过系统软件发挥作用,它与详细应它软件普通都经过系统软件发挥作用,它与详细应用领域无关。如操作系统、编译程序等。用领域无关。如操作系统、编译程序等。n支持软件支持软件:支持软件开发和维护软件。如数据库管:支持软件开发和维护软件。如数据库管理系统、网络软件、软件开发环境等。理系统
5、、网络软件、软件开发环境等。n应用软件应用软件:特定应用领域专用软件。如实时软件、:特定应用领域专用软件。如实时软件、嵌入式软件、科学和工程计算软件、事务处理软件、嵌入式软件、科学和工程计算软件、事务处理软件、人工智能软件等人工智能软件等。第7页n 按软件工作方式划分:按软件工作方式划分:实时处理软件实时处理软件 分时软件分时软件 交互式软件交互式软件 批处理软件批处理软件n 按软件服务对象范围划分:按软件服务对象范围划分:项目软件项目软件 产品软件产品软件 第8页n 按使用频度进行划分:按使用频度进行划分:一次使用一次使用 频繁使用频繁使用n 按软件失效影响进行划分:按软件失效影响进行划分:
6、高可靠性软件高可靠性软件 普通可靠性软件普通可靠性软件第9页软件发展n 1946-1956年年 从计算机问世到实用高级程序语言出现前从计算机问世到实用高级程序语言出现前存放容量比较小,运算速度比较慢存放容量比较小,运算速度比较慢采取个体工作方式采取个体工作方式,用低级语言编写程序用低级语言编写程序应用领域主要是以数值数据处理为主科学应用领域主要是以数值数据处理为主科学计算,其计算,其特点是输入、输出量较小特点是输入、输出量较小衡量程序质量标准主要是功效,即运行时间省、占衡量程序质量标准主要是功效,即运行时间省、占用内存小用内存小主要研究内容是科学计算程序、服务性程序和程序主要研究内容是科学计算
7、程序、服务性程序和程序库,研究对象是次序程序库,研究对象是次序程序第10页n1956-1968年年 从实用高级程序语言出现到软件工程出现前从实用高级程序语言出现到软件工程出现前存放器容量大,外围设备得到快速发展,出现存放器容量大,外围设备得到快速发展,出现了高级程序设计语言了高级程序设计语言应用领域包含应用领域包含数据处理(非数值数据),其特数据处理(非数值数据),其特点是计算量不大,但输入、输出量却较大点是计算量不大,但输入、输出量却较大高速主机与低速外围设备矛盾突出,出现了操高速主机与低速外围设备矛盾突出,出现了操作系统、并发程序、数据库及其管理系统作系统、并发程序、数据库及其管理系统20
8、20世纪世纪6060年代初提出了软件一词,开始认识到年代初提出了软件一词,开始认识到文档主要性文档主要性研究高级程序设计语言、编译程序、操作系统、研究高级程序设计语言、编译程序、操作系统、支持编程工具及各种应用软件支持编程工具及各种应用软件工作方式逐步从个体方式转向合作方式工作方式逐步从个体方式转向合作方式出现软件危机出现软件危机第11页n1968年年-至今至今 从软件工程出现到现在从软件工程出现到现在硬件向巨型机和微型机二个方向发展,出现了硬件向巨型机和微型机二个方向发展,出现了计算机网络,软件方面提出了软件工程,出现计算机网络,软件方面提出了软件工程,出现了了“计算机辅助软件工程计算机辅助
9、软件工程”(CASE)计算机应用领域渗透到各个业务领域,出现了计算机应用领域渗透到各个业务领域,出现了嵌入式应用,其特点是受制于它所嵌入宿主系嵌入式应用,其特点是受制于它所嵌入宿主系统统开发方式逐步由个体合作方式转向工程方式开发方式逐步由个体合作方式转向工程方式软件工程方面研究主要包含软件开发模型、软软件工程方面研究主要包含软件开发模型、软件开发方法及技术、软件工具与环境、软件过件开发方法及技术、软件工具与环境、软件过程、软件自动化系统等程、软件自动化系统等软件方面研究以智能化、自动化、集成化、并软件方面研究以智能化、自动化、集成化、并行化、以及自然化为标志软件开发新技术行化、以及自然化为标志
10、软件开发新技术第12页软件特点软件特点n软件是一个逻辑实体,而不是有形系统元软件是一个逻辑实体,而不是有形系统元件,其开发成本和进度难以准确地估算件,其开发成本和进度难以准确地估算n软件是被开发或被设计,它没有显著制造软件是被开发或被设计,它没有显著制造过程,一旦开发成功,只需复制即可,但过程,一旦开发成功,只需复制即可,但其维护工作量大其维护工作量大n软件使用没有硬件那样机械磨损和老化问软件使用没有硬件那样机械磨损和老化问题题第13页第14页 软件其它特点:软件其它特点:n软件开发和运行常受到计算机硬件限软件开发和运行常受到计算机硬件限制,制,对计算机硬件有着不一样程度依对计算机硬件有着不一
11、样程度依赖性赖性n软件开发至今软件开发至今还未完全实现自动化还未完全实现自动化n软件成本相当昂贵软件成本相当昂贵n相当多软件工作相当多软件工作包括到社会原因包括到社会原因第15页第16页软件特征(归纳)软件特征(归纳)n软件是逻辑,而不是物理软件是逻辑,而不是物理n软件开发与人关系亲密软件开发与人关系亲密n软件开发成本大软件开发成本大n软件生产是简单拷贝软件生产是简单拷贝n软件不会磨损和老化软件不会磨损和老化n软件受环境影响大软件受环境影响大n软件维护易产生新问题软件维护易产生新问题第17页软件技术进步落后于需求增加第18页软件开发发展过程软件开发发展过程计算机应用计算机应用发展发展软件数量多
12、软件数量多规模大规模大软件成本高质软件成本高质量低量低个体化软件开发方法个体化软件开发方法软件维护困难软件维护困难软件危机软件危机软件工程软件工程第19页软件危机软件危机 定义:定义:计算机软件开发和维护过程所碰到计算机软件开发和维护过程所碰到一系列严重问题一系列严重问题 第20页软件危机表现软件危机表现n对软件开发成本和进度预计经常很不正确对软件开发成本和进度预计经常很不正确n用户对用户对“已完成已完成”软件系统不满意现象经常发生软件系统不满意现象经常发生n软件产品质量往往靠不住软件产品质量往往靠不住n软件经常是不可维护软件经常是不可维护n软件通常没有适当文档资料软件通常没有适当文档资料n软
13、件成本在计算机系统总成本中所占百分比逐年上软件成本在计算机系统总成本中所占百分比逐年上升升n软件开发生产率提升速度远远跟不上计算机应用快软件开发生产率提升速度远远跟不上计算机应用快速普及深入趋势速普及深入趋势第21页软件危机原因软件危机原因n软件是逻辑产品,开发进度、成本难以预计软件是逻辑产品,开发进度、成本难以预计n缺乏或不完整、不一致文档给维护带来困难缺乏或不完整、不一致文档给维护带来困难n用户对软件需求描述往往不够准确,有遗漏,有二义用户对软件需求描述往往不够准确,有遗漏,有二义n软件开发人员对需求了解与用户原来愿望有差异软件开发人员对需求了解与用户原来愿望有差异n大型软件项目需多人协同
14、完成,缺乏管理经验大型软件项目需多人协同完成,缺乏管理经验n开发人员不能有效地、独立自主地处理大型软件全部开发人员不能有效地、独立自主地处理大型软件全部关系关系n缺乏有力方法学和工具支持缺乏有力方法学和工具支持n软件项目标特殊性和人类智力不足软件项目标特殊性和人类智力不足第22页软件危机原因(归纳)软件危机原因(归纳)n原因原因n客观:客观:软件本身特点软件本身特点n逻辑部件逻辑部件n规模庞大规模庞大n主观:主观:不正确开发方法不正确开发方法n忽略需求分析忽略需求分析n错误认为:软件开发错误认为:软件开发=程序编写程序编写n轻视软件维护轻视软件维护第23页克服软件危机路径克服软件危机路径n消除
15、错误概念和做法消除错误概念和做法n推广使用成功开发技术和方法推广使用成功开发技术和方法n使用软件工具和软件工程支持环境使用软件工具和软件工程支持环境n加强软件管理加强软件管理第24页软件语言软件语言software language 软件语言是用于书写计算机软件语言。软件语言是用于书写计算机软件语言。它主要包含:它主要包含:1.需求定义语言需求定义语言 2.功效性语言功效性语言 3.设计性语言设计性语言 4.实现性语言(即程序设计语言)实现性语言(即程序设计语言)5.文档语言文档语言第25页1.需求定义语言需求定义语言requirements definition language需求定义语言
16、用来书写软件需求定义。需求定义语言用来书写软件需求定义。软件需求定义是软件功效需求和非功效需软件需求定义是软件功效需求和非功效需求定义性描述。软件功效需求刻画软件求定义性描述。软件功效需求刻画软件“做什做什么么”,软件非功效需求刻画诸如功效性限制、,软件非功效需求刻画诸如功效性限制、设计限制、环境描述、数据与通信规程及项目设计限制、环境描述、数据与通信规程及项目管理等管理等 经典需求定义语言有经典需求定义语言有PSL语言(语言(Problem Statement Language问题陈说语言)问题陈说语言)第26页2.功效性语言功效性语言functional language功效性语言用来书写
17、软件功效规约功效性语言用来书写软件功效规约(functional specification)软件功效规约是软件功效严格而完整软件功效规约是软件功效严格而完整陈说。通常它只刻画软件系统陈说。通常它只刻画软件系统“做什么做什么”外部功效,而不包括系统外部功效,而不包括系统“怎样做怎样做”内部内部算法。算法。经典功效性语言有广谱语言、经典功效性语言有广谱语言、Z语言。语言。第27页3.设计性语言设计性语言design languagen设计性语言用来书写软件设计规约(design specification)n 软件设计规约是软件设计严格而完整陈述。一方面,它是软件功能归约算法性细化,刻画软件“如
18、何做”内部算法,其次,它是软件实现依据。n典型设计性语言有PDL语言(Program Design Language)第28页4.实现性语言实现性语言 实现性语言用来书写计算机程序。实现实现性语言用来书写计算机程序。实现性语言也称编程语言或程序设计语言性语言也称编程语言或程序设计语言(programming language)程序设计语言可按语言级别、对使用者程序设计语言可按语言级别、对使用者要求、应用范围、使用方式、成份性质等各要求、应用范围、使用方式、成份性质等各种角度进行分类种角度进行分类 第29页 A)按语言级别分按语言级别分:低级语言低级语言和和高级语言高级语言 低级语言低级语言是与
19、特定计算机体系结构亲密相关程是与特定计算机体系结构亲密相关程序设计语言,如机器语言、汇编语言。其特点是与序设计语言,如机器语言、汇编语言。其特点是与机器相关,功效高,但使用复杂,开发费时,难维机器相关,功效高,但使用复杂,开发费时,难维护。护。高级语言高级语言是不反应特定计算机体系结构程序设计是不反应特定计算机体系结构程序设计语言,它表示方法比低级语言更靠近于待解问题表语言,它表示方法比低级语言更靠近于待解问题表示方法。其特点是在一定程度上与详细机器无关,示方法。其特点是在一定程度上与详细机器无关,易学、易用、易维护。但高级语言程序经编译后产易学、易用、易维护。但高级语言程序经编译后产生目标程
20、序功效往往较低。生目标程序功效往往较低。第30页B)按用户要求分按用户要求分:过程式语言过程式语言和和非过程式语言非过程式语言 过程式语言(过程式语言(procedural language)是经过指是经过指明一列可执行运算及运算次序来描述计算过程程序设明一列可执行运算及运算次序来描述计算过程程序设计语言。如计语言。如FORTRAN、COBOL、C等。等。非过程式语言(非过程式语言(nonprocedural language)是是不显式指明处理过程细节程序设计语言。在这种语言不显式指明处理过程细节程序设计语言。在这种语言中尽可能引进各种抽象度较高非过程性描述伎俩,以中尽可能引进各种抽象度较高
21、非过程性描述伎俩,以期做到在程序中增加期做到在程序中增加“做什么做什么”描述成份,降低描述成份,降低“怎怎样做样做”细节描述。如第四代语言(细节描述。如第四代语言(4GL)、函数式语)、函数式语言、逻辑式语言。言、逻辑式语言。第31页 命令式语言(命令式语言(imperative language)即过程式语即过程式语言。言。申述式语言(申述式语言(declarative language)是着重描是着重描述要处理什么,而非描述怎样处理语言。申述式语言述要处理什么,而非描述怎样处理语言。申述式语言程序是关于问题解约束陈说,这些约束迫使含于实现程序是关于问题解约束陈说,这些约束迫使含于实现中算法
22、处理机制生成一个解或一组解。如中算法处理机制生成一个解或一组解。如函数式语言、函数式语言、逻辑式语言逻辑式语言。B)按用户要求分:按用户要求分:过程式语言过程式语言和和非过程式语言非过程式语言 (也可称:(也可称:命令式语言命令式语言和和申述式语言)申述式语言)第32页 函数式语言函数式语言(functional programming language)中中函数是结构程序基本成份,它提供一些设施用于结构函数是结构程序基本成份,它提供一些设施用于结构更为复杂函数。程序人员依据提出问题去定义求解函更为复杂函数。程序人员依据提出问题去定义求解函数(即主程序),其中可能包含一些辅助函数。如数(即主程
23、序),其中可能包含一些辅助函数。如Lisp语言。语言。逻辑式语言逻辑式语言(logic programming language)基本运基本运算单位是谓词。谓词定义了变元间逻辑关系。比如,算单位是谓词。谓词定义了变元间逻辑关系。比如,Prolog语言基本形式是语言基本形式是Horn子句,其程序围绕着某子句,其程序围绕着某一主题事实、规则和问询三类语句组成。这三类语句一主题事实、规则和问询三类语句组成。这三类语句分别用来陈说事实、定义规则和提出问题。分别用来陈说事实、定义规则和提出问题。申述式语言(申述式语言(declarative language)第33页 C)按应用范围分:按应用范围分:通
24、用语言通用语言和和专用语言专用语言 通用语言通用语言指目标非单一语言,如指目标非单一语言,如FORTRAN、COBOL、C等。等。专用语言专用语言指目标单一语言,如自动指目标单一语言,如自动数控程序数控程序APT。第34页 D)按使用方式分:按使用方式分:交互式语言交互式语言和和非交互式语言非交互式语言 交互式语言交互式语言指含有反应人机交互作用指含有反应人机交互作用语言,如语言,如BASIC。非交互式语言非交互式语言指不反应人机交互作用指不反应人机交互作用语言,如语言,如FORTRAN、COBOL。第35页 E)按成份性质分:按成份性质分:次序语言次序语言、并发语言并发语言、分布语言分布语言
25、 次序语言次序语言指只含次序成份语言,如指只含次序成份语言,如FORTRAN、C。并发语言并发语言指含有并发成份语言,如指含有并发成份语言,如Modula、Ada、并发、并发Pascal。分布语言分布语言指考虑到分布计算要求语言,指考虑到分布计算要求语言,如如Modula。第36页5.文档语言文档语言 documentation languagen 文档语言文档语言用来书写软件文档。用来书写软件文档。计算机软件文档是计算机开发、维护和计算机软件文档是计算机开发、维护和使用过程档案资料和对软件本身阐述性资使用过程档案资料和对软件本身阐述性资料。料。通惯用自然语言或半形式化语言书写。通惯用自然语言
26、或半形式化语言书写。第37页软件危机处理路径(归纳)软件危机处理路径(归纳)n处理路径处理路径n组织管理组织管理n工程项目管理方法工程项目管理方法n技术办法技术办法n软件开发技术与方法软件开发技术与方法n软件工具软件工具第38页软件工程学范围软件工程学范围n软件工程学软件工程学n指导计算机软件开发和维护工程学科指导计算机软件开发和维护工程学科 n工程管理工程管理+开发技术开发技术n软件开发技术软件开发技术n软件开发方法学软件开发方法学n软件工具软件工具n软件工程环境软件工程环境n软件工程管理软件工程管理n软件管理学软件管理学n软件经济学软件经济学n软件度量学软件度量学第39页软件工程定义软件工
27、程定义1968年年NATO(北大西洋条约组织北大西洋条约组织)会议上首次提出会议上首次提出nFritz Bauer:软件工程是为了经济地取得可靠和能软件工程是为了经济地取得可靠和能在实际机器上高效运行软件而建立和使用好工程标在实际机器上高效运行软件而建立和使用好工程标准准nIEEE:软件工程是(软件工程是(1)将系统化、规范、可度量)将系统化、规范、可度量方法应用于软件开发、运行和维护过程,即将工程方法应用于软件开发、运行和维护过程,即将工程化应用于软件中;(化应用于软件中;(2)()(1)中所述方法研究)中所述方法研究n计算机科学技术百科全书:计算机科学技术百科全书:软件工程是应用计算机软件
28、工程是应用计算机科学、数学及管理科学等原理,以工程化标准和方科学、数学及管理科学等原理,以工程化标准和方法制作软件工程法制作软件工程第40页软件工程框架软件工程框架 (目标、过程、标准)(目标、过程、标准)n 目标:目标:生产含有生产含有正确性正确性、可用性可用性以及以及价格合宜价格合宜产品产品 正确性正确性反应软件产品实现对应功效规约程度;反应软件产品实现对应功效规约程度;可用性可用性反应软件基本结构、实现及其文档为用反应软件基本结构、实现及其文档为用户可用程度;户可用程度;价格合宜价格合宜反应软件开发与运行总代价满足用户反应软件开发与运行总代价满足用户要求程度。要求程度。第41页n 过程(
29、过程(Process):):生产一个最终满足需求且到达工程目生产一个最终满足需求且到达工程目标软件产品所需要步骤标软件产品所需要步骤 软件工程过程包含:开发过程、运作软件工程过程包含:开发过程、运作过程、维护过程、管理过程、支持过程、过程、维护过程、管理过程、支持过程、获取过程、供给过程、剪裁过程等获取过程、供给过程、剪裁过程等软件工程框架软件工程框架 (目标、过程、标准)(目标、过程、标准)第42页n 标准:标准:选取适宜开发模型选取适宜开发模型 采取适当设计方法采取适当设计方法 提供高质量工程支持提供高质量工程支持 重视软件工程管理重视软件工程管理软件工程框架软件工程框架 (目标、过程、标
30、准)(目标、过程、标准)第43页软件生存周期软件生存周期(software life cycle)n软件有一个孕育、诞生、成长、成熟、衰软件有一个孕育、诞生、成长、成熟、衰亡生存过程。这个过程即为计算机软件生亡生存过程。这个过程即为计算机软件生存周期存周期n软件生存周期大致可分为以下几个活动:软件生存周期大致可分为以下几个活动:计算机系统工程计算机系统工程、需求分析需求分析、设计设计、编码编码、测试测试、运行和维护运行和维护第44页n 计算机系统工程计算机系统工程计算机系统包含计算机硬件、软件、使用计计算机系统包含计算机硬件、软件、使用计算机系统人、数据库、文档、规程等系统元算机系统人、数据库
31、、文档、规程等系统元素。素。计算机系统工程任务:计算机系统工程任务:v确定待开发软件总体要求和范围,以及它与其确定待开发软件总体要求和范围,以及它与其它计算机系统元素之间关系它计算机系统元素之间关系v进行成本估算,做出进度安排进行成本估算,做出进度安排v进行可行性分析,即从经济、技术、法律等方进行可行性分析,即从经济、技术、法律等方面分析待开发软件是否有可行处理方案,并在面分析待开发软件是否有可行处理方案,并在若干个可行处理方案中作出选择。若干个可行处理方案中作出选择。第45页n软件需求分析软件需求分析主要处理待开发软件要主要处理待开发软件要“做什么做什么”问题问题确定软件功效、性能、数据、界
32、面确定软件功效、性能、数据、界面等要求,生成软件需求规约。等要求,生成软件需求规约。第46页n 软件设计软件设计主要处理待开发软件主要处理待开发软件“怎么做怎么做”问题。问题。软件设计通常可分为系统设计(也称概要设软件设计通常可分为系统设计(也称概要设计或总体设计)和详细设计。计或总体设计)和详细设计。系统设计任务是设计软件系统体系结构,包系统设计任务是设计软件系统体系结构,包含软件系统组成成份、各成份功效和接口、含软件系统组成成份、各成份功效和接口、成份间连接和通信,同时设计全局数据结构;成份间连接和通信,同时设计全局数据结构;详细设计任务是设计各个组成成份实现细节,详细设计任务是设计各个组
33、成成份实现细节,包含局部数据结构和算法等。包含局部数据结构和算法等。第47页n编码编码 用某种程序设计语言,将设计结果用某种程序设计语言,将设计结果转换为可执行程序代码。转换为可执行程序代码。第48页n测试测试 发觉并纠正软件中错误和缺点。测发觉并纠正软件中错误和缺点。测试主要包含单元测试、集成测试、试主要包含单元测试、集成测试、确认测试和系统测试。确认测试和系统测试。第49页n运行和维护运行和维护 在软件运行期间,当发觉了软件在软件运行期间,当发觉了软件中潜藏错误或需要增加新功效或使中潜藏错误或需要增加新功效或使软件适应外界环境改变等情况出现软件适应外界环境改变等情况出现时对时对软件进行修改
34、软件进行修改。第50页软件过程软件过程 软件过程是软件生存周期中一软件过程是软件生存周期中一系列相关过程。过程是活动集合,活系列相关过程。过程是活动集合,活动是任务集合。动是任务集合。第51页软件过程有三层含义软件过程有三层含义:个体含义个体含义,即指软件产品或系统在生存周期中,即指软件产品或系统在生存周期中某一类活动集合,如软件开发过程,软件管理某一类活动集合,如软件开发过程,软件管理过程等;过程等;整体含义整体含义,即指软件产品或系统在全部上述含,即指软件产品或系统在全部上述含义下软件过程总体;义下软件过程总体;工程含义工程含义,即指处理软件过程工程,它应用软,即指处理软件过程工程,它应用
35、软件工程标准、方法来结构软件过程模型,并结件工程标准、方法来结构软件过程模型,并结合软件产品详细要求进行实例化,以及在用户合软件产品详细要求进行实例化,以及在用户环境下运作,以此深入提升软件生产率,降低环境下运作,以此深入提升软件生产率,降低成本。成本。第52页ISO12207软件生存周期过程软件生存周期过程 ISO/IEC 12207标准把软件生存周标准把软件生存周期中能够开展活动分为期中能够开展活动分为5个基本过程个基本过程,8个支持过程个支持过程和和4个组织过程个组织过程。每一个过程。每一个过程划分为一组活动,每项活动深入划分为划分为一组活动,每项活动深入划分为一组任务。一组任务。第53
36、页 基本(基本(primary)过程(一)过程(一)供各当事方在软件生存周期期间使用。供各当事方在软件生存周期期间使用。包含:包含:n获取(获取(acquisition)过程)过程:确定需方和组织:确定需方和组织向供方获取系统、软件或软件服务活动。向供方获取系统、软件或软件服务活动。n供给(供给(supply)过程)过程:确定供方和组织向需:确定供方和组织向需方提供系统、软件或软件服务活动。方提供系统、软件或软件服务活动。第54页 基本(基本(primary)过程(二)过程(二)n开发(开发(development)过程)过程:确定开发:确定开发者和组织定义并开发软件活动。者和组织定义并开发软
37、件活动。n运作(运作(operation)过程)过程:确定操作者和:确定操作者和组织在要求环境中为其用户提供运行计组织在要求环境中为其用户提供运行计算机系统服务活动。算机系统服务活动。n维护(维护(maintenance)过程)过程:确定维护:确定维护者和组织提供维护软件服务活动。者和组织提供维护软件服务活动。第55页 支持(支持(supporting)过程(一)过程(一)用于支持其它过程,它有利于软件项目用于支持其它过程,它有利于软件项目标成功和质量提升。标成功和质量提升。包含:包含:n文档编制(文档编制(documentation)过程)过程:确定统确定统计生存周期过程产生信息所需活动。计
38、生存周期过程产生信息所需活动。n配置管理(配置管理(configuration management)过程过程:确定配置管理活动。确定配置管理活动。第56页支持(支持(supporting)过程(二)过程(二)n质量确保(质量确保(quality assurance)过程)过程:确:确定客观地确保软件和过程符合要求要求以及定客观地确保软件和过程符合要求要求以及已建立计划所需活动。已建立计划所需活动。n验证(验证(verification)过程)过程:依据软件项目:依据软件项目要求,按不一样深度确定验证软件所需活动。要求,按不一样深度确定验证软件所需活动。n确认(确认(validation)过程
39、)过程:确定确认软件所:确定确认软件所需活动。需活动。第57页n联合评审(联合评审(joint review)过程)过程:确定评价:确定评价一项活动状态和产品所需活动。一项活动状态和产品所需活动。n审计(审计(audit)过程)过程:确定为判断符合要求、:确定为判断符合要求、计划和协议所需活动。计划和协议所需活动。n问题处理(问题处理(problem resolution)过程)过程:确定一个用于分析和处理问题过程。确定一个用于分析和处理问题过程。支持(支持(supporting)过程(三)过程(三)第58页 用于软件组织建立和实现组成相关用于软件组织建立和实现组成相关生存周期基础结构和人事制
40、度,并不停生存周期基础结构和人事制度,并不停改进这种结构和过程。改进这种结构和过程。包含:包含:n管理(管理(management)过程)过程:确定生存:确定生存周期过程中基本管理活动。周期过程中基本管理活动。组织(组织(organizational)过程(一)过程(一)第59页组织(组织(organizational)过程(二)过程(二)n基础设施(基础设施(infrastructure)过程)过程:确:确定建立生存周期过程基础结构基本活动。定建立生存周期过程基础结构基本活动。n改进(改进(improvement)过程)过程:确定一个确定一个组织为建立、测量、控制和改进其生存组织为建立、测量
41、、控制和改进其生存周期过程所需开展基本活动。周期过程所需开展基本活动。n培训(培训(training)过程)过程:确定提供经适当确定提供经适当培训人员所需活动。培训人员所需活动。第60页ISO/IEC 12207为软件生存周期过程为软件生存周期过程建立了一个公共框架,它提供了一组标准过建立了一个公共框架,它提供了一组标准过程、活动和任务。对于一个软件项目,可依程、活动和任务。对于一个软件项目,可依据其详细情况对标准过程、活动和任务进行据其详细情况对标准过程、活动和任务进行剪裁,即删除不适用过程、活动和任务。剪裁,即删除不适用过程、活动和任务。ISO12207软件生存周期过程(小结)软件生存周期
42、过程(小结)第61页两种程序设计方法两种程序设计方法n程序设计两次飞跃(见程序设计两次飞跃(见P7)n结构化程序设计结构化程序设计n程序程序=数据结构数据结构+算法算法n面向对象程序设计面向对象程序设计n程序程序=对象对象+消息消息 第62页面向过程和面向对象编码面向过程和面向对象编码存款取款利 息 结算帐 户 余额帐 户 余额利 息 结算存 款取 款第63页两类软件工程方法两类软件工程方法n传统软件工程传统软件工程n软件分析软件分析 总体设计总体设计 详细设计详细设计 面向过程编码面向过程编码 测试测试 n面向对象软件工程面向对象软件工程n软件分析与对象抽取软件分析与对象抽取 对象详细设计对
43、象详细设计 面向对象编码面向对象编码 测试测试 第64页软件工程应用软件工程应用n软件工程指导中小型软件软件工程指导中小型软件n软件工程指导大型软件软件工程指导大型软件n软件工程成就软件工程成就n软件工程局限软件工程局限第65页软件工程教育定位软件工程教育定位我国软件工程专业教育与软件人才链我国软件工程专业教育与软件人才链之间关系可描述为以下列图:之间关系可描述为以下列图:软件开发工程师软件开发工程师架构设计师架构设计师产品经理产品经理项目管理者项目管理者系统分析师系统分析师系统设计师系统设计师程序员程序员硕士教育硕士教育本科教育本科教育大专教育大专教育中专教育中专教育第66页软件工程教育定位
44、软件工程教育定位 观点:观点:不一样人才培养或者不一样软件开发岗位对软件工程知识要求是不一样。我们在学习软件工程知识与选取教材时,充分地考虑到这一原因,采取因材取舍标准。不一样软件工程教材,适合用于不一样层次人员学习,所以不一样层次人才选取不一样教材。例:海南纽康信息系统有限企业海南纽康信息系统有限企业 岗位能力要求第67页1.程序员岗位能力要求程序员岗位能力要求录录用用员员工工条条件件n年纪范围:n20-25学历要求:学历要求:大专以上或中专以上并有计算机相关证书大专以上或中专以上并有计算机相关证书专业要求:专业要求:计算机及相关专业计算机及相关专业n工作经历要求:1.有从事软件编程实习经历
45、3-6个月以上。n 2.经过企业内部实习期。n日语水平:1.相当三级n 2.或者有4级证书n 3.或者进企业时能了解日语仕样书,熟悉日语环境n技术水平:1.熟悉和掌握基本数据库n 2.熟悉和掌握2门开发语言n 3.能胜任项目中编程n能力要求:1.具备较强学习能力n 2.工作主动主动,有责任心,有良好品质意识岗岗位位工工作作描描述述n1.能按时按质完成软件项目中编码工作n2.能按时按质完成单体测试工作n3.能制作符合要求测试汇报n4.能认真参加项目内或部门、企业安排培训,而且能抵达培训要求。n5.每年技术水平和日语水平考评有进步。第68页2.软件工程师岗位能力要求软件工程师岗位能力要求录录用用员
46、员工工条条件件n年纪范围:20-27学历要求:大专以上学历要求:大专以上专业要求:计算机及相关专业专业要求:计算机及相关专业n工作经历要求:1.有从事软件编程一年以上相关工作经历n 2.经过企业内部试用期n日语水平:1.相当三级n 2.或者有4级证书n 3.能了解日语仕样书,熟悉日语开发环境达一年 n技术水平:1.熟悉利用SQL server、Oracle数据库n 2.熟悉利用VC、C+或Java编程n 3.能带一个实习生 n能力要求:1.具备较强学习能力n 2.工作主动主动,有责任心,有良好品质意识n 3.含有团体协作精神及沟通能力 岗岗位位工工作作描描述述n1.能按时按质完成软件项目中编码
47、工作n2.能完成详细设计任务n3.能完成综合测试任务n4.能帮助企业独立担当带好新手任务 第69页3.高级软件工程师岗位能力要求高级软件工程师岗位能力要求录录用用员员工工条条件件n年纪范围:n25岁以上学历要求:本科以上或专科并有学历要求:本科以上或专科并有 计算机相关技术证书计算机相关技术证书 专业要求:专业要求:计算机及相关专业计算机及相关专业n工作经历要求:1.从事日本软件编程工作经历超出三年n 2.有在项目中担任技术骨干经验最少一年n 3.经过企业内部试用期。n日语水平:1.相当三级 2.能了解日语仕样书 n技术水平:1.精通利用SQL server、Oracle数据库n 2.精通VC
48、、C+或Java,同类技术利用时间在三年以上n 3.熟悉各种计算机开发语言。n能力要求:1.具备较强学习能力n 2.工作主动主动,有责任心,有良好品质意识n 3.含有团体协作精神及沟通能力n 4.在项目组中有处理技术难题能力或能起到项目组协理作用 岗岗位位工工作作描描述述n1.能配合项目主管按时按质完成项目任务。n2.在项目组内担当技术骨干作用或担当部门协理作用。n3.首先了解项目中客户要求“工具”,并能辅导组员掌握,并在整个项目中担当指导工作。n4.担当事业部内或企业安排技术培训任务。n5.能担任详细设计工作。第70页4.项目主管岗位能力要求项目主管岗位能力要求录录用用员员工工条条件件n年纪
49、范围:n28岁以上学历要求:本科以上或专科并有学历要求:本科以上或专科并有 计算机相关技术证书计算机相关技术证书 专业要求:专业要求:计算机及相关专业计算机及相关专业n工作经历要求:1.从事日本软件编程工作经历超出三年n 2.有项目主管、组长经历两年以上n 3.经过企业内部试用期日语水平:日语水平:1.1.相当一级相当一级 2.2.二级以上证书二级以上证书n技术水平:1.熟悉各类数据库n 2.熟悉各种计算机开发语言n 3.熟悉特定开发工具n能力要求:1.具备较强学习能力,含有进取心n 2.工作主动主动,有责任心,有良好品质意识n 3.含有上下沟通能力n 4.含有项目组与项目组之间合作意识和整体
50、意识。岗岗位位工工作作描描述述n1.项目开始前准备,培训计划制订、环境组成、体制及人员安排n2.项目开发标准实施n3.整个项目过程控制,进度管理n4.项目QA管理,负责项目总体测试工作n5.项目后期文档整理,维护对应计划及安排,项目总结,项目组员能力评价n6.保密计划和质量计划等(特殊要求项目)制订、实施n7.组织处理技术方面重大问题和及时应正确处理。第71页5.项目经理岗位能力要求项目经理岗位能力要求录录用用员员工工条条件件n年纪范围:n 28岁以上学历要求:本科以上或专科并有学历要求:本科以上或专科并有 计算机相关技术证书计算机相关技术证书 专业要求:专业要求:计算机及相关专业计算机及相关