您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 第一章软件与软件工程
第一章软件与软件工程软件软件工程软件生存周期1.1软件软件的概念;软件的特点;软件的分类;软件的发展;软件危机。软件的概念软件是计算机系统的重要组成部分;软件是逻辑产品,需要计算机硬件和系统软件的支撑;软件是计算机控制系统的指挥中枢;软件是信息转换器,它能对信息进行加工、处理或变换;软件是工具,在人们的生活、工作、休闲,在社会的经济、军事、政治、文化、科学技术、教育中发挥具大作用;计算机世界的软件软件是能够完成预定功能和性能,并对相应数据进行加工的程序和描述程序及其操作的文档。软件=程序+数据+文档程序=算法+数据结构软件的特点软件是被开发或设计的,而不是传统意义上被制造的软件不会”磨损”软件产业逐步走向基于构件的组装,但还是定制的软件的描述软件由程序、数据、文档组成。数据用程序设计语言要求的数据结构表示文档规范准确清晰简洁无歧义自然语言结构化英语图表程序设计语言面向机器汇编语言、机器语言等面向过程Fortran,Pascal,C等面向对象C++,Java等面向问题结构化查询语言SQL等软件分类系统软件实时软件商务软件工程和科学计算软件嵌入式软件人工智能软件个人计算机软件软件的发展1.软件发展的四个阶段1950---1965没有系统的软件开发方法和管理机制、自定义软件、批处理、有限分布。1965---1975产生人机交互的新概念、新技术软件产品、多用户、实时、数据库。1973---1988微处理器的出现并广泛应用分布式系统、嵌入智能、低成本硬件、消费者的影响。1986---2000广域和局域网络迅速普及强大的桌面系统、面向对象技术、专家系统、人工智能、神经网络、并行计算、网络计算机。2.软件发展存在的问题软件开发能力不能满足人们的需要。社会对软件的依赖程度加大,人们普遍关注软件的安全和可靠性建造高可靠性、高质量软件的任务任重道远。若干年前开发的应用软件经过几十次修改已无人认识它的内部结构,己经不可维护。由于经济原因,嵌入式系统存在许多怪现象,企业不愿意投入资源再生产,而采取打补丁+时髦界面的方法。1.软件危机的表现软件产业的发展长期滞后,与硬件发展不协调。软件开发成本过高软件质量得不到保证软件开发效率低难以控制开发进度,工作量估计困难软件不能满足社会发展的需求,成为社会、经济发展的制约因素软件危机2.软件危机原因软件的规模加大、复杂性提高、性能增强软件是逻辑产品,尚未完全认识其本质和特点缺乏有效的、系统的开发、维护大型软件项目的技术手段和管理方法用户对软件需求的描述和软件开发人员对需求的理解往往存在差异,用户经常要求修改需求,开发人员很难适应软件开发的技术人员和管理人员缺乏软件工程化的素质和要求,对工程化的开销认识不足1.2软件工程的概念1968年北大西洋公约组织(NATO)召开的计算机科学会议软件危机--根源--解决途径软件工程软件工程的定义软件工程FritzBauer[nau69]为了经济的获得可靠的,在实际机器上高效运行的软件,而建立和使用的好的工程原则。软件工程[教材]软件工程是运用工程、科学和数学的原则与方法研制、维护计算机软件的有关技术和管理的方法。软件工程[IEEE93]将系统的、规范的、可度量的方法应用于软件的开发、运行和维护的过程。软件工程三要素软件工程过程方法工具软件工程釆用层次化的方法,每个层次都包括过程、方法、工具三要素。软件工程的过程过程贯穿软件开发的各个环节管理者在软件工程过程中对软件开发的质量、进度、成本进行评估、管理和控制;技术人员采用相应的方法和工具生成软件工程产品(模型、文档、数据、报告、表格等)。软件工程管理目的为了按照进度和预算完成软件开发计划内容成本估算进度安排人员组织质量保证软件工程的方法软件工程方法是完成软件工程项目的技术手段。它支持项目计划和估算、系统和软件需求分析、设计、编程、测试和维护。软件工程方法依赖一组原则,它贯穿软件工程的各个环节。软件工程方法分两类:传统方法和面向对象方法传统软件工程与面向对象软件工程传统软件工程以结构化程序设计为基础结构化分析(SA)→结构化设计(总体设计、详细设计)→面向过程的编码→测试面向对象软件工程以面向对象程序设计为基础软件分析与对象抽取→对象详细设计→面向对象的编码→测试软件工程工具为了支援软件人员的开发和维护活动而使用的软件项目估算工具需求管理工具–RequisitePro设计建模工具–RationalRose编程和调试工具–RAD测试工具和维护工具--TestManager软件工程环境软件工程环境是指在计算机基本软件的基础上,为支持软件开发而提供的一组工具软件系统,即全面支持软件开发全过程的软件工具集合CASE(ComputerAidedSoftwareEngineering)例子IBMRationalSuite青鸟系统I,青鸟系统II软件工程目标在给定成本、进度的前提下,开发出具有可修改性、有效性、可靠性、可适应性、可追踪性、移植性、可互操作性并满足用户需求的软件产品。软件工程原则在软件开发过程中,为了达到软件开发目标,必须遵循下列原则:抽象模块化信息隐藏局部化一致性完全性可验证性1.3软件生存周期三个时期、七个阶段软件定义问题定义:确定系统的总体目标可行性分析:研究经济、技术、操作等的可行性需求分析:收集需求,需求建模软件开发系统设计:软件结构设计、数据设计、接口设计和过程设计编码:产生源程序清单测试:产生软件测试计划和软件测试报告软件运行维护:修改、完善、扩展软件软件生存周期可行性研究需求分析概要设计详细设计编码测试维护问题定义可行性研究需求分析软件开发概要设计详细设计编码组装测试确认测试软件维护问题定义1.可行性研究任务:了解用户要求和现实环境从技术、经济、市场等方面研究并论证开发该软件系统的可行性技术可行性当前的软件开发方法和工具能否支持需求的实现;操作可行性用户能否在特定的环境下使用这个软件;经济可行性开发和使用、维护这个软件的成本能否被用户所接受。2.需求分析任务:确定用户对软件系统的需求:功能需求软件必须要完成的功能;性能需求软件的安全性、可靠性、可维护性、精度、错误处理、适应性、用户培训等;运行环境约束待开发的软件产品必须满足的环境要求需求分析过程需求分析人员必须与用户不断、反复地交流和商讨,使用户需求逐步准确、一致、完全。方法面向数据流的分析方法面向数据的分析方法面向对象的分析方法抽象、问题分解、快速原型、多视点等工具RationalRose,WitClass,VisualModel阶段性产品软件需求规格说明书SRS用软件需求规格说明语言描述软件系统的功能需求、性能需求、接口需求、设计需求、软件产品的基本结构、采用的开发标准和验收原则等。用户手册概要。软件开发1.概要设计任务根据SRS建立目标软件系统的总体结构、设计全局数据库和数据结构,规定设计约束,制定组装测试计划等等。方法根据软件需求规格说明书,自顶向下、逐步求精、抽象、模块化、局部化、信息隐藏…坚持功能模块内部紧耦合,功能模块之间松耦合的原则;坚持与需求规格说明书的一致性工具面向数据流的设计方法结构图面向数据的设计方法面向对象的设计方法RationalRose阶段性产品概要设计规格说明书数据库或数据结构设计说明书集成测试计划。2.详细设计任务细化概要设计所生成的各个模块,并详细描述程序模块的内部细节(算法,数据结构等),形成可编程的程序模块,制订单元测试计划阶段新产品详细设计规格说明书,单元测试计划3.实现任务根据详细设计规格说明书编写源程序,并对程序进行调试、单元测试、系统集成,验证程序与详细设计文档的一致性方法以详细设计规格说明书为依据、基于某种程序设计语言进行编码结构化程序设计面向对象程序设计工具VisualC++,VisualJava,etcIDE阶段产品源程序代码4.组装测试任务组装测试应满足概要设计的要求。途径测试模块连接的正确性;测试系统或子系统的I/O;测试系统的功能和性能。产品满足概要设计要求的程序、组装测试报告。5.确认测试任务根据软件需求规格说明书,测试软件系统是否满足用户的需求方法用户参与,以软件需求规格说明书为依据进行确认测试工具专用测试工具阶段性产品可供用户使用的软件产品(文档,源程序)软件维护软件工作环境不断变化,软件也必然跟着变化,软件必须不断进化以满足客户的需求变化,这是软件产品最根本的特性。软件维护占用软件开发60%以上的工作量。正确性维护;扩充性维护;适应性维护。软件产品的新版本软件开发过程与测试的关系可行性研究运行需求分析确认测试概要设计组装测试详细设计单元测试编码与试调谢谢
本文标题:第一章软件与软件工程
链接地址:https://www.777doc.com/doc-203637 .html