1软件工程概述_第1页
1软件工程概述_第2页
1软件工程概述_第3页
1软件工程概述_第4页
1软件工程概述_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

1、2022/10/12第1章 软件工程概述 哈工大软件学院杨大易2020-02-09本章主要要内容1.1什么是软软件1.2软件危机机1.3软件工程程1.4软件工程程方法学学1.5软件开发发模型1.6本章小结结2020-02-091.1什么是软软件软件的定定义是计算机机程序、程序使使用的数据以及说明明程序的的各种文档的集合。软件(software)由三部分分组成可以在计计算机上上运行的的程序(program)。运行程序序需要的的数据(data)。软件开发发、维护护、使用用需要的的各种文档(document)1.1什么是软软件软件的特特征软件是一一种逻辑辑实体,具有抽抽象性软件没有有明显的的制造过过

2、程软件在使使用过程程中,没没有磨损损、老化化的问题题软件对硬硬件和环环境有着着不同程程度的依依赖性软件开发发至今尚尚未完全全摆脱手手工作坊坊式的开开发方式式,生产产效率低低软件的成成本相当当昂贵大多数软软件是自自定的,而不是是通过已已有的构构件组装装而来的的软件工作作牵涉到到很多社社会因素素2020-02-092020-02-091.1什么是软软件软件的发发展过程程从1946年到60年代初:程序设计计时期,其主要要特征是是程序生生产方式式为个体体手工方方式。从20世纪60年代初到到70年代初:程序系统统时期,程序的规规模已经经很大,需要多多人分工工协作,软件的的开发方方式由“个体生生产”发发展

3、到了了“软件件作坊”。从20世纪70年代中期期至80年代中期期:软件工程程时期,软件的开开发以工工程化的的思想为为指导,用工程程化原则则、方法法和标准准来开发发和维护护软件。从20世纪80年代中期期至今:面向对象象时期,面向对对象软件件开发技技术在迅迅速取代代传统软软件工程程开发方方法。2020-02-091.2软件危机机1968年北大西西洋公约约组织的的计算机机科学家家在德国国召开国国际会议议,把计计算机软软件的开开发和维维护过程程中出现现的一系系列严重重问题称称为“软件危机机”。软件危机机包括两两个方面面的问题题如何开发发软件以以满足用用户对软软件日益益增长的的需求如何维护护数量迅迅速增长

4、长的已有有软件2020-02-091.2软件危机机软件危机机的表现现软件功能能与实际际需求不不符软件开发发生产率率提高的的速度远远远不能能满足用用户需要要软件价格格昂贵软件产品品的质量量差对软件开开发成本本和进度度的估计计常常不不准确软件文档档资料通通常既不不完整也也不合格格软件的维维护费用用急剧上上升2020-02-091.2软件危机机产生软件件危机的的原因软件缺乏乏“可见见性”,在写出出程序代代码并在在计算机机上运行行之前,软件开开发过程程的进展展质量较较难衡量量,很难难检验开开发的正正确性。软件规模模庞大,逻辑结结构复杂杂。开发管理理人员只只重视设设计程序序而轻视视用户需需求分析析,导致

5、致最后研研制出的的软件产产品无法法满足用用户的需需求。软件设计计技术和和管理技技术落后后,没有有统一的的软件质质量管理理规范。在软件的的开发与与维护关关系问题题上存在在错误的的概念,重视开开发,而而轻视维维护。2020-02-091.3软件工程程软件工程程的提出出1968年,北大大西洋公公约组织织在原西西德召开开计算机机科学会会议,由由FritzBauer首次提出出了“软件工程程”的概念念。软件工程程的定义义软件工程程是用科科学知识识和技术术原理来来定义、开发、维护软软件的一一门学科科。它应应用工程程的概念念、原理理、技术术和方法法,应用用科学的的开发技技术和管管理方法法来开发发软件。1983

6、年IEEE给出的定定义为:“软件件工程是是开发、运行、维护和和修复软软件的系系统方法法。”其其中,“软件”的定义义为:“计算机机程序、方法、规则、相关的的文档资资料以及及在计算算机上运运行时所所必需的的数据。”软件工程程三要素素:方法、工具、过程1.3软件工程程SWEBOK:软件工工程知识识体系指指南2020-02-091.3软件工程程SWEBOK2020-02-092020-02-091.3软件工程程软件工程程基本思思想著名的软软件工程程专家B.W.Boehm于1983年提出用分阶段段的生存存周期计计划严格格管理坚持进行行阶段评评审实行严格格的产品品控制采用现代代程序设设计技术术结果应能能清

