软件工程技术与应用.ppt

上传人:zf 文档编号:10459725 上传时间:2023-02-13 格式:PPT 页数:52 大小:1.83MB
下载 相关 举报
软件工程技术与应用.ppt_第1页
第1页 / 共52页
软件工程技术与应用.ppt_第2页
第2页 / 共52页
软件工程技术与应用.ppt_第3页
第3页 / 共52页
软件工程技术与应用.ppt_第4页
第4页 / 共52页
软件工程技术与应用.ppt_第5页
第5页 / 共52页
点击查看更多>>
下载资源
资源描述

软件工程技术与应用.ppt

《软件工程技术与应用.ppt》由会员分享,可在线阅读,更多相关《软件工程技术与应用.ppt(52页珍藏版)》请在冰豆网上搜索。

软件工程技术与应用.ppt

软件工程技术与应用为什么需要软件工程?

什么是软件工程?

第一章软件与软件工程1.11.1软件软件1.1.软件软件Software=Program+Data+DocumentSoftware=Program+Data+Document软件(software)是计算机系统中与硬件(hardware)相互依存的另一部分,它包括程序(program)、相关数据(data)及其说明文档(document)。

软件特征软件特征l软件是一种逻辑实体,而不是具体的物理实体l软件的生产与硬件不同l在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题磨合调整磨损用坏硬件失效率曲线时间失效率修改点实际曲线理想曲线时间失效率软件失效率曲线软件特征软件特征软件是一种逻辑实体,具有抽象性软件没有明显的制造过程软件在使用过程中,没有磨损、老化的问题软件对硬件和环境有着不同程度的依赖性软件的开发至今尚未完全摆脱手工作坊式的开发方式,生产效率低软件是复杂的,而且以后会更加复杂软件的成本相当昂贵大多数软件是自定的,而不是通过已有的构件组装而来的软件工作牵涉到很多社会因素l软件的成本相当昂贵软件技术的发展落后于需求时间软件复杂性软件需求差距软件技术硬、软件成本比例的变化年份成本%软件软件1950197019851995硬件硬件软件的分类软件的分类按软件功能划分:

按软件功能划分:

系统软件、支持软件、应用软系统软件、支持软件、应用软件件按软件规模划分:

按软件规模划分:

微、小、中、大、甚大、极微、小、中、大、甚大、极大型大型按软件工作方式划分:

按软件工作方式划分:

实时处理软件、分时软件、实时处理软件、分时软件、交互式软件、批处理软件交互式软件、批处理软件软件的发展软件的发展早期早期面向批处理有限的分布自定义软件第二阶段第二阶段多用户实时数据库软件产品第三阶段第三阶段分布式系统嵌入“智能”低成本硬件消费者的影响第四阶段第四阶段强大的桌面系统面向对象技术专家系统人工神经网络并行计算网路计算机19501960197019801990200022、软件危机、软件危机过去几十年的大型软件系统的开发就犹如这样一个焦油坑,很多大型和强壮的动物在其中剧烈地挣扎。

