第1章 绪论(完整)_第1页
第1章 绪论(完整)_第2页
第1章 绪论(完整)_第3页
第1章 绪论(完整)_第4页
第1章 绪论(完整)_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章概论软件工程提纲软件发展软件工程软件生命周期软件过程模型软件开发策略CASE工具与环境1.1软件发展硬软合一计算机通过运行程序来实现各种不同的应用。不是唯一软件离不开程序,但程序并不是软件的全部。权威定义R.S.Pressman:“软件是能够完成预定功能和性能的可执行的计算机程序和使程序正常执行所需的数据,加上描述程序的操作和使用的文档”。软件=程序+数据+文档数据使程序正常运行所需要的输入信息。文档程序软件软件是能够完成预定功能和性能的可执行的计算机程序和使程序正常执行所需的数据,加上描述程序的操作和使用的文档。各种报告、说明、手册的总称。是软件开发的记录,主要供人们阅读,既可以用于专业人员和用户之间的通信与交流,也可以用于软件开发过程的管理和运行阶段的维护。为了解决某个特定问题而用程序设计语言编写的适合计算机处理的语句序列。1.1软件发展软件危机软件危机的典型表现软件危机的主要原因软件工程存储容量比较小衡量程序质量的标准主要是功效采用个体工作方式占用内存小用低级语言编写程序研究内容是科学计算程序、服务性程序和程序库运算速度比较慢运行时间省以数值数据处理为主研究对象是顺序程序输入、输出量较小几乎没有其他文档从第一台计算机上的第一个程序出现到实用的高级程序设计语言出现之前第一阶段1946-19561.1软件发展存储容量比较大高速主机与低速外围设备的矛盾突出出现了高级程序设计语言提出了软件一词,开始认识到文档的重要性应用领域包括数据处理(非数值数据)研究高级程序设计语言、编译程序、操作系统、支持编程的工具及各种应用软件外围设备得到迅速发展出现了操作系统、并发程序、数据库及其管理系统计算量不大工作方式逐步从个体方式转向合作方式输入、输出量却较大出现软件危机第二阶段1956-19681.1软件发展从实用的高级程序设计语言出现以后到软件工程出现以前美国用于控制火星探测器计算机软件IBM360系列机的操作系统项目负责人在项目结束后的总结“,”号被误写为“.”最终致使飞往火星的探测器发生爆炸造成高达数亿美元的损失5000人-年的工作量写出近100万行的源程序投入了这么多的人力和物力,得到的结果却极其糟糕……正像一只逃亡的野兽落到泥潭中做垂死挣扎,越是挣扎,陷得越深,最后无法逃脱灭顶的灾难……程序设计工作正像这样一个泥潭……一批批程序员被迫在泥潭中挣扎……谁也没有料到问题竟会陷入这样的困境……这个操作系统每次发行的新版本都是从前一版本中找出1000个程序错误而修正的结果1.1软件发展1.1软件发展软件危机包含下述两方面的问题:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。如何开发软件,以满足对软件日益增长的需求如何维护数量不断膨胀的已有软件(1)软件危机的典型表现对软件开发成本和进度的估计常常很不正确软件通常没有适当的文档资料软件产品的质量往往靠不住软件开发生产率提高的速度远远跟不上计算机应用迅速普及深入的趋势软件常常是不可维护的用户对“已完成的”软件系统不满意的现象经常发生软件成本在计算机系统总成本中所占的比例逐年上升(2)软件危机的主要原因软件开发与维护的方法与认识软件自身的特点软件本身的特点:软件是逻辑的,而不是物理的产品;软件是由开发或工程化而形成的,没有明显的制造过程;软件在运行和使用期间,不存在硬件那样的磨损和老化问题,但它存在退化问题,开发人员必须维护软件;大多数软件是自定的,而不是通过已有构件组装而成的;软件成本相当昂贵;软件本身是复杂的;相当多的软件工作涉及到社会因素。(2)软件危机的主要原因(2)软件危机的主要原因忽视软件需求分析的重要认为软件开发就是写程序轻视软件维护软件开发与维护的方法与认识42“个体劳动的神秘技巧”->工程项目。“软件就是程序”->完整的配置。(3)消除软件危机的途径3消除错误的概念和做法推广使用实践中总结出来的成功技术和方法开发和使用更好的软件工具有必要的组织管理措施硬件向巨型机和微型机两方面发展网络软件、分布式应用和软件得到发展提出了软件工程出现了“计算机辅助软件工程”用工程化方法管理和开发软件研究软件开发模型、软件开发方法和技术、软件工具与环境、软件过程、软件自动化系统等计算机网络飞速发展个体合作方式转向工程方式应用领域渗透到各个业务行业研究智能化、自动化、集成化、并行化为标志的软件开发技术出现了嵌入式应用侧重构件、软件体系结构、元计算研发第三阶段1968年以来1.1软件发展从软件工程出现至今提纲软件发展软件工程软件生命周期软件过程模型软件开发策略CASE工具与环境定义基本原理软件工程方法学1.2软件工程