7、楚地地审查开发小组组的人员员应少而而精承认不断断改进软软件工程程实践的的必要性性2020-02-091.3软件工程程软件工程程的目标标提高软件件产品质质量和软软件开发发效率,减少软软件维护护难度需考虑的的问题可修改性性:允许对对系统修修改,而而不增加加系统复复杂性。有效性:软件系系统能在在一定的的时间资资源和空空间资源源环境下下,完成成规定的的任务。正确性:软件能能准确无无误地执执行用户户需求的的各种功功能,满满足用户户要求的的各种性性能指标标。可靠性:也称为为健壮性性,在硬硬件、操操作系统统出现故故障,或或人为操操作不当当的情况况下,不不会导致致软件系系统失效效。2020-02-091.3软

8、件工程程可理解性性:包括两两个方面面的内容容,一是是软件系系统结构构清晰、容易理理解,二二是程序序算法功功能清晰晰,容易易读懂。可重用性性:软件中中的某个个部分可可以在系系统的多多处重复复使用,或者在在多个系系统中使使用。可适应性性:软件在在不同硬硬件和操操作系统统环境下下的适应应程度。可移植性性:体现了了软件从从一种计计算机软软件移动动到另一一种计算算机环境境下的难难易程度度。可跟踪性性:包括两两方面,一是可可以根据据软件开开发的文文档对设设计过程程进行正正向跟踪踪或逆向向跟踪;二是软软件测试试和维护护过程中中,对程程序的执执行进行行跟踪,根据跟跟踪情况况,分析析程序执执行的因因果关系系。互

9、操作性性:多个软软件相互互通信,协作完完成任务务的能力力。2020-02-091.3软件工程程软件工程程的原则则抽象(abstraction):抽取取各个事事物中共共同的最最基本的的特征和和行为,暂时忽忽略它们们之间的的差异。信息隐藏藏(informationhiding):将模模块内部部信息(数据和和过程)封装起起来。局部化(localization):即在在一个物物理模块块内集中中逻辑上上相互关关联的计计算资源源。一致性(consistency):应保保证在开开发过程程中相关关内容的的一致。完全性(completeness):软件件系统不不丢失任任何重要要成分,完全实实现所需需的系统统功能

10、的的程度。可验证性性(verifiability):开发发大型软软件系统统需要对对系统逐逐层分解解、验证证。2020-02-091.4软件工程程方法把在软件件生命周周期全过过程中使使用的一一整套技技术集合合称为方法(methodology),也称称为范型(paradigm)。软件工程程方法包包括开发发方法、开发工具和开发过程三方面开发方法法:完成成软件开开发的技技术方法法开发工具具:开发发软件的的支撑环环境开发过程程:完成成开发软软件各项项任务的的工作步步骤。目前使用用得最广广泛的软软件工程程方法,分别是是传统方法法和面向对象象方法。2020-02-091.4软件工程程方法传统方法法:也可称称

11、为软件生命命周期方方法或结构化方方法,把软件件开发和和维护分分成软件件定义、软件开开发和软软件维护护三个时时期,每每个时期期又分成成若干个个阶段。软件定义义时期:确定软软件开发发必须完完成的任任务;论论证软件件可行性性;确定定用户需需求的详详细功能能和性能能。可划划分为三三个阶段段:问题题定义、可行性性研究和和需求分分析。软件开发发时期:设计和和实现软软件的定定义。四四个阶段段:总体体设计、详细设设计、编编码及单单元测试试、综合合测试。软件维护护时期:对投入入使用的的软件的的修改,实际上上是对软软件的一一次重新新定义和和开发过过程。2020-02-091.4软件工程程方法传统方法法的各阶阶段问

12、题定义义:弄清楚楚要解决决什么问问题。可行性研研究:分析清清楚“用用什么办办法解决决这个问问题”,保证在在技术上上、实效效上、法法律上都都是行得得通的。需求分析析:确定软软件的功功能和性性能。用用户要要要清楚开开发出的的软件系系统能够够做什么么;软件件开发人人员也应应该清楚楚用户的的具体要要求是什什么。总体设计计:设计软软件的总总体结构构,将一一个大系系统按照照功能设设计成小小模块,总体设设计有时时也称概概要设计计。详细设计计:对每个个模块设设计具体体算法和和数据结结构,详详细设计计有时也也称模块块设计。编码及单单元测试试:根据详详细设计计的结果果,用程程序设计计语言,编写正正确的源源程序,并

13、且对对每段程程序进行行严格测测试。综合测试试:通过测测试使软软件系统统达到用用户的要要求。最最基本的的测试集集成测试试和验收收测试。软件维护护:软件投投入运行行后的维维护活动动,通常常可划分分为四类类:改正正性维护护、适应应性维护护、完善善性维护护、预防防性维护护。1.4软件工程程方法仍然是使使用十分分广泛的的软件工工程方法法。采用结构构化技术术来完成成软件开开发的各各项任务务,并使使用适当当的软件件工具或或软件工工程环境境来支持持结构化化技术的的运用。从上而下下,顺序序地完成成软件开开发的各各阶段任任务。2020-02-091.4软件工程程方法面向对象象方法一种把面面向对象象的思想想应用于于

