




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件工程综述摘要:本文简单介绍了软件工程。分别从软件工程的定义、发展历程、危机及解决途径、软件过程的基本原理、软件工程包含的领域和生命周期模型等方面介绍。从而对软件工程的基本内容有了初步了解。关键词: 定义 过程 原理 领域 模型 1.引言:软件工程(Software Engineering,简称为SE)是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及到程序设计语言,数据库,软件开发工具,系统平台,标准,设计模式等方面。在现代社会中,软件应用于多个方面。典型的软件比如有电子邮件,嵌入式系统,人机界面,办公套件,操作系统,编译器,数据库,游戏等。同时,各个行业几乎都有计算机软件的应用,比如工业,农业,银行,航空,政府部门等。这些应用促进了经济和社会的发展,使得人们的工作更加高效,同时提高了生活质量。2.系统介绍2.1软件工程的定义概括地说,软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的科技方法结合起来,经济地开发出高质量的软件并有效地维护它,这就是软件工程。下面给出软件工程的几个定义:1983年IEEE(美国电气和电子工程师协会)给软件工程下的定义是:“软件工程是开发、运行、维护和修复软件的系统方法。”这个定义相当概括,它主要强调软件工程是系统方法而不是某种神秘的个人技巧。Fairly认为:“软件工程学是为了在成本限额以内按时完成开发和修改软件产品所需要的系统生产和维护技术及管理学科。”这个定义明确指出了软件工程的目标是在成本限额内按时完成开发和修改软件的工作,同时也指出了软件工程包含技术和管理两方面的内容。Fritz Bauer给出了下述定义:“软件工程是为了经济地获得可靠的且能在实际机器上有效地运行的软件,而建立和使用的完善的工程化原则。”这个定义不仅指出软件工程的目标是经济地开发出高质量的软件,而且强调了软件工程是一门学科,它应该建立并使用完善的工程化原则。1993年IEEE进一步给出了一个更全面的定义。软件工程是:把系统化的、规范的、可度量的途径应用于软件开发、运行和维护的过程,也就是把工程化应用于软件中;研究中提到的途径。 1 2.2软件发展及危机2.2.1软件发展的历程 程序设计阶段 计算机发展的早期阶段(20世纪50年代初期20世纪60年代中期)。在这个阶段硬件已经同用花,而软件的生产却是个体化。 程序系统阶段 计算机系统发展的第二阶段(20世纪60年代中期20世纪70年代末期)。引入了人机交互的新概念。出现了实时系统和第一代数据库管理系统。 软件工程阶段 计算机系统发展的第三阶段(始于20世纪70年代中期)。以软件的产品化、系列化、工程化、标准化为特征的软件产业发展起来,打破了软件生产的个体化特征,有了可以遵循的软件工程化得设计原则、方法和标准。 第四阶段 有复杂操作系统控制的强大的桌面机、广域网络和局域网络,配以先进的软件应用已成为标准。从技术的软件刚才阶段过渡到社会信息化得计算机系统阶段。 随着第四阶段的进展,一些新技术开始涌现。 22.2.2软件危机 由于缺乏软件开发经验和科学的理论指导,开发者不能准确地估计软件开发的成本和进度。所制定的成本规划可能大大低于实际的成本,实际的开发进度也可能要比计划的慢,为了赶进度往往就会牺牲软件的质量。 由于缺乏使开发人员与用户进行交流的有效机制,开发人员常会犯闭门造车的错误。从而会造成用户对已完成的软件系统不满意。由于测试工作不够充分,又没有好的软件质量保证技术,导致提交给用户的软件质量不高。软件的可维护性差,程序的错误难以改正。程序的可移植性差,很难适应不同的运行环境。软件的可重用性差,大量的软件人员在重复开发。开发过程缺乏标准和规范的指导,各个开发组织都有自己的开发方法,开发组织之间进行工作交接的流程也不规范。软件开发生产率的提高速度难以满足对软件需求的增长速度,软件产品供不应求。由于软件开发和维护方法不当,使得软件成本居高不下,过高的成本已严重制约了软件的开发。造成软件危机的原因很多,归纳起来主要有两个方面:一是与软件本身的特点有关,二是与软件开发与维护方法不当有关。2.2.3解决软件危机的途径采用工程化方法来开发和维护软件。软件开发不应只是个体化的劳动,而应该是由组织良好、管理严密、各类人员共同配合完成的一个工程项目,因此应该注意吸收和借鉴从事其他工程项目的行之有效的科学原理和方法。采用先进的技术、方法、工具开发和软件设计。即采用先进的管理技术、规范的开发方法和模型、各种提高开发效率的软件工具等。采用必要的组织管理措施。软件工是正式在解决软件危机问题的过程中形成的一门综合技术与管理两个方面的新兴学科,并逐渐成为指导计算机开发、维护、管理的理论依据。 32.3软件过程的基本原理2.3.1软件的生命周期一个软件产品从构想到不再使用,期间会经历若干阶段,我们称其为软件的生命周期(life cycle)。生命周期中的3个主要阶段是:开发阶段(development),使用阶段(use)和维护阶段(maintenance)。通常情况是:客户提出需要解决的问题,软件开发者就构思并开发相应的软件,并藉此获得酬劳。新的软件是在开发阶段建立的。软件开发完毕之后就交付用户使用。用户在使用过程中,通常都会发现各种问题(错误)及提出各种修改建议。这些信息都会反馈给开发者,这就进入了维护阶段.在软件维护阶段中,软件中的错误被修改(标识),功能被增强。如果需要进行较大的修改,通常会开发一个新版本的软件并发布和使用。当一个软件的维护费用过于昂贵时,开发者就考虑不再使用该软件,也不再发布新的版本。软件开发阶段是生命周期中的第一个阶段,也是最重要的阶段。如果一个软件开发得好,后续的维护将十分容易,相应的也就节约维护成本。2.3.2软件开发阶段软件工程师通常将软件的开发阶段分为下面4个子阶段:分析阶段设计阶段实现阶段测试和调试阶段1.分析阶段分析问题是第一步也是最为重要的一部。在这一步中。您需要做以下事情:全面理解所要解决的问题进行需求分析(requirement analysis):理解问题需求,包括程序是否需要和用户进行交互,是否操纵数据,是否有输出结果以及输出结果的格式等等。举一个例子,如果您需要编写一个自动取款机(ATM)的程序。在分析阶段,您要给出该机可以进行的操作,如:取款,存款,转账及余额查询等等。您会和使用该机的客户进行讨论,理解他们的需求,增加必要的操作,以便是您的程序是用户友好的。如果程序需要对数据进行操作,开发人员必须了解数据类型及它们的表示方法。这时候可能会接触一些样本数据。如果程序有输出信息,必须确定它们所生成的结果及输出格式等。如果需要解决的问题过于复杂,可以把它分解为多个子问题,在对每个子问题做相应的需求分析。2.设计阶段当您仔细分析完问题后,就需要设计相应的算法去解决问题。如果已经将问题分解为若干子问题,那么对每个子问题都需要设计相应的算法。算法(algorithm):在有限时间内获得问题解决方案的逐步求解过程。1结构化设计方法将一个问题分解为若干个子问题的方法叫做结构化设计方法(structured design)。结构化设计方法又叫做自顶向下的设计方法(top-down design)、逐步求精方法(stepwise refinement)和模块化程序设计方法(modular programming)。在结构化设计方法中,问题被分解为若干子问题,然后分别对每个子问题进行分析和求解。所有子问题的解合并起来就是原始问题的解。使用结构化设计方法进行编程就叫做结构化程序设计(structure programming)。2面向对象设计方法在面向对象设计方法(object-oriented,OOD)中,求解问题的首要步骤是识别称为“对象”(object)的组件(它是运用该方法求解问题的基础)和确定对象之间如何进行交互。比如,我们要为一家录像出租店编写一个可以使其业务自动化的程序。在这个问题中,我们可以确定两个主要对象,即:录像带对象和客户对象。明确系统中的对象之后,下一步就是为每个对象确定有关数据和数据上进行的相关操作。对于录像带对象而言,数据可能包括影片名称,演员名单,制片人,出版公司,库存副本数等等。在录像带对象可以进行的相关操作包括查询影片名,每租出一盘录像带就将库存副本数减一,客户每归还一盘录像带就将库存数加一。由上文可知:对象包括数据和在数据上执行的操作。对象可以看作数据和其上操作的统一体。使用面向对象方法编程,最终的程序是交互对象的集合。实现面向对象设计方法的编程语言叫做面向对象程序设计(object-oriented programming,OOP)语言。面向对象设计方法的3个基本原则:封装性(encapsulation):将数据和操作集成在一个单元(对象)中的能力。继承性(inheritance):从已有数据类型中派生新数据类型的能力。多态性(polymorphism):使用相同表达形式来实现不同操作的能力。在C+中,封装性是通过叫做类(class)的数据类型实现的。在面向对象的设计方法中,我们要确定需要哪些类,它们的数据成员和成员方法。我们还需要描述个各类之间如何进行交互。4.实现阶段在实现阶段,您将编写和编译程序代码,以实现在设计阶段分析得到的类和函数。最终的程序通常由几个函数组成,它们分别完成不同的任务。有些函数是主程序的一部分,其他的则是在对象上完成的操作。显然函数之间存在交互关系,从而能够利用彼此的函数功能。要使用一个函数,用户只需要知道该函数的功能和用法即可,而不必关心该函数的实现的具体细节。5.测试和调试 测试(testing)这个术语表示检测程序的正确性,即检查程序是不是完成了需要完成的工作。而调试(debugging)一词指,如果程序存在错误,如何找到并修改错误。在每写完一个函数或算法后,接下来应该验证它是否正确工作。在复杂的大型程序中,错误是一定存在的。为了提高程序的可靠性,必须在交付用户前发现并修改其中的错误。您可以使用某些方法,通常是数学方法来证明程序的正确性。然而,对于大型的程序来说,单单使用证明方法是不行的,因为在证明过程中就有可能引入错误。所以,我们必须使用测试的方法考察程序的质量。通过让程序运行一些特定的例子,即测试用例(test case)来找出程序中的问题。测试用例的组成部分包括:一组输入数据、用户操作、初始条件和期望的结果等。由于测试用例将被多次使用,所以需要正确地记录它们。通常,一个程序需要对大量的数据进行操作,虽然理论上可以将所有的输入情况在测试用例中体现,但在实际工作中显然是不现实的。例如,一个程序需要对整数进行处理,显然,为每个整数做一个测试用例是不可能的。我们可以将测试用例分类,即分为等价类(equivalence category)。所谓等价类是指:在这个分类中的所有输入值将对应相同的输出值。有比如说,有一个函数的输入为整数,并且如果该整数为非负则返回真(true),否则返回假(false)。那么我们可以做两个等价类,一个为负数集合,另一个为非负数集合。测试有两类方法,即:黑盒测试(black-box testing)和白盒测试(White-box testing)。使用黑盒测试方法时,您不需要知道算法或函数的内部实现,只需要知道程序的功能即可黑盒测试是基于输入输出的方法。它的测试用例通过创建等价类来选取。如果程序对于等价类中的某个输入的输出结果是正确的话,那么就认为对应该等价类中其他输入也会输出同样的正确结果。软件工程的目标:提高软件的质量与生产率,最终实现软件的工业化生产。 42.3.3原理:1.用分阶段的生命周期计划严格管理2.坚持进行阶段评审3.实行严格的产品控制4.采用现代化程序设计技术5.结果应能清楚地审查6.开发小组的人员应该少而精7.承认不断改进软件工程实践的必要性2.4软件工程包含的领域2.4.1软件需求:用户解决问题或达到目标所需条件或权能;系统或系统部件要满足合同、标准、规范或其它正式规定文档所需具有的条件或权能;一种反映上面所述条件或权能的文档说明。2.4.2软件设计:把许多事物和问题抽象起来,并且抽象它们不同的层次和角度。是一个过程和这个过程的结果,此过程对一个系统或组件定义架构(体系结构)、组件、接口以及其他特征。其在软件开发中起着重要的作用。2.4.3软件构建:指的是如何创建产生软件的详细步骤,包括编码、验证、单元测试、集成测试和调试。2.4.4软件测试:利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估。执行测试用例后,需要跟踪故障,以确保开发的产品适合需求。2.4.5软件维护:软件开发的工作的结果就是交付一个满足用户需求的软件产品。软件产品一旦投入应用,产品的缺陷就会逐渐的暴露出来,运行的环境会逐渐发生变化,新的用户也会不断地浮出水面。软件维护就是要针对这些问题而对软件产品进行相应的修改或演化,从而真正的修改错误,改善性能或其他特征。2.4.6软件配置管理:一项跟踪和控制软件变更的活动2.4.7软件工程管理:是软件的开发和维护的管理活动,为了达到系统的、遵守规程的和可量化的目的,它包括计划、协调、度量、监控、控制和报表。2.4.8软件工程过程:将软件工程的方法和工具综合起来,以达到合理、及时地进行计算机软件开发的目的。软件工程过程应确定方法使用的顺序、要求交付的文档资料、为保证质量和适应变化所需要的管理、软件开发各个阶段完成的任务。 1 2.4.9软件工程工具和方法 4(1)软件需求工具包括:a)Rational RequisitePro够帮助项目团队改进项目目标的沟通,增强协作开发,降低项目风险,以及在部署前提高应用程序的质量。 b)Telelogic DOORS 基于整个公司的需求管理系统,用来捕捉、链接、跟踪、分析及管理信息,以确保项目与特定的需求及标准保持一致。c)Borland CaliberRM 基于Web 和用于协作的需求定义和管理工具,可以帮助分布式的开发团队平滑协作,从而加速交付应用系统。CaliberRM 辅助团队成员沟通,减少错误和提升项目质量。(2)软件测试工具:a)Testdirector 业界第一个基于Web的测试管理系统,它可以在您公司内部或外部进行全球范围内测试的管理。通过在一个整体的应用系统中集成了测试管理的各个部分,包括需求管理,测试计划,测试执行以及错误跟踪等功能,TestDirector极大地加速了测试过程。b)ClearQuest 具有完善的用户权限控制系统,可以对整个开发团队中的全部成员实现权限管理,对于不同用户,可以根据其在开发团队中担任的角色来分配其相应的权限。c)IBM 的Rational Teststudio测试套件d)MI 的Winrunner Loadrunnere)qtp测试工具在测试工具中,除去上面所讲,目前还有自动化测试工具,其中有Web的,应用软件的,还有单元测试的. 以上具有代表性常用的软件是:Selenium, Watir, Winrunner, Loadrunner, Junit等等。而在开发软件过程中,除去选择正确的工具之外,我们还必须要有简便的合适的方法,这就是软件工程方法。软件工程方法为软件开发提供了“如何做”的技术。它包括了多方面的任务,如项目计划与估算、软件系统需求分析、数据结构、系统总体结构的设计、算法过程的设计、编码、测试以及维护等。软件工程方法有三种:启发式方法,形式化方法,原型方法。a) 启发式方法: 寻找现实世界的对象(object,物体),形成一致的抽象,封装实现细节,在可能的情况下继承,藏住秘密(信息隐藏),找出容易改变的区域,保持松散耦合,探寻通用的设计模式。启发式方法拥有很多,其中画图时一种强大的启发式方法。b) 形式化方法: 在逻辑科学中是指分析、研究思维形式结构的方法。它把各种具有不同内容的思维形式(主要是命题和推理)加以比较,找出其中各个部分相互联结的方式,如命题中包含概念彼此间的联结,推理中则是各个命题之间的联结,抽取出它们共同的形式结构;再引入表达形式结构的符号语言,用符号与符号之间的联系表达命题或推理的形式结构。c)原型化方法: 在正式编码之前,做一个原型出来给用户看看,看界面是否符合用户的要求。它的可视化强,强化沟通,降低风险,节省后期变更成本,提高项目成功率。一般来说,采用原型法后可以改进需求质量;虽然投入了较多先期的时间,但可以显著减少后期变更的时间;原型投入的人力成本代价并不大,但可以节省后期成本;对于较大型的软件来说,原型系统可以成为开发团队的蓝图;另外,原型通过充分和客户交流,还可以提高客户满意度。2.4.10软件质量:软件与明确的和隐含的定义的需求相一致的程度。具体说,软件质量是软件符合明确叙述的功能和性能需求、文档中明确描述的开发标准、以及所有专业开发的软件都应具有的隐含特征的程度。 影响软件质量的主要因素,这些因素是从管理角度对软件质量的度量。可划分为三组,分别反应用户在使用软件产品时的三种观点。正确性、健壮性、效率、完整性、可用性、风险(产品运行);可理解性、可维修性、灵活性、可测试性(产品修改);可移植性、可再用性、互运行性(产品转移)。2.5软件生命周期模型2.5.1瀑布模型定义:是一个项目开发架构,开发过程是通过设计一系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈,因此,如果有信息未被覆盖或者发现了问题,那么最好 “返回”上一个阶段并进行适当的修改,项目开发进程从一个阶段“流动”到下一个阶段,这也是瀑布模型名称的由来。包括软件工程开发、企业项目开发、产品生产以及市场销售等构造瀑布模型。特点:(1)阶段间具有顺序性和依赖性,即必须等前一阶段的工作完成之后才能开始后一阶段工作,前一阶段的输出文档就是后一阶段的输入文档(2)推迟实现的观点(3)质量保证的观点:*每个阶段都必须完成规定的文档,没有交出合格的文档就是没有完成该阶段的任务。完整、准确的合格文档不仅是软件开发时期各类人员之间互相通信的媒介,也是运行时期对软件进行维护的重要依据。*每个阶段结束前都要对所完成的文档进行评审,以便尽早发现问题,改正错误。事实上,越是早期阶段犯下的错误,暴露出来的时间越晚,排除故障改正错误所需付出的代价也越高。因此,及时审查,是保证软件质量,降低软件成本的重要措施。2.5.2快速模型快速原型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集,其本质是“快速”。快速原型是不带反馈环的,其优点是软件产品的开发基本上是按线性顺序进行的2.5.3增量模型(渐增模型)定义:融合了瀑布模型的基本成分(重复应用)和原型实现的迭代特征,该模型采用随着日程时间的进展而交错的线性序列,每一个线性序列产生软件的一个可发布的“增量”。当使用增量模型时,第1个增量往往是核心的产品,即第1个增量实现了基本的需求,但很多补充的特征还没有发布。客户对每一个增量的使用和评估都作为下一个增量发布的新特征和功能,这个过程在每一个增量发布后不断重复,直到产生了最终的完善产品。特点:其能分批地逐步向用户提交产品,能在较短的时间内向用户提交一些可完成有用的工作的产品;逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户带来的冲击。2.5.4
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 期末工作总结教师
- 监理市场工作汇报
- 《论语十二章》课件
- 《西门豹》课件教学
- 公司级安全教育培训总结课件
- 脑梗护理查房情景演练
- 事故案例安全培训总结课件
- 《蝙蝠和雷达》课件
- 公司级员工安全培训内容课件
- 公司级信息安全知识培训课件
- 2024年成都温江兴蓉西城市运营集团有限公司招聘笔试冲刺题(带答案解析)
- 2024年中国人寿养老保险股份有限公司招聘笔试参考题库含答案解析
- 投标增值服务承诺书
- 管井井点降水记录
- 污水钢筋混凝土管施工方案
- 腰椎结核的围手术期护理查房ppt培训课件
- 【直播带货的模式研究国内外文献综述4300字(论文)】
- 屋面防水维修工程施工方案
- 林权纠纷调处专题讲座课件
- 给排水管类取样送检指南
- 质子泵抑制剂临床使用管理办法
评论
0/150
提交评论