拉布雷阿的焦油坑(拉布雷阿的焦油坑(MuralofLaBreaTarPitsMuralofLaBreaTarPits)软件危机包含两方面问题:

软件危机包含两方面问题:

-如何开发软件,以满足不断增长,日趋复杂的需求;如何开发软件,以满足不断增长,日趋复杂的需求;-如何维护数量不断膨胀的软件产品。

如何维护数量不断膨胀的软件产品。

鉴于软件危机的长期性和症状不明显的特点,近年来有人建议将软件危机更名为:

Softwaredepression(软件萧条软件萧条)Softwareaffliction(软件困扰软件困扰)“慢性的苦恼慢性的苦恼”软件危机主要有以下表现:

软件危机主要有以下表现:

对软件开发成本和进度的估计常常不准对软件开发成本和进度的估计常常不准确。

开发成本超出预算,实际进度比预确。

开发成本超出预算,实际进度比预定计划一再拖延的现象并不罕见。

定计划一再拖延的现象并不罕见。

用户对用户对“已完成已完成”系统不满意的现象经系统不满意的现象经常发生。

常发生。

软件产品的质量往往靠不住。

软件产品的质量往往靠不住。

BugBug一大堆,一大堆,PatchPatch一个接一个。

一个接一个。

软件的可维护程度非常之低。

软件的可维护程度非常之低。

软件通常没有适当的文档资料。

软件通常没有适当的文档资料。

软件的成本不断提高。

软件的成本不断提高。

软件开发生产率的提高赶不上硬件的发软件开发生产率的提高赶不上硬件的发展和人们需求的增长。

展和人们需求的增长。

软件危机的原因一方面是与软件本身的特点一方面是与软件本身的特点有关有关另一方面是由软件开发和维另一方面是由软件开发和维护的方法不正确有关护的方法不正确有关软件开发工作量分配比例软件开发工作量分配比例40%50%10%20%引入同一变化付出的代价随时间变化的趋势引入同一变化付出的代价随时间变化的趋势费用分配比例费用分配比例55%70%例例:

Windows95Windows95有有10001000万行代码万行代码Windows2000Windows2000有有50005000万行代码,万行代码,30003000多个工程师,几百个小团队。

多个工程师,几百个小团队。

Exchange2000Exchange2000和和Windows2000Windows2000开发人员结构开发人员结构Exchange2000Exchange2000Windows2000Windows2000项目经理项目经理2525人人约约250250人人开发人员开发人员140140人人约约17001700人人测试人员测试人员350350人人约约32003200人人33、消除软件危机的途径、消除软件危机的途径对计算机软件有一个正确的认识对计算机软件有一个正确的认识(软件软件程序程序)必须充分认识到软件开发不是某必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各是一种组织良好、管理严密、各类人员协同配合、共同完成的工类人员协同配合、共同完成的工程项目。

程项目。

推广使用在实践中总结出来的开推广使用在实践中总结出来的开发软件的成功技术和方法。

发软件的成功技术和方法。

开发和使用更好的软件工具。

开发和使用更好的软件工具。

1.31.3软件工程软件工程1.1.工程工程工程是对技术(或社会)实体的分析、设计、建造、验证和管理。

水利工程水利工程建筑工程建筑工程机械工程机械工程软件工程软件工程软件工程软件工程传统工程新兴工程气象工程气象工程生物工程生物工程软件工程软件工程-SoftwareEngineering于于1968年年NATO组织在组织在德国召开的一次会议上提出德国召开的一次会议上提出是把软件当作一种工业产品,要求是把软件当作一种工业产品,要求是把软件当作一种工业产品,要求是把软件当作一种工业产品,要求“采用工程化的采用工程化的采用工程化的采用工程化的原理与方法对软件进行计划、开发和维护原理与方法对软件进行计划、开发和维护原理与方法对软件进行计划、开发和维护原理与方法对软件进行计划、开发和维护”。

围棋与软件工程的感想围棋围棋棋谱拿过来的时候,大师问“后面应该走哪里?

”十个初级爱好者选择的落点散布在棋盘各处十个职业棋手说的落子点都差不多,甚至包括后面的几步这就是高手和低手的差别软件工程当一个小程序拿过来的时候,项目经理让大家编写十个中国软件工程师写出来的程序各有“特色”、千差万别,十个印度软件工程师写出来的程序差不多,以至于怀疑是“抄袭”。

项目经理也不清楚中国软件业和印度软件业的差距是多少年只是觉得差了好远好远22、软件工程定义(、软件工程定义(11)TheestablishmentanduseofsoundTheestablishmentanduseofsoundengineeringengineeringprinciples(methods)principles(methods)ininordertoobtaineconomicallysoftwareordertoobtaineconomicallysoftwarethatisreliableandworksonrealthatisreliableandworksonrealmachines.(1968-machines.(1968-FritzBauer)软件工程就是为了经济地获得可软件工程就是为了经济地获得可靠的且能在实际机器上高效运行靠的且能在实际机器上高效运行的软件,而建立和使用完善的工的软件,而建立和使用完善的工程原理。

程原理。

软件工程定义(软件工程定义(22)Softwareengineering.

(1)TheSoftwareengineering.

(1)Theapplicationapplicationofaofasystematic,disciplined,quantifiableapproachsystematic,disciplined,quantifiableapproachtothedevelopment,operation,andmaintenancetothedevelopment,operation,andmaintenanceofsoftware;thatis,theapplicationofofsoftware;thatis,theapplicationofengineeringtosoftware.

(2)Theengineeringtosoftware.

(2)Thestudystudyofofapproachesasin

(1).approachesasin

(1).(IEEEStd610-1990.(IEEEStd610-1990.)软件工程是软件工程是:

(:

(11)把系统的、规范的、把系统的、规范的、可度量的途径应用于软件开发、运行和可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;维护过程,也就是把工程应用于软件;(22)研究)研究(11)中提到的途径。

中提到的途径。

Softwareengineering(3)SEIsoftwareengineeringdefinitionfrom1990SEIReportonUndergraduateSoftwareEngineeringEducation(CMU/SEI-90-TR-003):

Engineeringisthesystematicapplicationofscientificknowledgeincreatingandbuildingcost-effectivesolutionstopracticalproblemsintheserviceofmankind.Softwareengineeringisthatformofengineeringthatappliestheprinciplesofcomputerscienceandmathematicstoachievingcost-effectivesolutionstosoftwareproblems.总之:

总之:

软件工程是应用计算机科学、软件工程是应用计算机科学、数学及管理科学等原理开发软数学及管理科学等原理开发软件的工程。

它借鉴传统工程的件的工程。

它借鉴传统工程的原则、方法,以提高质量,降原则、方法,以提高质量,降低成本为目的。

低成本为目的。

软件工程是一门交叉学科软件工程是一门交叉学科软件工程的主要研究内容软件工程的主要研究内容u软件开发技术软件开发技术:

软件开发方法学软件开发方法学软件开发过程软件开发过程软件工具和软件工程环境软件工具和软件工程环境u软件工程管理软件工程管理:

软件管理学软件管理学软件经济学软件经济学软件心理学软件心理学软件工程:

一种层次化技术一种层次化技术质量焦点质量焦点过程过程方法方法工具工具软件工程层次图软件工程层次图软件工程三个要素:

软件工程三个要素:

方法、工具、过程方法、工具、过程Softwareengineeringlayers软件工程是一种层次化的技术,以有组织的质量保证为基础。

全面的质量管理和软件工程是一种层次化的技术,以有组织的质量保证为基础。

全面的质量管理和类似的理念刺激了不断的过程改进,正是这种改进导致了更加成熟的软件工程方类似的理念刺激了不断的过程改进,正是这种改进导致了更加成熟的软件工程方法的不断出现。

支持软件工程的根基就在于对质量的关注。

法的不断出现。

支持软件工程的根基就在于对质量的关注。

软件工程的基层是过程层。

软件工程过程是将技术层结合在一起的凝聚力,使得软件工程的基层是过程层。

软件工程过程是将技术层结合在一起的凝聚力,使得计算机软件能够被合理地和及时地开发出来。

过程定义了一组关键过程区域框架,计算机软件能够被合理地和及时地开发出来。

过程定义了一组关键过程区域框架,构成了软件项目的管理控制的基础,并且确立了上下各区域之间的关系,规定了构成了软件项目的管理控制的基础,并且确立了上下各区域之间的关系,规定了技术方法的采用、工程产品(模型、文档、数据、报告、表格等)的产生、李成技术方法的采用、工程产品(模型、文档、数据、报告、表格等)的产生、李成本的建立、质量的保证及变化的适当管理。

本的建立、质量的保证及变化的适当管理。

软件工程的方法层提供里建造软件在技术上需要软件工程的方法层提供里建造软件在技术上需要“如何做?

如何做?

”。

方法涵盖了一系。

方法涵盖了一系列的任务:

需求分析、设计、编程、测试和维护。

列的任务:

需求分析、设计、编程、测试和维护。

软件工程方法依赖于一组基软件工程方法依赖于一组基本原则,这些原则控制了每一技术区域,且包含建模活动和其他描述技术。

本原则,这些原则控制了每一技术区域,且包含建模活动和其他描述技术。

软件工程的工具层对过程和方法提供了自动的或半自动的支持。

当这些工具被集软件工程的工具层对过程和方法提供了自动的或半自动的支持。

当这些工具被集成起来使得一个工具产生的信息可被另外一个工具使用时,一个支持软件开发的成起来使得一个工具产生的信息可被另外一个工具使用时,一个支持软件开发的系统就建立了,称为计算机辅助软件工程(系统就建立了,称为计算机辅助软件工程(CASECASE)。

)。

CASECASE集成了软件、硬件和一集成了软件、硬件和一个软件工程数据库(一个仓库,其中包含了分析、设计、编程和测试的重要信息)个软件工程数据库(一个仓库,其中包含了分析、设计、编程和测试的重要信息)。

软件工程框架可可用用性性性性性性确确正正合合算算选取适宜的开发模型选取适宜的开发模型采用合适的设计方法采用合适的设计方法提供高质量的工程支持提供高质量的工程支持重视软件工程的管理重视软件工程的管理基基本本过过程程原则原则目标目标过过程程支支支支持持持持过过过过程程程程组组组组织织织织过过过过程程程程软件工程与一般工程的差异软件工程与一般工程的差异软件是逻辑产品而不是实物产品软件是逻辑产品而不是实物产品软件的功能依赖于硬件和软件的运软件的功能依赖于硬件和软件的运行环境以及人们对它的操作行环境以及人们对它的操作软件设计的复杂性软件设计的复杂性软件特征:

软件特征:

功能的多样性功能的多样性实现的多样性实现的多样性能见度低能见度低软件结构合理性差软件结构合理性差智力密集及知识产权保护智力密集及知识产权保护软件工程知识体系指南(软件工程知识体系指南(20042004版)版)GuidetotheSoftwareEngineeringBodyofKnowledgeGuidetotheSoftwareEngineeringBodyofKnowledge2004Version2004VersionIEEEIEEE计算机学会(计算机学会(IEEEComputerSocietyIEEEComputerSociety)SWEBOKSWEBOK的的1010个知识域(个知识域(KnowledgeAreasKnowledgeAreas,KAKA),),软件需求软件需求SoftwareRequirementsSoftwareRequirements软件设计软件设计SoftwareDesignSoftwareDesign软件构造软件构造SoftwareConstructionSoftwareConstruction软件测试软件测试SoftwareTestingSoftwareTesting软件维护软件维护SoftwareMaintenanceSoftwareMaintenance软件配置管理软件配置管理SoftwareConfigurationManagementSoftwareConfigurationManagement软件工程管理软件工程管理SoftwareEngineeringManagementSoftwareEngineeringManagement软件工程过程软件工程过程SoftwareEngineeringProcessSoftwareEngineeringProcess软件工程工具和方法软件工程工具和方法SoftwareEngineeringToolsandMethodsSoftwareEngineeringToolsandMethods软件质量软件质量SoftwareQualitySoftwareQuality20042004软件工程知识体系指南软件工程知识体系指南软件工程相关学科软件工程相关学科计算机工程计算机工程ComputerEngineeringComputerEngineering计算机科学计算机科学ComputerScienceComputerScience管理管理ManagementManagement数学数学MathematicsMathematics项目管理项目管理ProjectManagementProjectManagement质量管理质量管理QualityManagementQualityManagement软件人类工程学软件人类工程学SoftwareErgonomicsSoftwareErgonomics系统工程系统工程SystemsEngineeringSystemsEngineering软件工程软件工程本质特征本质特征软件工程关注于大型程序的构造软件工程关注于大型程序的构造软件工程的中心课题是控制复杂性软件工程的中心课题是控制复杂性软件经常变化软件经常变化开发软件的效率非常重要开发软件的效率非常重要和谐地合作是开发软件的关键和谐地合作是开发软件的关键软件必须有效地支持它的用户软件必须有效地支持它的用户在软件工程领域中是由具有一种文化在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人背景的人替具有另一种文化背景的人创造产品创造产品软件工程的基本原理软件工程的基本原理用分阶段的生命周期计划严格管理坚持进行阶段评审实行严格的产品控制采用现代程序设计技术结果应能清楚地审查开发小组的人员应该少而精承认不断改进软件工程实践的必要性软件工程技术的两个明显特点:

强调规范化强调规范化强调文档化强调文档化软件产品的标准化软件产品的标准化软件开发过程的标准化软件开发过程的标准化“软件工程软件工程”课程课程与其它软件专业课的区别与其它软件专业课的区别

(1)

(1)立足于系统的整体。

立足于系统的整体。

(2)

(2)讲授系统分析、系统设计、讲授系统分析、系统设计、测试及维护的理论和方法。

测试及维护的理论和方法。

(3)(3)构筑一个软件系统,实践构筑一个软件系统,实践软件开发全过程。

软件开发全过程。

“软件工程”课程教学与实践的目标转变对软件开发的认识:

转变对软件开发的认识:

上升上升程序程序系统系统转变思维定式:

转变思维定式:

上升上升程序员程序员系统工程师系统工程师(系统分析员系统分析员)工程化训练工程化训练系统分析员的地位系统分析员的地位用户用户分析员分析员程序员程序员职业素质职业素质ProfessionalPracticeCommunicationskillsHonesty/IntegrityTeamworkskillsInterpersonalskillsMotivation/InitiativeStrongworkethic33、软件工程方法学、软件工程方法学把在软件生命周期全过程中使用的一整套技术方把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学。

法的集合称为方法学。

(MethodologyorParadigm)软件工程方法学包含软件工程方法学包含33个要素:

个要素:

方法、工具和过程方法、工具和过程方法方法完成软件开发的各项任务的技完成软件开发的各项任务的技术方法,回答术方法,回答“怎样做怎样做”的问题;的问题;工具工具为运用方法而提供的自动的或为运用方法而提供的自动的或半自动的软件工程支撑环境;半自动的软件工程支撑环境;过程过程为了获得高质量的软件所需要为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完完成的一系列任务的框架,它规定了完成各项任务的工作步骤。

成各项任务的工作步骤。

软件工程方法学分类:

软件工程方法学分类:

传统方法学传统方法学面向对象的方法学面向对象的方法学传统方法学传统方法学(生命周期方法学生命周期方法学)仍然是使用十分广泛的软件工程方法学。

采用结构化技术来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支持结构化技术的运用。

从上而下,顺序地完成软件开发的各阶段任务。

传统方法学的优点传统方法学的优点使软件开发工程的全过程以一使软件开发工程的全过程以一种有条不紊的方式进行种有条不紊的方式进行保证了软件的质量,提高了软保证了软件的质量,提高了软件的可维护性件的可维护性提高软件开发的成功率提高软件开发的成功率软件开发的生产率也明显提高软件开发的生产率也明显提高学习传统方法学的原因学习传统方法学的原因传统方法学使用非常广泛传统方法学使用非常广泛历史悠久历史悠久在开发某些类型的软件时也比在开发某些类型的软件时也比较有效较有效在相当长一段时期内还会有生在相当长一段时期内还会有生命力命力可以深入理解面向对象方法学可以深入理解面向对象方法学为何优于传统方法学为何优于传统方法学面向对象的方法学面向对象的方法学出发点和基本原则是尽量模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识实践解决问题的方法与过程,从而使描述问题的问题空间与实现解法的解空间在结构上尽可能一致。

面向对象的方法学的特点面向对象的方法学的特点把对象作为融合了数据及在数据上的操作行为的统一软件构件;把所有对象都划分成类;按照父类与子类的关系,把若干个相关类组成一个层次结构的系统;对象彼此间仅能通过发送消息互相联系。

作业:

作业:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1