14、软件开开发过程程中,指指导开发发活动的的系统方方法,简简称OO(Object-Oriented)方法。面向对象象方法的的特征是建立在在对象概概念基础础上的方方法学,对象的的概念贯贯穿于开开发全过过程。运用人类类日常的的思维方方法和原原则进行行系统开开发,体体现出继继承性、封装性性、多态态性等基基本特征征。可划分为为三个阶阶段:面面向对象象分析(OOA)、面向向对象设设计(OOD)、面向向对象实实现(OOI)。2020-02-092020-02-091.5软件生命命周期模模型软件项目目开发和和维护的的全过程程软件生命命周期模模型的种种类以软件需需求完全全确定为为基础的的瀑布模模型;开发初期期仅给

15、出出基本需需求的渐渐进式模模型,如如原型模模型、螺螺旋模型型、喷泉泉模型等等;以形式化化开发方方法为基基础的变变换模型型、基于于第四代代语言技技术的模模型。在实际开开发时,应根据据项目的的特点和和现有的的条件选选取合适适的模型型,也可可以把几几种模型型组合起起来使用用以便充充分利用用各模型型的优点点。2020-02-091.5软件开发发模型瀑布模型型严格按照照软件生生存周期期各个阶阶段来进进行开发发,上一一阶段的的输出即即是下一一阶段的的输入,强调每每一阶段段的严格格性。2020-02-091.5软件开发发模型瀑布模型型的优点点提供了软软件开发发的基本本框架,有利于于大型软软件开发发过程中中人

16、员的的组织、管理,有利于于软件开开发方法法和工具具的研究究与使用用,因此此,在软软件工程程中占有有重要的的地位。瀑布模型型的缺点点在软件开开发的初初期阶段段就要求求做出正正确、全全面、完完整的需需求分析析对许多多应用软软件来说说是极其其困难的的。作为整体体开发的的瀑布模模型,由由于不支支持产品品的演化化,缺乏乏灵活性性,对开开发过程程中很难难发现的的错误,只有在在最终产产品运行行时才能能暴露出出来,从从而使软软件产品品难以维维护。瀑布模型型的适用用场合适合于功功能、性性能明确确、完整整、无重重大变化化的软件件系统2020-02-091.5软件开发发模型原型模型型开发人员员与用户户一起进进行需求

17、求分析,进行快快速设计计,建造造原型,原型由由用户评评估,进进一步修修改原型型,再次次进行设设计。迭迭代这个个过程,逐步满满足用户户需要。2020-02-091.5软件开发发模型原型模型型的主要要优点原型模型型法可以以得到良良好的需需求定义义,能够够有效处处理用户户的模糊糊需求,开发者者和用户户得到充充分的协协作。原型模型型的主要要缺点开发者常常常需要要实现上上的折衷衷,以使使原型能能尽快工工作;用户似乎乎看到的的是软件件的工作作版本,其实软软件质量量和可靠靠性难以以保证;资源规划划和管理理较为困困难,更更新文档档工作量量繁重。原型模型型的适用用场合适合于那那些不能能预先确确切定义义需求的的软

18、件系系统的开开发,更更适合于于那些项项目组成成员(包包括分析析员、设设计员、程序员员和用户户)不能能很好交交流或通通信有困困难的情情况。2020-02-091.5软件开发发模型螺旋模型型综合了瀑瀑布模型型和原型型模型的的优点,即将两两者结合合,并加加入了风风险分析析机制。2020-02-091.5软件开发发模型螺旋模型型的优点点支持用户户需求的的动态变变化。螺旋模型型特别强强调原型型的可扩扩充性和和可修改改性。为项目管管理人员员及时调调整管理理决策提提供了方方便,可可降低开开发风险险。螺旋模型型的缺点点如果每次次迭代的的效率不不高,致致使迭代代次数过过多。需要有相相当丰富富的风险险评估经经验和专专门知识识,要求求开发队队伍水平平较高。螺旋模型型适用场场合支持需求求不明确确、特别别是大型型软件系系统的开开发,并并支持多多种软件件开发方方法,是是一种具具有广阔阔前景的的模型。2020-02-091.5软件开发发模型喷泉模型型以面向对对象软件件开发方方法为基基础,以以用户需需求为动动力,以以对象来来驱动的的模型。2020-02-091.5软件开发发模型喷泉模型型的特点点软件系统统可维护护性较好好;各阶段相相互重叠叠,表明明了面向向对象开开发方法法各阶段段间的交交叉和无无缝过渡渡;整个模型型是一个个迭代的的过程,

温馨提示

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

评论

0/150

提交评论