




已阅读5页,还剩91页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.,1,软件工程导论,江苏科技大学软件工程系王卫东,.,2,为什么需要软件工程?什么是软件工程?,软件工程导论(第5版),普通高校本科计算机专业特色教材精选,张海藩编著,.,4,第一章软件工程学概论,.,5,1.1软件危机,软件Software=Program+Data+Document软件(software)是计算机系统中与硬件(hardware)相互依存的另一部分,它包括程序(program)、相关数据(data)及其说明文档(document)。软件特指大型复杂的程序,.,6,软件的发展,早期面向批处理有限的分布自定义软件,第二阶段多用户实时数据库软件产品,第三阶段分布式系统嵌入“智能”低成本硬件消费者的影响,第四阶段强大的桌面系统面向对象技术专家系统人工神经网络并行计算网路计算机,1950,1960,1970,1980,1990,2000,.,7,软件特征,软件是一种逻辑实体,而不是具体的物理实体软件的生产与硬件不同在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题,磨合调整,磨损用坏,修改点,实际曲线,理想曲线,.,8,软件的成本相当昂贵,.,9,软件特征,软件是一种逻辑实体,具有抽象性软件没有明显的制造过程软件在使用过程中,没有磨损、老化的问题软件对硬件和环境有着不同程度的依赖性软件的开发至今尚未完全摆脱手工作坊式的开发方式,生产效率低软件是复杂的,而且以后会更加复杂软件的成本相当昂贵大多数软件是自定的,而不是通过已有的构件组装而来的软件工作牵涉到很多社会因素,.,10,2、软件危机,过去几十年的大型软件系统的开发就犹如这样一个焦油坑,很多大型和强壮的动物在其中剧烈地挣扎。,拉布雷阿的焦油坑(MuralofLaBreaTarPits),.,11,软件危机包含两方面问题:,-如何开发软件,以满足不断增长,日趋复杂的需求;-如何维护数量不断膨胀的软件产品。鉴于软件危机的长期性和症状不明显的特点,近年来有人建议将软件危机更名为:Softwaredepression(软件萧条)Softwareaffliction(软件困扰)“慢性的苦恼”,.,12,软件危机主要有以下表现:,对软件开发成本和进度的估计常常不准确。开发成本超出预算,实际进度比预定计划一再拖延的现象并不罕见。用户对“已完成”系统不满意的现象经常发生。软件产品的质量往往靠不住。Bug一大堆,Patch一个接一个。,.,13,软件的可维护程度非常之低。软件通常没有适当的文档资料。软件的成本不断提高。软件开发生产率的提高赶不上硬件的发展和人们需求的增长。,.,14,软件危机的原因,一方面是与软件本身的特点有关另一方面是由软件开发和维护的方法不正确有关,.,15,软件开发工作量分配比例,40%50%,10%20%,.,16,引入同一变化付出的代价随时间变化的趋势,.,17,费用分配比例,55%70%,.,18,例:Windows95有1000万行代码Windows2000有5000万行代码,3000多个工程师,几百个小团队。Exchange2000和Windows2000开发人员结构,.,19,3、消除软件危机的途径,对计算机软件有一个正确的认识(软件程序)必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。推广使用在实践中总结出来的开发软件的成功技术和方法。开发和使用更好的软件工具。,.,20,1.2软件工程,工程,工程是对技术(或社会)实体的分析、设计、建造、验证和管理。,水利工程,建筑工程,机械工程,软件工程,传统工程,新兴工程,气象工程,生物工程,.,21,软件工程,-SoftwareEngineering,于1968年NATO组织在德国召开的一次会议上提出,是把软件当作一种工业产品,要求“采用工程化的原理与方法对软件进行计划、开发和维护”。,.,22,围棋与软件工程的感想,围棋围棋棋谱拿过来的时候,大师问“后面应该走哪里?”十个初级爱好者选择的落点散布在棋盘各处十个职业棋手说的落子点都差不多,甚至包括后面的几步这就是高手和低手的差别,软件工程当一个小程序拿过来的时候,项目经理让大家编写十个中国软件工程师写出来的程序各有“特色”、千差万别,十个印度软件工程师写出来的程序差不多,以至于怀疑是“抄袭”。项目经理也不清楚中国软件业和印度软件业的差距是多少年只是觉得差了好远好远,.,23,2、软件工程定义(1),Theestablishmentanduseofsoundengineeringprinciples(methods)inordertoobtaineconomicallysoftwarethatisreliableandworksonrealmachines.(1968-FritzBauer)软件工程就是为了经济地获得可靠的且能在实际机器上高效运行的软件,而建立和使用完善的工程原理。,.,24,软件工程定义(2),Softwareengineering.(1)Theapplicationofasystematic,disciplined,quantifiableapproachtothedevelopment,operation,andmaintenanceofsoftware;thatis,theapplicationofengineeringtosoftware.(2)Thestudyofapproachesasin(1).(IEEEStd610-1990.)软件工程是:(1)把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;(2)研究(1)中提到的途径。,.,25,Softwareengineering(3),SEIsoftwareengineeringdefinitionfrom1990SEIReportonUndergraduateSoftwareEngineeringEducation(CMU/SEI-90-TR-003):Engineeringisthesystematicapplicationofscientificknowledgeincreatingandbuildingcost-effectivesolutionstopracticalproblemsintheserviceofmankind.Softwareengineeringisthatformofengineeringthatappliestheprinciplesofcomputerscienceandmathematicstoachievingcost-effectivesolutionstosoftwareproblems.,.,26,总之:软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程。它借鉴传统工程的原则、方法,以提高质量,降低成本为目的。,.,27,软件工程是一门交叉学科,软件工程的主要研究内容软件开发技术:软件开发方法学软件开发过程软件工具和软件工程环境软件工程管理:软件管理学软件经济学软件心理学,.,28,软件工程:一种层次化技术,软件工程三个要素:方法、工具、过程,Softwareengineeringlayers,.,29,软件工程是一种层次化的技术,以有组织的质量保证为基础。全面的质量管理和类似的理念刺激了不断的过程改进,正是这种改进导致了更加成熟的软件工程方法的不断出现。支持软件工程的根基就在于对质量的关注。软件工程的基层是过程层。软件工程过程是将技术层结合在一起的凝聚力,使得计算机软件能够被合理地和及时地开发出来。过程定义了一组关键过程区域框架,构成了软件项目的管理控制的基础,并且确立了上下各区域之间的关系。规定了技术方法的采用、工程产品(模型、文档、数据、报告、表格等)的产生、成本的建立、质量的保证及变化的适当管理。,.,30,软件工程的方法层提供建造软件在技术上需要“如何做?”。方法涵盖了一系列的任务:需求分析、设计、编程、测试和维护。软件工程方法依赖于一组基本原则,这些原则控制了每一技术区域,且包含建模活动和其他描述技术。软件工程的工具层对过程和方法提供了自动的或半自动的支持。当这些工具被集成起来使得一个工具产生的信息可被另外一个工具使用时,一个支持软件开发的系统就建立了,称为计算机辅助软件工程(CASE)。CASE集成了软件、硬件和一个软件工程数据库(一个仓库,其中包含了分析、设计、编程和测试的重要信息)。,.,31,软件工程框架,可,用,性,性,性,确,正,合,算,选取适宜的开发模型,采用合适的设计方法,提供高质量的工程支持,重视软件工程的管理,基本过程,原则,目标,过,程,支持过程,组织过程,.,32,软件工程与一般工程的差异,软件是逻辑产品而不是实物产品软件的功能依赖于硬件和软件的运行环境以及人们对它的操作软件设计的复杂性软件特征:功能的多样性实现的多样性能见度低软件结构合理性差智力密集及知识产权保护,.,33,软件工程知识体系指南(2004版)GuidetotheSoftwareEngineeringBodyofKnowledge2004VersionIEEE计算机学会(IEEEComputerSociety),SWEBOK的10个知识域(KnowledgeAreas,KA),软件需求SoftwareRequirements软件设计SoftwareDesign软件构造SoftwareConstruction软件测试SoftwareTesting软件维护SoftwareMaintenance软件配置管理SoftwareConfigurationManagement软件工程管理SoftwareEngineeringManagement软件工程过程SoftwareEngineeringProcess软件工程工具和方法SoftwareEngineeringToolsandMethods软件质量SoftwareQuality,.,34,.,35,.,36,2004软件工程知识体系指南,.,37,软件工程相关学科,计算机工程ComputerEngineering计算机科学ComputerScience管理Management数学Mathematics项目管理ProjectManagement质量管理QualityManagement软件人类工程学SoftwareErgonomics系统工程SystemsEngineering,.,38,软件工程本质特征,软件工程关注于大型程序的构造软件工程的中心课题是控制复杂性软件经常变化开发软件的效率非常重要和谐地合作是开发软件的关键软件必须有效地支持它的用户在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创造产品,.,39,软件工程的基本原理,用分阶段的生命周期计划严格管理坚持进行阶段评审实行严格的产品控制采用现代程序设计技术结果应能清楚地审查开发小组的人员应该少而精承认不断改进软件工程实践的必要性,.,40,软件工程技术的两个明显特点:,强调规范化强调文档化,.,41,软件产品的标准化,软件开发过程的标准化,.,42,“软件工程”课程与其它软件专业课的区别,(1)立足于系统的整体。(2)讲授系统分析、系统设计、测试及维护的理论和方法。(3)构筑一个软件系统,实践软件开发全过程。,.,43,“软件工程”课程教学与实践的目标,转变对软件开发的认识:上升程序系统转变思维定式:上升程序员系统工程师(系统分析员)工程化训练,.,44,系统分析员的地位,用户,分析员,程序员,.,45,职业素质ProfessionalPractice,CommunicationskillsHonesty/IntegrityTeamworkskillsInterpersonalskillsMotivation/InitiativeStrongworkethic,.,46,3、软件工程方法学,把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学。(MethodologyorParadigm)软件工程方法学包含3个要素:方法、工具和过程方法完成软件开发的各项任务的技术方法,回答“怎样做”的问题;工具为运用方法而提供的自动的或半自动的软件工程支撑环境;过程为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。,.,47,软件工程方法学分类:,传统方法学面向对象的方法学,.,48,传统方法学(生命周期方法学),仍然是使用十分广泛的软件工程方法学。采用结构化技术来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支持结构化技术的运用。从上而下,顺序地完成软件开发的各阶段任务。,.,49,面向对象的方法学,出发点和基本原则是尽量模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识实践解决问题的方法与过程,从而使描述问题的问题空间与实现解法的解空间在结构上尽可能一致。,.,50,面向对象的方法学的特点,把对象作为融合了数据及在数据上的操作行为的统一软件构件;把所有对象都划分成类;按照父类与子类的关系,把若干个相关类组成一个层次结构的系统;对象彼此间仅能通过发送消息互相联系。,.,51,1.3软件生命周期,问题定义软件定义可行性研究需求分析总体设计详细设计软件生命周期软件开发编码单元测试综合测试运行维护持续满足用户需求,.,52,1.4软件过程,软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。,工作任务,里程碑、交付物,SQA点,过程定义了运用方法的顺序、应该交付的文档资料、为保证软件质量和协调变化所需要采取的管理措施,以及标志软件开发各个阶段任务完成的里程碑。,公共过程框架,辅助活动,框架活动,任务集合,.,53,.,54,软件开发模型,软件开发模型是软件开发全部过程、活动和任务的结构框架。它能直观表达软件开发全过程,明确规定要完成的主要活动、任务和开发策略。软件开发模型也常称为:软件过程模型软件生存周期模型软件工程范型,.,55,1.瀑布模型(WaterfallModel),.,56,传统的瀑布模型,需求分析,验证,规格说明,验证,设计,验证,编码,测试,综合测试,维护,定义时期,开发时期,维护时期,.,57,传统瀑布模型开发软件的特点,1.阶段间具有顺序性和依赖性。2.推迟实现的观点。3.每个阶段必须完成规定的文档;每个阶段结束前完成文档审查,及早改正错误。,.,58,传统瀑布模型存在什么问题?,.,59,传统的瀑布模型过于理想化。事实上,人在工作过程中不可能不犯错误。在设计阶段可能发生规格说明文档中的错误。而设计上的缺陷或错误可能在实现过程中显现出来。在综合测试阶段将发现需求分析、设计或编码阶段的许多错误。,.,60,实际的瀑布模型,.,61,瀑布模型的优点,1.可强迫开发人员采用规范的方法(例如,结构化技术);2.严格地规定了每个阶段必须提交的文档;3.要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。瀑布模型的成功在很大程度上是由于它基本上是一种文档驱动的模型。,.,62,瀑布模型的缺点,1.“瀑布模型是由文档驱动的”这个事实也是它的一个主要缺点。2.实际项目很少按照该模型给出的顺序进行;3.用户常常难以清楚地给出所有需求;4.用户必须有耐心,等到系统开发完成;5.开发者常常被不必要地耽搁。,.,63,2.原型模型-快速原型模型(RapidPrototypeModel)快速建立起来的可以在计算机上运行的程序,他所能完成的功能往往是最终产品能完成的功能的一个子集。,.,64,快速原型模型工作过程,原型模型从需求收集开始。开发者和用户在一起定义软件的总体目标,标识出已知的需求,并规划出进一步定义的区域。然后是“快速设计”,快速设计集中于软件那些对用户可见部分的表示。“快速设计”导致原型的建造。原型由用户评估,并进一步精化待开发软件的需求,逐步调整原型使其满足客户的要求。同时开发者对将要做的事情有更好的理解,这个过程是迭代的。按线性模型构建软件系统,.,65,.,66,快速原型,验证,规格说明,验证,设计,验证,编码,测试,综合测试,维护,变化的需求,验证,维护过程,开发过程,.,67,原型模型适用情况,用户定义了一组一般性目标,但不能标识出详细的输入、处理及输出需求;开发者可能不能确定算法的有效性、操作系统的适应性或人机交互的形式;原型模型可能是最好的选择,.,68,原型模型存在的问题,用户似乎看到的是软件的工作版本,其实开发者常常需要实现上的折衷,以使原型能够尽快工作。,.,69,3.增量模型(渐增模型)(IncrementalModel)先完成一个系统子集的开发,再按同样的开发步骤增加功能(系统子集),如此递增下去直至满足全部系统需求。系统的总体设计在初始子集设计阶段就应作出设想。,.,70,增量模型,需求分析,验证,规格说明,验证,设计,验证,维护,针对每个构件完成详细设计、编码和集成,经测试后交付给用户,.,71,分析,分析,分析,分析,设计,设计,设计,设计,编码,编码,编码,编码,测试,测试,测试,测试,增量1,增量2,增量3,增量4,交付,交付,交付,交付,.,72,增量模型的优点,在较短时间内向用户提交可完成部分工作的产品,并分批、逐步地向用户提交产品。从第一个构件交付之日起,用户就能做一些有用的工作。整个软件产品被分解成许多个增量构件,开发人员可以一个构件一个构件地逐步开发。,.,73,3.逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击。4.采用增量模型比采用瀑布模型和快速原型模型需要更精心的设计,但在设计阶段多付出的劳动将在维护阶段获得回报。,.,74,使用增量模型的困难,增量构件必须不破坏原来已经开发出的产品。软件的体系结构便于进行扩充,加入新构件的过程必须简单、方便,即软件体系结构必须是开放的。开发人员既要把软件系统看作整体。又要看成可独立的构件,相互矛盾。多个构件并行开发,具有无法集成的风险。,.,75,4.螺旋模型(SpiralModel),.,76,螺旋模型的核心是关注风险:软件风险是任何软件开发项目中都普遍存在的实际问题,项目越大,软件越复杂,承担该项目所冒的风险也越大。,.,77,软件风险主要有:,产品交付给用户后用户可能不满意;到了预定的交付日期软件可能还未开发出来;实际的开发成本可能超过预算;产品完成前一些关键的开发人员“跳槽”了;产品投入市场之前竞争对手发布了一个功能相近、价格更低的软件等。,.,78,螺旋模型的基本思想,使用原型及其他方法来尽量降低风险。,.,79,快速原型,验证,规格说明,验证,设计,验证,编码,测试,综合测试,维护,变化的需求,验证,风险分析,风险分析,风险分析,风险分析,风险分析,风险分析,可看作在每个阶段之前都增加了风险分析过程的快速原型模型。,简化的螺旋模型,.,80,图1.8完整的螺旋模型,.,81,螺旋模型,风险分析,工程实施,用户通信,用户评估,产品维护项目,产品增强项目,新产品开发项目,概念开发项目,计划,建造及发布,.,82,螺旋模型,优点对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标;减少了过多测试或测试不足;维护和开发之间并没有本质区别。,.,83,特点风险
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农发行淮安市涟水县2025秋招笔试创新题型专练及答案
- 2025年汝州市事业单位考试真题
- 2025年人工智能在金融服务中的风险管理报告
- 农发行湖州市吴兴区2025秋招笔试综合模拟题库及答案
- 2025年新能源行业上市公司股权激励计划实施案例分析报告
- 2025年新能源汽车电池原材料供应链稳定性分析
- 2025年制造业数字化转型数据治理与信息安全保障报告
- 中医药现代化进程中国际市场中医养生旅游市场拓展策略实证研究报告
- 2025年新能源汽车换电模式政策法规研究报告
- 农发行济宁市汶上县2025秋招群面案例总结模板
- 董关鹏-沈阳课件
- 大学生活从“心”开始
- 企业消防安全基础知识培训讲义课件
- 淄博市2020年度专业技术人员继续教育公需课考试题及答案
- 大运河前世今生课件
- 商务英语翻译实务完整版教学ppt课件全套教程
- 第五章__大数定律与中心极限定理
- 现代控制理论教案Word版
- 基本建设项目管理办法
- 加弹机操作规程
- 国家开放大学《电气传动与调速系统》章节测试参考答案
评论
0/150
提交评论