您好,欢迎访问三七文档
软件工程杨振参考文献《SoftwareEngineering,APractitioner’sApproach,FourthEdition》RogerS.Pressman,机械工业出版社(影印),McGraw-Hill《Reuse-BasedSoftwareEngineering》,HafedhMill等,电子工业出版社(影印)《软件工程,6thEdition》,IanSommerville,机械工业出版社(影印)《面向对象软件工程》,TimothyC.Lethbridge,机械出版社什么是软件软件的发展软件危机软件工程软件生存期及开发模型软件工程软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合。程序是按事先设计的功能和性能要求执行的指令序列数据是使程序能正常操纵信息的数据结构文档是与程序开发,维护和使用有关的图文材料什么是软件?软件的特点软件是一种逻辑实体,而不是具体的物理实体。因而它具有抽象性软件的生产与硬件不同,在它的开发过程中没有明显的制造过程在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题软件的开发和运行常受到计算机系统的限制,对计算机系统有着不同程度的依赖性软件的开发至今尚未完全摆脱手工艺的开发方式软件本身是复杂的实际问题的复杂性程序逻辑结构的复杂性软件成本相当昂贵相当多的软件工作涉及到社会因素软件的发展第一阶段是20世纪50年代初期至20世纪60年代初期的十余年是计算机系统开发的初期阶段。编写者和使用者往往是同一个或同一组人。隐含过程,最后除了程序清单外,没有其他文档资料保存下来。第二阶段跨越了从60年代中期到70年代末期的十余年,在这个时期,出现了软件产品和“软件作坊”的概念,设计人员开发软件不再像早期阶段那样只为自己的研究工作需要,而是为了用户更好地使用计算机,但“软件作坊”仍然沿用早期形成的个体式的软件开发方法。软件的维护工作以惊人的比例耗费资源,更严重的是,程序设计的个体化和作坊化特性使软件最终成为不可维护的,从而出现了早期的软件危机。人们随之也就开始寻求采用软件工程的方法来解决软件危机问题。第三阶段是20世纪70年代中期至20世纪80年代末期,分布式系统、网络的发展对软件开发提出了更高的要求,硬件的发展速度已经超过了人们对软件的需求速度,因此使得硬件价格下降,软件的价格急剧上升,导致了软件危机的加剧,致使更多的科学家着手研究软件工程学的科学理论、方法和时限等一系列问题。软件开发技术的度量问题受到重视,最著名的有软件工作量估计COCOMO模型、软件过程改进模型CMM等。第四阶段是从20世纪80年代末期开始的。这个阶段是强大的桌面系统和计算机网络迅速发展的时期计算机体系结构由中央主机控制方式变为客户机/服务器方式,专家系统和人工智能软件终于走出实验室进入了实际应用,虚拟现实和多媒体系统改变了与最终用户的通信方式,出现了并行计算和网络计算的研究,面向对象技术在许多领域迅速取代了传统软件开发方法。软件发展现状(1)已经存在大量正在运行的软件。金融、电信、航空航天等(2)软件的应用范围不断扩大。商务、交通、家电等,软件无处不在。(3)软件的规模与复杂性持续增加非常大规模系统:从50万行增加到1000万行,扩大了20倍;复杂性:a.子系统数目越来越多;b.计算机应用从数值计算开始发展到几百万条指令的大型企业业务应用,再发展到几千万终端用户直接交互工作的网络应用。(4)出现了大量与软件相关的标准。CORBA、UML、XML、TMN、CWM等。(5)软件危机仍然存在(软件脱节)1968-2000:软件效率、质量、进度、预算无法控制。软件危机IBM/360布鲁克斯2002年阿丽亚娜火箭爆炸70年代穿梭号飞船工业控制软件危机指在计算机软件的开发和维护过程中所遇到的一系列严重问题。这类问题绝不仅仅是“不能正常运行的软件”才具有的,实际上几乎所有软件都不同程度地存在这类问题。概括来说,软件危机包含两方面问题:其一是如何开发软件,以满足不断增长、日趋复杂的需求;其二是如何维护数量不断膨胀的软件产品。软件危机主要有下列表现对软件开发成本和进度的估计常常不准确。开发成本超出预算,实际进度比预定计划一再拖延的现象并不罕见。用户对“已完成”系统不满意的现象经常发生。软件产品的质量往往靠不住。“缺陷”一大堆,“补丁”一个接一个。软件的可维护程度非常之低。软件通常没有适当的文档资料。软件的成本不断提高。软件开发生产率的提高赶不上硬件的发展和人们需求的增长。软件工程是一门研究如何用系统化、规范化、数量化等工程原则和方法去进行软件的开发和维护的学科。可以定义为:软件工程是一类设计软件的工程。软件工程应用计算机科学、数学及管理科学等原理,借鉴传统工程的原则、方法,创建软件以达到提高质量、降低成本的目的。计算机科学、数学用于构建模型与算法;工程科学用于制定规范、设计规范、评估成本及确定权衡;管理科学用于计划、资源、质量、成本等管理。软件工程学是一门指导计算机软件开发和维护的科学。软件工程包括的内容软件开发技术:包括软件开发方法学、软件工具和软件工程环境软件项目管理:包括软件度量、项目估算、进度控制、人员组织、配置管理、项目计划等。软件工程的研究对象软件方法软件语言软件工具软件过程软件工程的基本原理用分阶段的生命周期计划严格管理坚持进行阶段评审实行严格的产品控制采纳现代程序设计技术结果应能清楚地审查开发小组的人员应少而精承认不断改进软件工程实践的必要性软件的生存期定义阶段(1)系统分析(2)制定软件项目计划(3)需求分析开发阶段(1)软件设计(2)编码(3)软件测试维护阶段常用的软件开发模型瀑布模型、原型模型、演化模型、螺旋模型、喷泉模型、第四代技术过程模型瀑布模型瀑布模型1970年,W.Royce提出瀑布模型。特征:活动的输入来自上一活动的输出;完成该项活动的内容;活动的输出传给下一活动;对活动的实施工作进行评审。适合:需求明确的任务。优点:以项目的阶段评审和文档控制为手段有效地对整个开发过程进行指导,从而保证了软件产品及时交付,并达到预期的质量要求。缺点:成品时间长;缺乏灵活性。原型法模型(prototypemodel)基本思想:从用户需求出发,快速建立一个原型,使用户通过这个原型初步表达出自己的要求,并通过反复修改、完善,逐步靠近用户的全部需求,最终形成一个完全满足用户要求的新系统演化模型项目开发初始阶段对需求的认识不够清晰,使得开发工作出现再开发在所难免。经验告诉我们:开发“两次”后的软件能较好地满足用户的要求。第一次:试验开发,目的是探索可行性,弄清楚项目的需求。第二次:在第一次的原型基础上进行开发,从而获得较为满意的软件产品。演化模型适合:事先不能清晰和完整定义需求的软件开发。需求分析软件设计程序编码软件测试软件集成软件评审需求分析软件设计程序编码软件测试软件集成软件评审反馈“第一次”“第二次”螺旋模型对于大型项目而言,事先不能完整清晰地定义需求是常事,而且开发一个原型是远远不能解决问题的,需要开发内容逐步丰富的多个原型。大型项目的规模和复杂性增加,软件开发过程中必然存在着许多风险问题,风险分析是保证项目成功的必要手段。2.4螺旋模型螺旋模型螺旋模型沿着螺线旋转,在四个象限上分别表达了四个方面的活动,即:制定计划──确定软件目标,选定实施方案,弄清项目开发的限制条件风险分析──分析所选方案,考虑如何识别和消除风险实施工程──实施软件开发客户评估──评价开发工作,提出修正建议喷泉模型软件开发的固有特征:1、迭代多次重复、演进。2、无间隙各阶段间无明显的界限。支持分析和设计结果的自然复用。适用:面向对象的软件开发过程。第四代技术4GLCASE
本文标题:软件工程概论
链接地址:https://www.777doc.com/doc-213262 .html