您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 软件技术基础软件工程(ppt169)(1)
软件技术基础--软件工程计算机软件基础之一第三部分软件工程目的与要求讲课内容与学时参考资料目的与要求学习、掌握和了解软件工程的概念掌握软件工程的方法和软件开发的过程初步了解对软件开发质量的监控和管理讲课内容与学时1.软件工程的基本概念(2)2.软件开发方法与工作模型(2)3.结构化开发方法概述(2)4.小结与习题(2)教科书、参考书孙淑霞、肖阳春等编,2000《软件技术基础》,成都理工大学黄迪明编,1998,《软件技术基础》,电子科技大学出版社郑人杰,软件工程与软件工程管理,讲座国际标准ISO8631信息处理--程序构造及其表示法的约定国家标准GB8566-88软件开发规范CMM软件成熟度模型第三部分软件工程1.软件工程的基本概念2.软件开发方法与工作模型3.结构化开发方法概述4.习题1软件工程的基本概念1.1软件工程学的形成和发展1.2软件工程学研究的内容1.3软件与软件生命周期1.4软件工程基本原则1.1软件工程学的形成和发展软件工程学是在克服60年代末所出现的“软件危机”(softwarecrisis)的过程中逐渐形成与发展起来的而所谓“软件危机”是在软件的规模越来越大,复杂度不断增加,软件需求量不断增大的情况下出现的由于软件开发过程是一种高密度的脑力劳动,软件开发的模式及技术不能适应软件发展的需要,所以“软件危机”便产生了软件工程的发展计算机软件发展至今经历了三个不同的发展时期:–程序设计时期(20世纪50年代——60年代)–软件时期(20世纪60年代中期——70年代)–软件工程时期(20世纪70年代——现在)发展程序设计语言(Programming)–机器语言–汇编语言–ALGOL60–FORTRAN–COBOL–BASIC软件(Software)1960–程序–文档–数据软件危机引出软件工程(SoftwareEngineering)–软件开发工程化1968NATO–软件开发阶段与瀑布模型–软件工程标准焦点目标–少资源、高效益–在人力投入、开发期、成本、质量诸方面求得最佳风险–需求:不明与变更–人员流动–软件知识产权保护–不存在绝对无缺陷的软件产品成功的标志如期完成预算内完成达到质量要求(需求和希望)软件业与制造业的差异|设计||生产||运输||仓储||功能度…..制造业大量|设计(开发)||生产||运输||仓储||功能度…..软件业大量软件的特点软件是一种逻辑实体,具有抽象性–这个特点使它与其他工程对象有着明显的差异–人们可以把它记录在纸上、内存和磁盘、光盘上,但却无法看到软件本身的形态,必须通过观察、分析、思考、判断,才能了解它的功能、性能等特性软件没有明显的制造过程–一旦研制开发成功,就可以大量拷贝同一内容的副本,所以对软件的质量控制,必须着重在软件开发方面下工夫软件在使用过程中,没有磨损、老化的问题–软件在生存周期后期不会因为磨损而老化,但会为了适应硬件、环境以及需求的变化而进行修改,而这些修改又不可避免地引入错误,导致软件失效率升高,从而使得软件退化–当修改的成本变得难以接受时,软件就被抛弃软件对硬件和环境有着不同程度的依赖性–这导致了软件移植的问题软件的特点(cont.)软件的开发至今尚未完全摆脱手工作坊式的开发方式,生产效率低软件是复杂的,而且以后会更加复杂–软件是人类有史以来生产的复杂度最高的工业产品–软件涉及人类社会的各行各业、方方面面,软件开发常常涉及其他领域的专门知识,这对软件工程师提出了很高的要求软件的成本相当昂贵–软件开发需要投入大量、高强度的脑力劳动,成本非常高,风险也大–现在软件的开销已大大超过了硬件的开销软件工作牵涉到很多社会因素–许多软件的开发和运行涉及机构、体制和管理方式等问题,还会涉及到人们的观念和心理–这些人的因素,常常成为软件开发的困难所在,直接影响到项目的成败软件危机(softwarecrisis)软件危机是指计算机软件开发和维护过程中所遇到的一系列严重问题–软件的数量急剧膨胀,软件需求日趋复杂,维护的难度越来越大,开发成本令人吃惊地高,而失败的软件开发项目却屡见不鲜它主要包含两个方面的问题:–如何开发软件,以满足不断增长,日趋复杂的需求——软件产品质量低劣,甚至开发过程就夭折–如何维护数量不断膨胀的软件产品——软件生产率低,不能满足需要软件危机的表现对软件开发成本和进度的估计常常不准确,开发成本超出预算,实际进度比预定计划一再拖延的现象并不罕见用户对“已完成”系统不满意的现象经常发生软件产品的质量往往靠不住,Bug一大堆,Patch一个接一个软件的可维护程度非常之低软件通常没有适当的文档资料软件的成本不断提高软件开发生产率的提高赶不上硬件的发展和人们需求的增长产生软件危机的原因由于软件本身的特点,管理和控制软件开发过程相当困难,而且软件维护较难–软件是一种高智力活动,由复杂的逻辑、复杂的运算和复杂的关联等构成由于对软件开发与软件维护的不正确方法,产生了软件危机–软件规模越来越大,功能越来越强,导致软件结构非常复杂–忽视软件开发前期的需求分析–开发过程没有统一的、规范的方法论的指导,文档资料不齐全,忽视人与人的交流–忽视测试阶段的工作,提交用户的软件质量差–轻视软件的维护;等等对软件看法的转变早期那些被认为是优秀的程序常常很难被别人看懂,通篇充满了程序技巧现在人们普遍认为优秀的程序除了功能正确,性能优良之外,还应该容易看懂、容易使用、容易修改和扩充软件的定义软件(software)是计算机系统中与硬件(hardware)相互依存的另一部分,它包括:–程序(program)——是按照事先设计的功能和性能要求执行的指令序列–相关数据(data)——是程序能正常操纵信息的数据结构–说明文档(document)——是与程序开发维护和使用有关的各种图文资料软件工程(softwareengineering)提出–1968年秋季,NATO(北约)的科技委员会召集了近50名一流的编程人员、计算机科学家和工业界巨头,讨论和制定摆脱“软件危机”的对策。在那次会议上第一次提出了软件工程这个概念。软件工程的定义–软件工程是一门研究如何用系统化、规范化、数量化等工程原则和方法去进行软件的开发和维护的学科。1软件工程的基本概念1.1软件工程学的形成和发展1.2软件工程学研究的内容1.3软件与软件生命周期1.4软件工程基本原则1.2软件工程学研究的内容“软件工程”是软件工程人员寻求解决出现的软件危机而产生的它的核心思想是–采用工程化的原理与方法对软件进行计划、开发和维护质量成本效率工具方法过程产品需求产品资源管理!?!高效率、低成本地开发高质量的软件!软件工程面对的挑战软件工程两个方面的内容软件开发技术–软件开发方法学–软件工具–软件工程环境软件项目管理–软件度量–项目估算–进度控制–人员组织–配置管理–项目计划等1软件工程的基本概念1.1软件工程学的形成和发展1.2软件工程学研究的内容1.3软件与软件生命周期1.4软件工程基本原则1.3软件与软件生命周期关于软件–要纠正那种认为“软件就是程序,开发软件就是编写程序”的错误观念–软件应是“程序以及开发、使用和维护程序所需的所有文档”。具体来说是由:应用程序:面向用户,为解决各种特定问题编写的程序系统程序:面向硬件,为应用程序服务的程序面向用户的文档:如何使用和维护应用程序的资料面向开发者的文档:记载了应用程序的设计和开发过程,以便进一步开发和修改1.3软件与软件生命周期软件生命周期(SLC)–软件生命周期是指从软件开发到报废的全过程,也称软件生存期–软件生命周期的描述模型瀑布模型(经典)快速原型模型–软件生命周期的三个时期定义时期开发时期维护时期瀑布模型问题定义可行性研究需求分析设计编程测试运行与维护目标与范围说明书可行性论证报告需求说明书设计文档程序测试报告维护报告计划时期开发时期运行时期快速原型模型需求分析原型开发原型评定目标系统设计目标系统实现用户意见软件开发流程用户初始需求交付的软件运行维护分析定义需求规格说明设计设计文档实现测试源程序软件生命周期——定义期定义期–要为被开发的软件规定“做什么”–开发人员要确定软件将处理什么信息软件的功能软件的性能建立什么样的接口要考虑什么设计限制软件开发成功的确认标准软件生命周期——定义期定义期包括三个阶段的工作–系统分析把软件要完成的工作与整个计算机系统的其他部分,如硬件,操作人员及数据库等应完成的工作区分开来–软件项目计划确定软件开发总目标,进行风险分析,资源分配,成本估计,规定工作任务和进度安排–需求分析更明确地确定软件做什么给出所开发软件的功能,性能,用户接口对数据流进行分析给出功能说明写出用户手册初稿软件生命周期——开发期开发期–着重解决所开发软件“怎么做”的问题–开发期要进行设计数据结构设计软件总体结构实现软件的过程细节将设计转换成程序语言进行测试软件生命周期——开发期开发期含有以下三个阶段–软件设计把已经确定的软件需求转换成特定形式的设计表示,使其得以实现–程序编制用某个编程语言表达软件设计时确定的处理过程算法–软件测试对已编制的程序进行测试,以找出其中功能上、逻辑上和实现中的错误软件生命周期——维护期运行维护期–着重解决因多种原因软件要做的变更–软件投入使用后,要对软件作变更的理由开发期中存在的问题,当时未能发现和及时解决适应变更了的软件运行环境软件需进一步完善用户需求较小的变化软件生存周期软件生存期的三个时期有时也笼统地称为软件开发为更清楚地表达生存期内各个阶段的工作和各阶段间的关系,可为生存期设计不同的范型,或称模型。如:–瀑布模型–螺旋模型–喷泉模型软件生存周期方法学软件工程采用的生存周期方法学就是–从时间角度对软件开发和维护的复杂问题进行分解–将软件的生存周期分为若干阶段需求定义软件设计编程测试运行维护等–每个阶段有相对独立的任务,便于分工协作–使软件开发过程按有秩序能管理的方式组织起来,从而降低软件开发的难度软件生命周期的花费比例需求分析设计编码测试维护1软件工程的基本概念1.1软件工程学的形成和发展1.2软件工程学研究的内容1.3软件与软件生命周期1.4软件工程基本原则1.4软件工程基本原则通用性和指导性–软件工程实践总结出的基本现象稳定性–不会时时改变,不依赖于采用的技术、方法和工具概括性–针对软件工程和软件产品特性的抽象描述基础性–理解和采用它需有具体的方法和技术做补充软件工程的原则原则方法与技术方法学工具PrincipleMethod&Technique体现原则的途径和步骤Methodology方法和技术的组合,支持整个软件工程过程Tools支持方法、技术和方法学的软件一般性原则严格性与形式化复杂性和分解模块化抽象性和细化变更预见性通用性与复用性递增式软件质量管理原则产品质量以满足用户需求为最高准则质量第一以人为本质量与生产率质量成本密切与用户的联系尽早排除缺陷实施过程质量控制文档编制原则在文档标准基础上剪裁注意读者对象便于使用和查找使用术语、概念不应有矛盾描述的精确性,无多义性专职人员与开发人员结合独立性需求分析与定义原则编制需求规格说明以前,必须十分明确要解决的问题,即应先明确需求真正弄清需求,还应包括为什么这样定义需求不清必将导致预算不准–总结产生错误的原因:需求变更,遗漏重要需求,与用户交流不畅需求分析不充分,需求规格说明质量低劣发现需求规格说明中有问题,应立即着手解决,不可将其带入后续开发阶段需求规格说明中不应含有待确定的部分进行需求分析时不做设计,不应将需求分析做什么与如何做混淆设计原则重视需求向设计转化工作,必要时比较多个设计方案设计应能和需求对应,保证每项需求均在设计中得到体现设计文档是设计的成果,头脑中的设想不是设计
本文标题:软件技术基础软件工程(ppt169)(1)
链接地址:https://www.777doc.com/doc-213390 .html