【文档说明】软件工程第一章电子教案课件.ppt,共(72)页,652.014 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-45008.html
以下为本文档部分文字说明:
软件工程--原理、方法与应用电子教案54学时课程安排理论内容:基本原理、方法和技术形式:讲授、自学、讨论实践内容:构造一个应用系统(包括分析、设计、编码、测试)形式:分组、分阶段文档、编码、集成软件工程的主要内容软件工程的基本概念软件开发模型软件
开发各阶段的任务、技术、方法传统方法、面向对象方法软件工程管理软件质量保证软件工程环境第一章绪论软件与软件危机软件工程学传统软件工程和面向对象软件工程软件工程的应用软件(定义一)程序、软件与软件产品独唱-->
小合唱-->合唱-->万人大合唱|||简单程序较复杂程序软件软件定义:软件=程序+数据+文档程序:按事先设计的功能和性能需求执行的指令序列数据:是程序能正常操纵信息的数据结构文档:与程序开发、维护和使用有关的图文材料计算机软件(定义二)计算机软件指计算机系统中的程序及其文
档程序是计算任务的处理对象和处理规则的描述任务:以计算机为处理工具的任务都是计算任务处理对象:数据(如数据、文字、图形、图像、声音等,它们只是表示,而无含义)或信息(数据及有关的含义)处理规则一般指处理的动作和步骤。程序必须装入计算机内才能工作文档是为了便
于了解程序所需的阐明性资料,文档一般是给人看的,不一定装入计算机软件的分类系统软件:属于计算机系统中最靠近硬件的一层,其它软件一般都通过系统软件发挥作用,它与具体的应用领域无关。如操作系统、编译程序等。支持软件:支持软件的开发和维护的
软件。如数据库管理系统、网络软件、软件开发环境等。应用软件:特定应用领域专用的软件。如实时软件、嵌入式软件、科学和工程计算软件、事务处理软件、人工智能软件等。按软件工作方式划分:实时处理软件分时
软件交互式软件批处理软件按软件服务对象的范围划分:项目软件产品软件按使用的频度进行划分:一次使用频繁使用按软件失效的影响进行划分:高可靠性软件一般可靠性软件软件的发展1946-1956年从计算机问世到实用的高级程序语言出现前存储容量比较小,运算速
度比较慢采用个体工作方式,用低级语言编写程序应用领域主要是以数值数据处理为主的科学计算,其特点是输入、输出量较小衡量程序质量的标准主要是功效,即运行时间省、占用内存小主要研究内容是科学计算程序、服务性程序和程序库,研究对象是顺序程序1956-1968年从实用的高级程序语言出现到软件
工程出现前存储器容量大,外围设备得到迅速发展,出现了高级程序设计语言应用领域包括数据处理(非数值数据),其特点是计算量不大,但输入、输出量却较大高速主机与低速外围设备的矛盾突出,出现了操作系统、并发程序、数据库及其管理系统20世纪60年代初提出
了软件一词,开始认识到文档的重要性研究高级程序设计语言、编译程序、操作系统、支持编程的工具及各种应用软件工作方式逐步从个体方式转向合作方式出现软件危机1968年-至今从软件工程出现到现在硬件向巨型机和微型机二个方向发展,出现了计算机网络,软件方面提出了软件工程,
出现了“计算机辅助软件工程”(CASE)计算机的应用领域渗透到各个业务领域,出现了嵌入式应用,其特点是受制于它所嵌入的宿主系统开发方式逐步由个体合作方式转向工程方式软件工程方面的研究主要包括软件开发模型、软件开发方法及技术、软件工具与环境、软件过程、软件自动化系统等软件
方面研究以智能化、自动化、集成化、并行化、以及自然化为标志的软件开发新技术软件的特点软件是一种逻辑实体,而不是有形的系统元件,其开发成本和进度难以准确地估算软件是被开发的或被设计的,它没有明显的制造过程,一旦开发成功,只需复制
即可,但其维护的工作量大软件的使用没有硬件那样的机械磨损和老化问题软件的其它特点:软件的开发和运行常受到计算机硬件的限制,对计算机硬件有着不同程度的依赖性软件的开发至今尚未完全实现自动化软件成本相当昂贵相当多的软件工作涉及到社会因素软件的特征(归纳)软件是逻辑
的,而不是物理的软件开发与人关系密切软件开发成本大软件生产是简单的拷贝软件不会磨损和老化软件受环境影响大软件维护易产生新的问题软件技术进步落后于需求增长软件开发的发展过程计算机应用发展软件数
量多规模大软件成本高质量低个体化软件开发方法软件维护困难软件危机软件工程软件危机定义:计算机软件的开发和维护过程所遇到的一系列严重问题软件危机的表现对软件开发成本和进度的估计常常很不正确用户对“已完成的”软件系统不满意的现象经常发生软件产品的质量往往靠不住软件常常
是不可维护的软件通常没有适当的文档资料软件成本在计算机系统总成本中所占的比例逐年上升软件开发生产率提高的速度远远跟不上计算机应用迅速普及深入的趋势软件危机的原因软件是逻辑产品,开发进度、成本难以估计缺乏或不完整、不一致的文档给维护带来困难用户对软件需求的描述往往不够
精确,有遗漏,有二义软件开发人员对需求的理解与用户的本来愿望有差异大型软件项目需多人协同完成,缺乏管理经验开发人员不能有效地、独立自主地处理大型软件的全部关系缺乏有力的方法学和工具的支持软件项目的特殊性和人类智力的
局限性软件危机的原因(归纳)原因客观:软件本身特点逻辑部件规模庞大主观:不正确的开发方法忽视需求分析错误认为:软件开发=程序编写轻视软件维护克服软件危机的途径消除错误的概念和做法推广使用成功的开发技术和方法使用软件工具和软件工程支持环境
加强软件管理软件语言softwarelanguage软件语言是用于书写计算机软件的语言。它主要包括:1.需求定义语言2.功能性语言3.设计性语言4.实现性语言(即程序设计语言)5.文档语言1.需求定义语言requirementsdefiniti
onlanguage需求定义语言用来书写软件需求定义。软件需求定义是软件功能需求和非功能需求的定义性描述。软件功能需求刻画软件“做什么”,软件非功能需求刻画诸如功能性限制、设计限制、环境描述、数据与通信规程及项目管理等典型的需求定义语言有PSL语言(ProblemStatemen
tLanguage问题陈述语言)2.功能性语言functionallanguage功能性语言用来书写软件功能规约(functionalspecification)软件功能规约是软件功能的严格而完整的陈述。通常它只刻画软件系统“做什么”
的外部功能,而不涉及系统“如何做”的内部算法。典型的功能性语言有广谱语言、Z语言。3.设计性语言designlanguage设计性语言用来书写软件设计规约(designspecification)软件设计规约是软件设计的严格而完整的陈述。一方面,它是软件功能归约
的算法性细化,刻画软件“如何做”的内部算法,另一方面,它是软件实现的依据。典型的设计性语言有PDL语言(ProgramDesignLanguage)4.实现性语言实现性语言用来书写计算机程序。实现性语言也称编程语言或程序设计语言(programming
language)程序设计语言可按语言的级别、对使用者的要求、应用范围、使用方式、成分性质等多种角度进行分类A)按语言级别分:低级语言和高级语言低级语言是与特定计算机体系结构密切相关的程序设计语言,如机器语言、汇编语言。其特点是与机器有关,功效高,但使用复杂
,开发费时,难维护。高级语言是不反映特定计算机体系结构的程序设计语言,它的表示方法比低级语言更接近于待解问题的表示方法。其特点是在一定程度上与具体机器无关,易学、易用、易维护。但高级语言程序经编译后产生的目标程序的功效往往较低。B)按用户要
求分:过程式语言和非过程式语言过程式语言(procedurallanguage)是通过指明一列可执行的运算及运算次序来描述计算过程的程序设计语言。如FORTRAN、COBOL、C等。非过程式语言(nonprocedurallan
guage)是不显式指明处理过程细节的程序设计语言。在这种语言中尽量引进各种抽象度较高的非过程性描述手段,以期做到在程序中增加“做什么”的描述成分,减少“如何做”的细节描述。如第四代语言(4GL)、函
数式语言、逻辑式语言。命令式语言(imperativelanguage)即过程式语言。申述式语言(declarativelanguage)是着重描述要处理什么,而非描述如何处理的语言。申述式语言程序是关于问题解的约束陈述,这些约束迫使含于实现中的
算法处理机制生成一个解或一组解。如函数式语言、逻辑式语言。B)按用户要求分:过程式语言和非过程式语言(也可称:命令式语言和申述式语言)函数式语言(functionalprogramminglanguage)中函数是构造程序的基本成分,它提供一些设施用于构造更为复杂的函数。程序人员根据提出的问题去定
义求解函数(即主程序),其中可能包含一些辅助函数。如Lisp语言。逻辑式语言(logicprogramminglanguage)的基本运算单位是谓词。谓词定义了变元间的逻辑关系。例如,Prolog语言的基本形式是Horn子句,其程序围绕着某一主题的事实、规则和询问三类语句组成。
这三类语句分别用来陈述事实、定义规则和提出问题。申述式语言(declarativelanguage)C)按应用范围分:通用语言和专用语言通用语言指目标非单一的语言,如FORTRAN、COBOL、C等。专
用语言指目标单一的语言,如自动数控程序APT。D)按使用方式分:交互式语言和非交互式语言交互式语言指具有反映人机交互作用的语言,如BASIC。非交互式语言指不反映人机交互作用的语言,如FORTRAN、COBOL。E)按成分性质分:顺序语言、并发语言、分布语言顺
序语言指只含顺序成分的语言,如FORTRAN、C。并发语言指含有并发成分的语言,如Modula、Ada、并发Pascal。分布语言指考虑到分布计算要求的语言,如Modula。5.文档语言documentationlanguage文档语言用来书
写软件文档。计算机软件文档是计算机开发、维护和使用过程的档案资料和对软件本身的阐述性资料。通常用自然语言或半形式化语言书写。软件危机解决途径(归纳)解决途径组织管理工程项目管理方法技术措施软件开发
技术与方法软件工具软件工程学的范畴软件工程学指导计算机软件开发和维护的工程学科工程管理+开发技术软件开发技术软件开发方法学软件工具软件工程环境软件工程管理软件管理学软件经济学软件度量学软件工程定义1968年NATO(北大西洋公约组织)会议上首次提出Fr
itzBauer:软件工程是为了经济地获得可靠的和能在实际机器上高效运行的软件而建立和使用的好的工程原则IEEE:软件工程是(1)将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中;
(2)(1)中所述方法的研究计算机科学技术百科全书:软件工程是应用计算机科学、数学及管理科学等原理,以工程化的原则和方法制作软件的工程软件工程的框架(目标、过程、原则)目标:生产具有正确性、可用性以及价格合宜的产品正确性反映软件
产品实现相应功能规约的程度;可用性反映软件的基本结构、实现及其文档为用户可用的程度;价格合宜反映软件开发与运行的总代价满足用户要求的程度。过程(Process):生产一个最终满足需求且达到工程目标的软件产品所需要的步骤软件
工程过程包括:开发过程、运作过程、维护过程、管理过程、支持过程、获取过程、供应过程、剪裁过程等软件工程的框架(目标、过程、原则)原则:选取适宜的开发模型采用合适的设计方法提供高质量的工程支持重视软件工程的管理软件工程的框架(目标
、过程、原则)软件生存周期(softwarelifecycle)软件有一个孕育、诞生、成长、成熟、衰亡的生存过程。这个过程即为计算机软件的生存周期软件生存周期大体可分为如下几个活动:计算机系统工程、需求分析、设计、编码、测试、运行和
维护计算机系统工程计算机系统包括计算机硬件、软件、使用计算机系统的人、数据库、文档、规程等系统元素。计算机系统工程的任务:确定待开发软件的总体要求和范围,以及它与其它计算机系统元素之间的关系进行成本估算,做出进度安排进行可行性分析,即从经济、技术、法律等方面分析待开发的软件是否有可
行的解决方案,并在若干个可行的解决方案中作出选择。软件需求分析主要解决待开发软件要“做什么”的问题确定软件的功能、性能、数据、界面等要求,生成软件需求规约。软件设计主要解决待开发软件“怎么做”的问题。软件设计通常可分为系统设
计(也称概要设计或总体设计)和详细设计。系统设计的任务是设计软件系统的体系结构,包括软件系统的组成成分、各成分的功能和接口、成分间的连接和通信,同时设计全局数据结构;详细设计的任务是设计各个组成成分的实现细节,包括局部数据结构和算法等。编码用某种程序设计语言,将设计的结果转换
为可执行的程序代码。测试发现并纠正软件中的错误和缺陷。测试主要包括单元测试、集成测试、确认测试和系统测试。运行和维护在软件运行期间,当发现了软件中潜藏的错误或需要增加新的功能或使软件适应外界环境的变化等情况出现时对软件进行修改。软件过程软件过程是软件生存周期中的一系列相关的过程。过程是活动的集
合,活动是任务的集合。软件过程有三层含义:个体含义,即指软件产品或系统在生存周期中的某一类活动的集合,如软件开发过程,软件管理过程等;整体含义,即指软件产品或系统在所有上述含义下的软件过程的总体;工程含
义,即指解决软件过程的工程,它应用软件工程的原则、方法来构造软件过程模型,并结合软件产品的具体要求进行实例化,以及在用户环境下的运作,以此进一步提高软件生产率,降低成本。ISO12207软件生存周期过程ISO/IEC12207标准把软件生存周期中可以开展的活
动分为5个基本过程,8个支持过程和4个组织过程。每一个过程划分为一组活动,每项活动进一步划分为一组任务。基本(primary)过程(一)供各当事方在软件生存周期期间使用。包括:获取(acquisition)过程:确定需方和组织向供方获取系统、软件或软
件服务的活动。供应(supply)过程:确定供方和组织向需方提供系统、软件或软件服务的活动。基本(primary)过程(二)开发(development)过程:确定开发者和组织定义并开发软件的活动。运作(operation)过程:确定操作者和组织在规定的环境中为其用户提供运行计算机系
统服务的活动。维护(maintenance)过程:确定维护者和组织提供维护软件服务的活动。支持(supporting)过程(一)用于支持其他过程,它有助于软件项目的成功和质量提高。包括:文档编制(documentation)过程:确定记录生存周期过程产生的信息所
需的活动。配置管理(configurationmanagement)过程:确定配置管理活动。支持(supporting)过程(二)质量保证(qualityassurance)过程:确定客观地保证软件和过程符合规定
的要求以及已建立的计划所需的活动。验证(verification)过程:根据软件项目要求,按不同深度确定验证软件所需的活动。确认(validation)过程:确定确认软件所需的活动。联合评审(joi
ntreview)过程:确定评价一项活动的状态和产品所需的活动。审计(audit)过程:确定为判断符合要求、计划和合同所需的活动。问题解决(problemresolution)过程:确定一个用于分析和解决问题的过程。支持(supporting)过程(三)用于软
件组织建立和实现构成相关生存周期的基础结构和人事制度,并不断改进这种结构和过程。包括:管理(management)过程:确定生存周期过程中的基本管理活动。组织(organizational)过程(一)组织(o
rganizational)过程(二)基础设施(infrastructure)过程:确定建立生存周期过程基础结构的基本活动。改进(improvement)过程:确定一个组织为建立、测量、控制和改进其生存周期过程所需开展的基本活动。培训(training)过程:确定提供
经适当培训的人员所需的活动。ISO/IEC12207为软件生存周期过程建立了一个公共框架,它提供了一组标准的过程、活动和任务。对于一个软件项目,可根据其具体情况对标准的过程、活动和任务进行剪裁,即删除不适用
的过程、活动和任务。ISO12207软件生存周期过程(小结)两种程序设计方法程序设计的两次飞跃(见P7)结构化程序设计程序=数据结构+算法面向对象程序设计程序=对象+消息面向过程和面向对象的编码存款取款利息结算帐户余额帐户余额利息结算存款取款两类软件工程方法传统软
件工程软件分析→总体设计→详细设计→面向过程的编码→测试面向对象软件工程软件分析与对象抽取→对象详细设计→面向对象的编码→测试软件工程的应用软件工程指导中小型软件软件工程指导大型软件软件工程的成就软件工程的局限软件工程教育的定位我国软件工程的专业教
育与软件人才的链之间的关系可描述为如下图:软件开发工程师架构设计师产品经理项目管理者系统分析师系统设计师程序员研究生教育本科教育大专教育中专教育软件工程教育的定位观点:不同的人才培养或者不同软件开发的岗位对软件工程的知识要求是不一样的。我们
在学习软件工程知识与选用教材时,充分地考虑到这一因素,采取因材取舍的原则。不同的软件工程教材,适用于不同层次的人员学习,所以不同层次的人才选用不同的教材。——例:海南纽康信息系统有限公司岗位能力规定1.程序员岗位能力规定录用员工条件年龄范围:20-25学历要求:大专
以上或中专以上并有计算机相关证书专业要求:计算机及相关专业工作经历要求:1.有从事软件编程的实习经历3-6个月以上。2.通过公司内部实习期。日语水平:1.相当三级2.或者有4级证书3.或者进公司时能理解日语仕样书,熟悉日语环境技术水平:1.熟悉和掌握基
本的数据库2.熟悉和掌握2门开发语言3.能胜任项目中编程能力要求:1.具备较强的学习能力2.工作积极主动,有责任心,有良好的品质意识岗位工作描述1.能按时按质完成软件项目中的编码工作2.能按时按质完成单体测试工作3.能制作符合要求的测试报告4.能认真的参加
项目内或部门、公司安排的培训,并且能达到培训要求。5.每年的技术水平和日语水平考核有进步。2.软件工程师岗位能力规定录用员工条件年龄范围:20-27学历要求:大专以上专业要求:计算机及相关专业工作经历要求:1.有从事软件编程一年以上的相关工作经历2.通
过公司内部试用期日语水平:1.相当三级2.或者有4级证书3.能理解日语仕样书,熟悉日语开发环境达一年技术水平:1.熟悉运用SQLserver、Oracle数据库2.熟悉运用VC、C++或Java编程3.能带一个实习生能力要求:1.具备较强的学习能力
2.工作积极主动,有责任心,有良好的品质意识3.具有团队协作精神及沟通能力岗位工作描述1.能按时按质完成软件项目中的编码工作2.能完成详细设计的任务3.能完成综合测试任务4.能协助公司独立担当带好新手的任务3.高级软件工程师
岗位能力规定录用员工条件年龄范围:25岁以上学历要求:本科以上或专科并有计算机相关技术证书专业要求:计算机及相关专业工作经历要求:1.从事日本软件编程的工作经历超过三年2.有在项目中担任技术骨干的经验至少一年3.通过公司内部试用期。日语
水平:1.相当三级2.能理解日语仕样书技术水平:1.精通运用SQLserver、Oracle数据库2.精通VC、C++或Java,同类技术运用时间在三年以上3.熟悉各种计算机开发语言。能力要求:1.具备较强
的学习能力2.工作积极主动,有责任心,有良好的品质意识3.具有团队协作精神及沟通能力4.在项目组中有解决技术难题的能力或能起到项目组协理作用岗位工作描述1.能配合项目主管按时按质完成项目任务。2.在项目组内担当技术骨干作用或担当部门协理作用。3
.首先理解项目中客户规定的“工具”,并能辅导组员掌握,并在整个项目中担当指导工作。4.担当事业部内或公司安排的技术培训任务。5.能担任详细设计工作。4.项目主管岗位能力规定录用员工条件年龄范围:28岁以上学历要求:本科以上或专科并有计算机相关技术证
书专业要求:计算机及相关专业工作经历要求:1.从事日本软件编程的工作经历超过三年2.有项目主管、组长经历两年以上3.通过公司内部试用期日语水平:1.相当一级2.二级以上证书技术水平:1.熟悉各类数据库2.熟悉各种计算机开发语言3.熟悉特定的开发工具能力要求:1.具备较强的
学习能力,具有进取心2.工作积极主动,有责任心,有良好的品质意识3.具有上下沟通的能力4.具有项目组与项目组之间的合作意识和整体意识。岗位工作描述1.项目开始前的准备,培训计划制定、环境构成、体制及人员安排2.项目开发标准的实施3.整个项目过程的控制,进度管理4
.项目QA管理,负责项目总体测试工作5.项目后期的文档整理,维护对应计划及安排,项目总结,项目成员能力评价6.保密计划和质量计划等(特殊要求的项目)的制定、实施7.组织解决技术方面重大问题和及时应对的处理。5.项目经理岗位能力规定录用员工条件年龄范围:28岁以上学历要求:本科
以上或专科并有计算机相关技术证书专业要求:计算机及相关专业工作经历要求:1.有项目经理经历两年以上2.同时有日本工作经验一年以上3.通过公司内部试用期日语水平:1.日语一级技术水平:1.熟悉各类数据库2.熟悉各种计算机开
发语言3.熟悉特定的开发工具能力要求:1.具备较强的学习能力,具有进取心2.工作积极主动,有责任心,有良好的品质意识3.具有上下沟通的能力4.具有项目组与项目组之间的合作意识和整体意识5.能灵活安排好项目与项目之间的衔接及人员调度岗位工作描述1.项目开始前的准备,培训计划制定、环
境构成、体制及人员安排2.项目开发标准的实施3.整个项目过程的控制,进度管理4.维护对应计划几安排,项目总结,项目成员能力评价5.保密计划和质量计划等(特殊要求的项目)的制定、实施6.组织解决技术方面重大问题和及时应对的处理7.能合理安排项目与项目之间的进度