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