信息化综合资料→软件技术基础知识之软件工程.ppt
《信息化综合资料→软件技术基础知识之软件工程.ppt》由会员分享,可在线阅读,更多相关《信息化综合资料→软件技术基础知识之软件工程.ppt(169页珍藏版)》请在三一办公上搜索。
1、软件技术基础-软件工程,计算机软件基础之一,第三部分 软件工程,目的与要求讲课内容与学时参考资料,目的与要求,学习、掌握和了解软件工程的概念掌握软件工程的方法和软件开发的过程初步了解对软件开发质量的监控和管理,讲课内容与学时,软件工程的基本概念(2)软件开发方法与工作模型(2)结构化开发方法概述(2)小结与习题(2),教科书、参考书,孙淑霞、肖阳春等编,2000 软件技术基础,成都理工大学黄迪明编,1998,软件技术基础,电子科技大学出版社郑人杰,软件工程与软件工程管理,讲座国际标准 ISO 8631国家标准 GB8566-88CMM软件成熟度模型,第三部分 软件工程,软件工程的基本概念软件开
2、发方法与工作模型结构化开发方法概述习题,1 软件工程的基本概念,1.1 软件工程学的形成和发展1.2 软件工程学研究的内容1.3 软件与软件生命周期1.4 软件工程基本原则,1.1 软件工程学的形成和发展,软件工程学是在克服60年代末所出现的“软件危机”(software crisis)的过程中逐渐形成与发展起来的而所谓“软件危机”是在软件的规模越来越大,复杂度不断增加,软件需求量不断增大的情况下出现的由于软件开发过程是一种高密度的脑力劳动,软件开发的模式及技术不能适应软件发展的需要,所以“软件危机”便产生了,软件工程的发展,计算机软件发展至今经历了三个不同的发展时期:程序设计时期(20世纪5
3、0年代60年代)软件时期(20世纪60年代中期70年代)软件工程时期(20世纪70年代现在),发展,程序设计语言(Programming)机器语言汇编语言ALGOL60FORTRANCOBOLBASIC软件(Software)1960程序文档数据 软件危机引出软件工程(Software Engineering)软件开发工程化 1968 NATO软件开发阶段与瀑布模型软件工程标准,焦点,目标少资源、高效益在人力投入、开发期、成本、质量诸方面求得最佳风险需求:不明与变更人员流动软件知识产权保护不存在绝对无缺陷的软件产品,成功的标志,如期完成预算内完成达到质量要求(需求和希望),软件业与制造业的差异
4、,|设计|生产|运 输|仓 储|功能度,.,制造业,大量,|设计(开发)|生产|运输|仓储|功能度,.,软件业,大量,软件的特点,软件是一种逻辑实体,具有抽象性这个特点使它与其他工程对象有着明显的差异人们可以把它记录在纸上、内存和磁盘、光盘上,但却无法看到软件本身的形态,必须通过观察、分析、思考、判断,才能了解它的功能、性能等特性软件没有明显的制造过程一旦研制开发成功,就可以大量拷贝同一内容的副本,所以对软件的质量控制,必须着重在软件开发方面下工夫软件在使用过程中,没有磨损、老化的问题软件在生存周期后期不会因为磨损而老化,但会为了适应硬件、环境以及需求的变化而进行修改,而这些修改又不可避免地引
5、入错误,导致软件失效率升高,从而使得软件退化当修改的成本变得难以接受时,软件就被抛弃软件对硬件和环境有着不同程度的依赖性这导致了软件移植的问题,软件的特点(cont.),软件的开发至今尚未完全摆脱手工作坊式的开发方式,生产效率低软件是复杂的,而且以后会更加复杂软件是人类有史以来生产的复杂度最高的工业产品软件涉及人类社会的各行各业、方方面面,软件开发常常涉及其他领域的专门知识,这对软件工程师提出了很高的要求软件的成本相当昂贵软件开发需要投入大量、高强度的脑力劳动,成本非常高,风险也大现在软件的开销已大大超过了硬件的开销软件工作牵涉到很多社会因素许多软件的开发和运行涉及机构、体制和管理方式等问题,
6、还会涉及到人们的观念和心理这些人的因素,常常成为软件开发的困难所在,直接影响到项目的成败,软件危机(software crisis),软件危机是指计算机软件开发和维护过程中所遇到的一系列严重问题软件的数量急剧膨胀,软件需求日趋复杂,维护的难度越来越大,开发成本令人吃惊地高,而失败的软件开发项目却屡见不鲜它主要包含两个方面的问题:如何开发软件,以满足不断增长,日趋复杂的需求软件产品质量低劣,甚至开发过程就夭折如何维护数量不断膨胀的软件产品软件生产率低,不能满足需要,软件危机的表现,对软件开发成本和进度的估计常常不准确,开发成本超出预算,实际进度比预定计划一再拖延的现象并不罕见用户对“已完成”系统
7、不满意的现象经常发生软件产品的质量往往靠不住,Bug一大堆,Patch一个接一个软件的可维护程度非常之低软件通常没有适当的文档资料软件的成本不断提高软件开发生产率的提高赶不上硬件的发展和人们需求的增长,产生软件危机的原因,由于软件本身的特点,管理和控制软件开发过程相当困难,而且软件维护较难软件是一种高智力活动,由复杂的逻辑、复杂的运算和复杂的关联等构成由于对软件开发与软件维护的不正确方法,产生了软件危机软件规模越来越大,功能越来越强,导致软件结构非常复杂忽视软件开发前期的需求分析开发过程没有统一的、规范的方法论的指导,文档资料不齐全,忽视人与人的交流忽视测试阶段的工作,提交用户的软件质量差轻视
8、软件的维护;等等,对软件看法的转变,早期那些被认为是优秀的程序常常很难被别人看懂,通篇充满了程序技巧现在人们普遍认为优秀的程序除了功能正确,性能优良之外,还应该容易看懂、容易使用、容易修改和扩充,软件的定义,软件(software)是计算机系统中与硬件(hardware)相互依存的另一部分,它包括:程序(program)是按照事先设计的功能和性能要求执行的指令序列相关数据(data)是程序能正常操纵信息的数据结构说明文档(document)是与程序开发维护和使用有关的各种图文资料,软件工程(software engineering),提出1968年秋季,NATO(北约)的科技委员会召集了近50
9、名一流的编程人员、计算机科学家和工业界巨头,讨论和制定摆脱“软件危机”的对策。在那次会议上第一次提出了软件工程这个概念。软件工程的定义软件工程是一门研究如何用系统化、规范化、数量化等工程原则和方法去进行软件的开发和维护的学科。,1 软件工程的基本概念,1.1 软件工程学的形成和发展1.2 软件工程学研究的内容1.3 软件与软件生命周期1.4 软件工程基本原则,1.2 软件工程学研究的内容,“软件工程”是软件工程人员寻求解决出现的软件危机而产生的它的核心思想是采用工程化的原理与方法对软件进行计划、开发和维护,产品需求,产品,资源,管理!?!,高效率、低成本地开发高质量的软件!,软件工程面对的挑战
10、,软件工程两个方面的内容,软件开发技术软件开发方法学软件工具软件工程环境,软件项目管理软件度量项目估算进度控制人员组织配置管理项目计划等,1 软件工程的基本概念,1.1 软件工程学的形成和发展1.2 软件工程学研究的内容1.3 软件与软件生命周期1.4 软件工程基本原则,1.3 软件与软件生命周期,关于软件要纠正那种认为“软件就是程序,开发软件就是编写程序”的错误观念软件应是“程序以及开发、使用和维护程序所需的所有文档”。具体来说是由:应用程序:面向用户,为解决各种特定问题编写的程序系统程序:面向硬件,为应用程序服务的程序面向用户的文档:如何使用和维护应用程序的资料面向开发者的文档:记载了应用
11、程序的设计和开发过程,以便进一步开发和修改,1.3 软件与软件生命周期,软件生命周期(SLC)软件生命周期是指从软件开发到报废的全过程,也称软件生存期软件生命周期的描述模型瀑布模型(经典)快速原型模型软件生命周期的三个时期定义时期开发时期维护时期,瀑布模型,问题定义,可行性研究,需求分析,设 计,编 程,测 试,运行与维护,目标与范围说明书,可行性论证报告,需求说明书,设计文档,程序,测试报告,维护报告,计划时期,开发时期,运行时期,快速原型模型,需求分析,原型开发,原型评定,目标系统设计,目标系统实现,用户意见,软件开发流程,用 户,初始需求,交付的软件,运行维护,分析定义,需求规格说明,设
12、计,设计文档,实现,测试,源程序,软件生命周期定义期,定义期要为被开发的软件规定“做什么”开发人员要确定软件将处理什么信息软件的功能软件的性能建立什么样的接口要考虑什么设计限制软件开发成功的确认标准,软件生命周期定义期,定义期包括三个阶段的工作系统分析把软件要完成的工作与整个计算机系统的其他部分,如硬件,操作人员及数据库等应完成的工作区分开来软件项目计划确定软件开发总目标,进行风险分析,资源分配,成本估计,规定工作任务和进度安排需求分析更明确地确定软件做什么给出所开发软件的功能,性能,用户接口对数据流进行分析给出功能说明写出用户手册初稿,软件生命周期开发期,开发期着重解决所开发软件“怎么做”的
13、问题开发期要进行设计数据结构设计软件总体结构实现软件的过程细节将设计转换成程序语言进行测试,软件生命周期开发期,开发期含有以下三个阶段软件设计把已经确定的软件需求转换成特定形式的设计表示,使其得以实现程序编制用某个编程语言表达软件设计时确定的处理过程算法软件测试对已编制的程序进行测试,以找出其中功能上、逻辑上和实现中的错误,软件生命周期维护期,运行维护期着重解决因多种原因软件要做的变更软件投入使用后,要对软件作变更的理由开发期中存在的问题,当时未能发现和及时解决适应变更了的软件运行环境软件需进一步完善用户需求较小的变化,软件生存周期,软件生存期的三个时期有时也笼统地称为软件开发为更清楚地表达生
14、存期内各个阶段的工作和各阶段间的关系,可为生存期设计不同的范型,或称模型。如:瀑布模型螺旋模型喷泉模型,软件生存周期方法学,软件工程采用的生存周期方法学就是从时间角度对软件开发和维护的复杂问题进行分解将软件的生存周期分为若干阶段需求定义软件设计编程测试运行维护等每个阶段有相对独立的任务,便于分工协作使软件开发过程按有秩序能管理的方式组织起来,从而降低软件开发的难度,软件生命周期的花费比例,1 软件工程的基本概念,1.1 软件工程学的形成和发展1.2 软件工程学研究的内容1.3 软件与软件生命周期1.4 软件工程基本原则,1.4 软件工程基本原则,通用性和指导性软件工程实践总结出的基本现象稳定性
15、不会时时改变,不依赖于采用的技术、方法和工具概括性针对软件工程和软件产品特性的抽象描述基础性理解和采用它需有具体的方法和技术做补充,软件工程的原则,原则,方法与技术,方法学,工具,Principle,Method&Technique 体现原则的途径和步骤,Methodology 方法和技术的组合,支持整个软件工程过程,Tools 支持方法、技术和方法学的软件,一般性原则,严格性与形式化复杂性和分解模块化抽象性和细化变更预见性通用性与复用性递增式,软件质量管理原则,产品质量以满足用户需求为最高准则质量第一以人为本质量与生产率质量成本密切与用户的联系尽早排除缺陷实施过程质量控制,文档编制原则,在文
16、档标准基础上剪裁注意读者对象便于使用和查找使用术语、概念不应有矛盾描述的精确性,无多义性专职人员与开发人员结合独立性,需求分析与定义原则,编制需求规格说明以前,必须十分明确要解决的问题,即应先明确需求真正弄清需求,还应包括为什么这样定义需求不清必将导致预算不准总结产生错误的原因:需求变更,遗漏重要需求,与用户交流不畅需求分析不充分,需求规格说明质量低劣发现需求规格说明中有问题,应立即着手解决,不可将其带入后续开发阶段需求规格说明中不应含有待确定的部分进行需求分析时不做设计,不应将需求分析做什么与如何做混淆,设计原则,重视需求向设计转化工作,必要时比较多个设计方案设计应能和需求对应,保证每项需求
17、均在设计中得到体现设计文档是设计的成果,头脑中的设想不是设计尽可能复用一切可复用的部分设计应易于变更、易于维护、易于排错优秀的设计出自优秀人才之手,编码原则,简明清晰尽可能少用、甚至不用全局变量程序执行速度不应优先于正确性的考虑命名易记,充分注释,命名唯一,可追溯注意常见的规律是:编码错误通常相对集中,管理原则,大型复杂项目管理重于技术人员不在多,而在精计划指标应切合实际,不作不切实际的计划注意收集、积累数据不求一次估算能十分精确,但求不断调整大型项目重视风险分析项目进展快需分析原因,不可盲目乐观项目完成以后,总结分析有益于积累经验,软件过程改进,质量依赖于过程过程需要管理软件过程包括哪些过程
18、如何改进能力成熟度水平:CMM五级软件过程改进(SPI),不成熟过程的特征,随意的非强制性的主要依赖于实践者产品的功能、质量和进度常有冲突引入新技术时的风险质量难以预测,成熟过程的特征,工作按计划有序地进行过程、规程、文档规范有定义、文档化易理解、易使用、可裁减可持续改进管理的可见性产品和过程可度量、可预测新技术可以及时得到有效应用,CMU/SEI,2级-可重复层软件配置管理软件质量保证软件子合同管理*软件项目追踪与监控软件项目计划需求管理,软件过程成熟度模型的关键子过程域,能力成熟度模型,第三部分 软件工程,软件工程的基本概念软件开发方法与工作模型结构化开发方法概述习题,2 软件开发方法与工
19、作模型,2.1 结构化开发方法2.2 原型化方法2.3 面向对象的开发方法,2.1 结构化开发方法,结构化方法是现有软件开发方法中最成熟,应用最广泛的方法结构化开发方法的主要特点是快速,自然和方便结构化程序设计的概念首先是从编写程序中使用转向(GOTO)语句引起的GOTO语句的过多使用使得程序结构混乱,容易出错,且出错后不易发现和更正,结构化开发方法,结构化开发方法的出发点为了保证程序设计的质量使设计程序具有易读性、易理解性、通用性好,执行时具有较高的效率结构化开发方法的基本要求在详细设计阶段所有的模块只用三种基本控制结构单入口、单出口和顺序选择循环在设计过程中采用自顶向下逐步求精的设计方法,
20、结构化开发方法,结构化开发方法的组成70年代初 结构化程序设计方法 SP法70年代中 结构化设计方法 SD法70年代末 结构化程序分析方法 SA法SA,SD,SP法相互衔接,形成了一整套开发方法若将SA,SD法结合起来,又称为结构化分析与设计技术(SADT技术),结构化方法的工作模型,瀑布模型(Waterfall Model)是结构化方法的工作模型但从80年代开始,逐渐发现其不足:软件开发过程是一个充满回朔过程,而瀑布模型将其分割为独立的几个阶段,不能从本质上反映软件开发过程本身的规律过分强调复审,并不能完全避免较为频繁的变动尽管如此,瀑布模型仍然是开发软件产品的一个行之有效的工程模型,2 软
21、件开发方法与工作模型,2.1 结构化开发方法2.2 原型化方法2.3 面向对象的开发方法,2.2 原型化方法,原型是软件开发过程中软件的一个早期可运行的版本,它反映了最终系统的部分重要特征原型化方法的基本思想是花费少量代价建立一个可运行的系统,使用户及早获得学习的机会,原型化方法又称速成原型法(Rapid Prototyping)强调的是软件开发人员与用户的不断交互,通过原型的演进不断适应用户任务改变的需求将维护和修改阶段的工作尽早进行,使用户验收提前,从而使软件产品更加适用,原型化方法分类,原型化方法按运用原型的目的和方式的不同分为:快速建立渐进原型(RSP法,Rapid Sequentia
22、l Prototyping)该法建立的原型反映了系统的某些特征,让用户学习,有利于获得更加精确的需求说明书,后阶段的工作仍按照瀑布模型开发快速建立需求规格原型(RCP法,Rapid Cyclic Prototyping)该法采用循环渐进的开发方式,对系统模型作连续精化,将系统需要具备的性质逐步添加上去,直至所有性质全部满足,此时的原型模型也就是最终的产品速成原型适合于开发“探索型”,“实验型”与“进化型”一类的软件系统速成原型的工作模型是一个循环的模型,循环的速成原型工作模型,速成原型循环方式步骤:快速分析 快速确定软件系统的基本要求确定原型所要体现的特征(界面,总体结构,功能,性能)构造原型
23、 在快速分析的基础上根据基本规定说明,忽略细节,只考虑主要特征,快速构造一个可运行的系统它有三类原型:用户界面原型,功能原型,性能原型运行和评价原型 用户试用原型并与开发者之间频繁交流,发现问题,目的是验证原型的正确性修正与改进 对原型进行修改,增删,原型,循环的速成原型工作模型,细化的速成原型工作模型,快速分析,确定初步规格说明,构造原型,运行/评价原型,原型完成否,要细部说明否,效果满意否,严格说明细部,整理原型提供文档,修正改进原型,N,N,Y,Y,Y,N,2 软件开发方法与工作模型,2.1 结构化开发方法2.2 原型化方法2.3 面向对象的开发方法,2.3 面向对象的开发方法,面向过程
24、的开发方法面向数据流设计面向数据结构设计面向对象的开发方法(OOSD)面向对象的分析(OOA)面向对象的设计(OOD)面向对象的程序设计(OOP),面向过程的开发方法,早期的高级语言都是面向过程的程序设计者必然要专注于:程序对数据的处理过程面向数据流设计数据结构面向数据结构设计因此,由软件解决的问题通常用软件系统的数据流图或数据结构来表示,面向过程的开发方法,数据流图描述软件系统的数据从输入到输出的流程,适用于几乎所有顺序处理的软件数据结构描述软件系统的输入输出数据结构,适用于数据处理,尤其输入与输出数据结构相似的软件系统,面向对象的开发方法(OOSD),面向对象的开发方法(OOSD,Obje
25、ct-Oriented Software Development)根据稳定的对象建立系统模型,可很好地适应需要的变化具有良好的可维护性、可扩充性和可重用性是软件工程领域的一个研究重点被誉为90年代软件的核心技术之一,面向对象的开发方法基本思想,对问题领域进行自然的分割,以便接近人类通常思维的方式建立问题领域的模型,以便对客观的信息实体进行结构和行为的模拟,从而使设计的软件更直接地表现问题的求解过程以对象作为最基本的元素分析和解决问题的核心,面向对象的开发方法组成,面向对象的开发方法的组成面向对象的分析(OOA,Object-Oriented Analysis)面向对象的设计(OOD,Objec
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信息化 综合 资料 软件技术 基础知识 软件工程
链接地址:https://www.31ppt.com/p-4951292.html