软件工程是应用计算机科学、数学及管理科学等原理,以工程化的原则和方法制作软件的工程。计算机科学技术百科全书

①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究①中提到的途径。IEEE

软件工程就是为了经济地获得可靠的且能在实际机器上有效地运行的软件,而建立和使用完善的工程原理。1968年NATO(北大西洋公约组织)1.2.1软件工程的定义软件工程的目标预算合理费用较低功能达标性能良好提高维护性降低维护费用提高生产率及时交付结果应能清楚地审查5开发小组的人员应该少而精6承认不断改进软件工程实践的必要性7用分阶段的生命周期计划严格管理1相互独立,缺一不可1.2.2软件工程的基本原理B.W.Boehm于1983年在一篇论文中提出了软件工程的7条基本原理。他认为这7条原理是确保软件产品质量和开发效率的原理的最小集合。坚持进行阶段评审2实行严格的产品控制3采用现代程序设设计技术41.2.3软件工程方法学软件工程:技术+管理方法学:软件生命周期所使用的技术方法的合集(1)软件工程必须以有组织的质量保证为基础,全面质量管理和过程改进使得更加成熟的软件工程方法的不断出现。(2)软件工程过程是进行一系列有组织的活动,从而能够合理地和及时地开发出计算机软件。过程定义了技术方法的采用、工程产品(包括模型、文档、数据、报告、表格等)的产生、里程碑的建立、质量的保证和变更的管理。(3)软件工程方法为软件开发提供"如何做"的技术,它涵盖了项目计划、需求分析、系统设计、程序实现、测试与维护等一系列的任务。(4)软件工具为过程和方法提供自动的或半自动的支持。这些软件工具被集成起来,建立起一个支持软件开发的系统,称之为计算机辅助软件工程(CASE,ComputerAidedSoftwareEngineering)。CASE集成了软件、硬件和一个存放开发过程信息的软件工程数据库,形成了一个软件工程环境。1.2.3软件工程方法学软件工程层次的扩展程序=算法+结构方法(面向过程/OOP/MDA)过程(RUP/XP)工程(需求管理)(配置管理)(文档化)组织(管理、计划)1.2.3软件工程方法学提纲软件发展软件过程模型软件开发策略CASE工具与环境软件生命周期1.3软件生命周期软件维护改正错误适应新环境满足新需求软件开发总体设计详细设计编码和单元测试综合测试软件定义问题定义可行性研究需求分析1.3软件生命周期需求分析3可行性分析2问题定义1详细设计5总体设计4编码和单元测试6综合测试7软件维护8包括问题性质、工程目标、工程规模,并经客户认可的书面报告关键问题:“要解决的问题是什么?”问题定义1不是解决具体问题,而是研究问题的范围,价值与可行性是客户是否继续进行这项工程的决定的重要依据关键问题:对上一阶段所确定的问题有行得通的解决办法吗?需求分析3可行性研究2问题定义1详细设计5总体设计4编码和单元测试6综合测试7软件维护8可行性研究21.3软件生命周期1.3软件生命周期用户和软件开发人员之间的断层关键问题:为了解决这个问题,系统必须做什么通过双方密切配合,形成系统逻辑模型,撰写规格说明书需求分析3需求分析2问题定义1详细设计5总体设计4编码和单元测试6综合测试7软件维护8需求分析31.3软件生命周期推荐几种可能的实现方案,并推荐一种最佳方案关键问题:概况的说,应该怎样实现目标系统?总体设计3可行性分析2问题定义1详细设计5总体设计4编码和单元测试6综合测试7软件维护8总体设计4设计程序的体系结构,确定模块及其相关联系1.3软件生命周期制定详细规格,使得程序员可以据此进行编码关键问题:应该怎样具体地实现这个系统?需求分析3可行性研究2问题定义1详细设计5总体设计4编码和单元测试6综合测试7软件维护8详细设计5设计每个模块,确定需要的算法和数据结构1.3软件生命周期依据详细设计进行编码,并仔细测试每个模块关键任务:写出正确、容易理解、容易维护的程序模块详细设计5总体设计4编码和单元测试6综合测试7软件维护8编码和单元测试61.3软件生命周期集成测试、验收测试等关键任务:通过各种类型的测试使软件得到需求详细设计5编码和单元测试6综合测试7软件维护8综合测试71.3软件生命周期编码和单元测试6综合测试7软件维护8四类维护:改正性维护、适应性维护、完善性维护、预防性维护关键任务:通过各种必要的维护活动使得系统持续地满足用户需要软件维护8提纲软件发展软件开发策略CASE工具与环境软件过程模型1.4软件过程模型软件过程软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。软件过程描述为了开发客户需要的软件,什么人(who)、在什么时候(when)、做什么事(what)以及怎样(how)做这些事以实现某一个特定的具体目标。软件过程模型软件过程模型是软件开发全部过程、活动和任务的结构框架。软件过程模型的选择基于项目和应用的性质、采用的方法工具以及需要的控制和交付的产品。瀑布模型螺旋模型喷泉模型快速原型模型增量模型RUP敏捷过程与极限编程1.4软件过程模型常见模型1.4.1瀑布模型阶段间具有顺序性和依赖性推迟实现质量保证;每个阶段都必须完成规定的文档每个阶段结束前都需要对所完成的文档进行评审,以便尽早发现问题,改正错误1.4.1瀑布模型优点:可强迫开发人员采用规范的方法;严格地规定了每个段必须提交的文档;要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。不足:过度依赖于书面规格说明,软件未必真正满足用户需要;缺乏灵活性,难以适应需求不明确或需求经常变化的软件开发;开发早期存在的问题往往要到交付使用时才发现,维护代价大。适合于用户需求明确、完整、无重大变的软件项目开发1.4.2快速原型模型快速原型(1)定义软件的总体目标,标识需求;(2)快速制订原型开发的计划,构建原型;(3)用户试用,提出修改意见;(4)……(5)依据满意的原型撰写规格说明文档。快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集1.4.2快速原型模型不带反馈环线性进行加速软件开发过程节约软件开发成本原型的用途是获知用户的真正需求原型系统的内部结构并不重要利用软件工具生成的可用到最终软件产品中原型类型探索型演化型废弃策略实验型追加策略使用策略1.4.2快速原型模型

探索型

演化型

追加策略

废弃策略

实验型目的是要弄清目标系统的要求,确定所希望的特性,并探讨多种方案的可行性目的是验证方案或算法的合理性,它是在大规模开发和实现前,用于考核方案是否合适,规格说明是否可靠目的是将原型作为目标系统的一部分,通过对原型的多次改进,逐步将原型演化成最终的目标系统这些原型关注于目标系统的某些特性,而不是全部特性,开发这些原型时通常不考虑与探索或实验目的无关的功能、质量、结构等因素,这种原型通常被废丢,然后根据探索或实验的结果用良好的结构和设计思想重新设计目标系统。实现了目标系统中已明确定义的特性的一个子集,通过对它的不断修改和扩充,逐步追加新的要求,最后使其演化成最终的目标系统。适用情况:用户定义了一组一般性目标,但不能标识出详细的输入、处理及输出需求;开发者可能不能确定算法的有效性、操作系统的适应性或人机交互的形式等。1.4.3增量模型增量原型:也称为渐增模型。使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能。分解时惟一必须遵守的约束条件是,当把新构件集成到现有软件中时,所形成的产品必须是可测试的。1.4.3增量模型实现中的困难分批交付构件,每个构件均可用体系结构必须是开放的开发人员可逐步开发整体-构件之间的矛盾减少用户对全新产品的冲击多构件并发的风险便于进一步的维护优点1优点2优点3优点41.4.3增量模型增量模型特别适用于:需求经常变化的软件开发市场急需而开发人员和资金不能在设定的市场期限之前实现一个完善的产品的软件开发1.4.4螺旋模型软件风险是任何软件开发项目中都普遍存在的实际问题,项目越大,软件越复杂,承担该项目所冒的风险也越大。螺旋模型的基本思想是降低风险。将瀑布模型和增量模型结合起来,加入了风险分析。在该模型中,软件开发是一系列的增量发布,早期的迭代中,发布的增量可能是一个纸上的模型或原型,在以后的迭代中,逐步产生系统更加完善的版本。完整的螺旋模型1.4.4螺旋模型点画线的长度:

累积开发费用螺旋线的角度:

开发进度螺旋线每个周期:

一个开发阶段1.4.4螺旋模型优点特点有利于软件重用和质量监控减少了过多测试和不足的风险维护和开发直接没有本质区别风险驱动,需要丰富知识及经验适用于内部开发的大规模项目工作量及成本随迭代次数增加1.4.5喷泉模型喷泉模型是典型的面向对象的软件过程模型之一“喷泉”代指面向对象开发过程迭代和无缝的特性工作重点放在生命周期的分析阶段,在定义面向问题的对象后,不断充实和扩充这些对象。分析阶段的对象模型也适用于设计和实现阶段。1.4.5喷泉模型不同阶段的圆圈相互重叠:活动之间的交迭;概念和表示方法的一致性:开发活动之间的无缝过渡;向下的箭头:阶段内的求精。为避免使用喷泉模型开发软件时开发过程过分无序,应该把一个线性过程(例如,快速原型模型或图中的中心垂线)作为总目标。面向对象范型本身要求经常对开发活动进行迭代或求精。1.4.6RUP来源是由Rational公司的Booch、Jacobson、Rumbaugh提出的软件过程模型,也称RUP(RationalUnifiedProcess),或统一过程。使用统一建模语言,采用用例驱动和架构有限的策略,使用迭代增量建造方法。思想价值总结了多年商业化验证的六条最有效的软件开发经验

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论