您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 《软件工程》学习辅导
1《软件工程》学习辅导第一章绪论第一节软件工程的产生软件:计算机程序及其说明程序的各种文档。程序是计算任务的处理对象和处理规则的描述。软件的特点:1是一种逻辑产品,与物质产品有很大的区别。2软件产品的生产主要是研制,生产成本主要在开发和研制,开发研制完成后,通过复制就产生了大量软件产品。3软件产品不会用坏,不存在磨损,消耗。4生产主要是脑力劳动,还末完全摆脱手工开发方式,大部分产品是定做的。5开发软件的费用不断增加,致使生产成本相当昂贵按软件的功能划分-系统软件:能与计算机硬件紧密配合在一起,使计算机系统各个部件、相关的软件和数据协调、高效率地工作的软件。如操作系统、数据库管理系统、设备驱动程序以及通信处理程序等。系统软件是计算机系统中必不可少的一个组成部分。应用软件:是在特定的领域内开发,为特定目的服务的一类软件。如,CAD-CAM计算机辅助制造-CAI计算机辅助教学,专家系统,模式识别,刹车系统支撑软件:是协助用户开发软件的工具性软件,其中包括帮助程序人员开发软件产品的工具,也包括帮助管理人员控制开发的进程的工具。按规模划分:1、微型--只有一个人,甚至是半时,在几天之内完成的软件。写出的程序不到500行语句。2、小型--一个人半年之内完成的2千行以内的程序。例如,数值计算问题或是数据处理问题就是这种规模的课题。这种程序通常没有与其他程序的接口。如,有求伯君开发最初的WPS,单独完成BASIC的比尔.盖茨。3、中型--5人以内在一年多时间里完成的5千到5万行的程序。这种课题开始出现了软件人员之间,软件人员与用户之间的联系、协调和配合关系的问题。4、大型--5人至10人在两年多的时间里完成5万行到10万行的程序。例如编译程序、小型分时系统、应用软件包、实时控制系统等很可能都是这种软件。5、甚大型-100人至1000人参加6、极大型--2000-5000人参加,如,微软的windows2000项目就包含了近3000名工程师,他们被分成几百个小的团队。按开发分---软件产品和软件项目软件产品---指的是不局限于特定领域的、可以被广大用户直接使用的软件系统。如微软的Windows,Office等。这类系统的特点是技术含量高,开发时要考到各种不同的用户需求;软件项目--也称定制软件,是受某个特定客户(或少数客户)的委托,由一个或多个软2件开发机构在合同的约如我们常说的管理信息系统(MIS)和电子商务系统。这类软件的特点是领域知识所占的比重较大,相对技术而言工程性更强。例如,军用防空指挥系统、卫星控制系统等均为这类软件。针对这两种不同类型的软件,应该有不同的软件开发方法去指导项目开发过程。软件项目的开发,目前比较成熟的软件开发方法有软件成熟度模型(CMM)。这种软件开发模型试图将整个软件开发过程规范化和量化,直到可以对软件开发过程进行定量的控制和优化。软件产品的开发,像微软公司积累了许多成功的经验。软件生产的发展:1程序设计时代:这个阶段生产方式是个体劳动,生产工具是机器语言,汇编语言。(1946-1956年)2程序系统时代:这个阶段生产方式是小集团合作生产,生产工具是高级语言,开发方法仍依靠个人技巧,但开始提出结构化方法。(1956-1968年)3软件工程时代:这个阶段生产方式是工程化的生产,使用数据库,开发工具,开发环境,网络,分布式面向对象技术来开发软件。(1968年至今)软件危机:软件开发技术的进步未能满足发展的要求。在软件开发中遇到的问题找不到解决的办法,问题积累起来,形态尖锐的矛盾,导致了软件危机。软件危机的表现:1经费预算经常突破,完成时间一再拖延。2开发的软件不能满足用户要求。3开发的软件可维护性差。4开发的软件可靠性差。软件危机产生原因:1软件规模越来越大,结构越来越复杂。2软件开发管理困难而复杂。3软件开发费用不断增加。4软件开发技术落后。5生产方式落后,仍采用手工方式。6开发工具落后,生产率提高缓慢。软件工程:用科学的知识和技术原理来定义,开发,维护软件的一门学科。用工程科学的观点进行费用估算,制定进度,制定计划和方案。用管理科学的方法和原理进行生产的管理。用数学的方法建立软件开发中的各种模型和算法。那么为达到软件优质高产这个目标,从技术到管理做了大量的努力,从而逐渐已形成了软件工程学这一新学科。它包含以下主要内容:1、软件开发方法:软件工程的方法提供了建造软件在技术上需要如何做。方法涵盖了一系列的任务:需求分析、设计、编程、测试和维护。是在60年代后期才逐步形成了一种软件开发方法,在不同的软件开发阶段对应有不3同的方法,例如在软件的设计阶段有结构化分析与设计方法,在软件测试阶段有黑盒与白盒测试技术,等等。象目前又有一种更新的技术面向对象的程序设计方法。在这一方法中,数据和数据的操作是被封闭在一个个称为对象(Object)的统一体中,对象之间则是通过消息(message)进行相互联系的。从而使由软件所描述的系统与客观世界的系统在结构上十分相似,不仅提高了软件的可修改性与可维护性,同时也提高了软件的可重用性,那么这些都是工程多年来所追求的目标。从结构程序设计到面向对象程序设计,是程序设计方法的又一次飞跃。2、软件工具:所谓工具,在这里泛指是开发一切帮助开发软件的软件。为了提高软件设计的质量和生产效率,现已经发展了许多的帮助开发和维护软件的软件。例如,我们要用某种语言来开发一个应用软件,这就要涉及到编辑程序、编译程序、连接程序等,另外在软件测试阶段还要用到测试数据产生器、排错程序、跟踪程序、静态分析工具和覆盖监视工具等。也就是说在不同的时期要用到不同的软件开发工具。目前,软件工具发展迅速,许多用于软件分析和设计的工具正在建立,其目标就是要实现软件生产自动化。3、软件工程环境:软件方法和工具是软件开发的两大支柱,她们之间密切相关。软件方法提出了明确的工作步骤和标准的文档格式,这是设计软件工具的基础,而软件工具的实现又将促进软件方法的推广和发展。环境一词,对不同用户有着不同的含义。对最终用户(enduser)而言,环境就是他们运行程序所使用的计算机系统。这类用户对环境的要求,主要是运行可靠,操作方便,容易学习和使用。而对于软件开发人员来说,则就不同了,可以说环境就是他们进行软件开发活动的舞台。(例如,Algo-60,或者资料管理系统(DbaseIIDbaseIII),例如界面只能采用菜单来完成各种功能)象现在生产数据库管理的软件的环境有:大型数据库软件Sybase,还有能帮助进行程序设计的PB软件)4、软件工程管理学:大家知道,对于一个企业来说,如果只有先进的设备和技术,而没有完善的管理,是不可能获得应有的经济效益的(例如海尔的海尔文化就是企业管理的象征),(例如微软企业文化宗旨的一句话)软件生产也是一样的,如果管理不善,是不可能高质量、按时完成任务的。软件工程管理就是对软件工程生存期内的各阶段的活动进行管理。软件工程管理的目的是为了能按预期的时间和费用,成功地完成软件的开发和维护任务。软件工程管理学的内容包括软件费用管理、人员组织、工程计划管理、软件配置管理等各项方面的内容。显然,软件工程管理也可借助计算机来实现。供经理人员估算成本、指定进度、生成报告等管理工具都已经在许多公司使用了。一个理想的软件工程环境,应该同时具备支持开发和支持管理两个方面的工具。以上简介了软件工程学的主要组成成分--软件工程方法学、软件工程环境以及软件工程管理的基本内容台和作用。它们即包括计算机科学家的研究成果,也概括了广大软件工作者的时间经验。还必须指出,软件开发技术可区分为形式化方法与非形式化方法两大分4支。前者以形式化的程序变化和严整为主要内容,目的在于达到程序设计的自动化,多用于计算机应用人员。本课程主要讨论的是工程化的软件开发技术。软件工程目标:付出较低开发成本;达到要求的功能;取得较好的性能;开发的软件易于移植;只需较低的维护费用;能按时完成开发任务,及时交付使用;开发的软件可靠性高。软件工程内容:研究内容包括开发技术和开发管理两个方面。开发技术主要研究:软件开发方法,开发过程,开发工具和环境。开发管理主要研究:软件管理学,软件经济学,软件心理学。软件工程需要解决的问题:软件的费用,可靠性,可维护性,软件生产率和软件的重用。第二节软件工程过程和软件生存周期软件工程:规定了获取,供应,开发,操作和维护软件时,要实施的过程,活动和任务。目的是为各种人员提供公共的框架,以便用相同的语言进行交流。包括:获取过程,供应过程,开发过程,操作过程,维护过程,管理过程,支持过程。软件生存周期:一个软件从提出开发要求开始直到该软件报废为止的整个时期。包括:可行性分析和项目开发计划,需求分析,概要设计,详细设计,编码,测试,维护。第三节软件生存周期模型,方法和工具生存周期模型:描述软件开发过程中各种活动如何执行的模型。对软件开发提供强有力的支持,为开发过程中的活动提供统一的政策保证,为参与开发的人员提供帮助和指导,是软件生存周期模型化技术的基础,也是建立软件开发环境的核心。生存周期模型作用:确立了软件开发中各阶段的次序限制,活动准则,所要遵守的规定和限制,便于各种活动的协调,人员之间的有效通信,有利于活动重用和活动管理。生存周期模型准则:模型能表示各种活动的实际工作方式,能随情况变化而演化能表示各种活动间同步和制约关系,能表示活动的动态特性。容易为开发人员理解,能适应不同软件项目,具有较强灵活性,能支持软件开发环境的建立。目前有:1瀑布模型:将软件生存周期中各活动规定为依线性顺序连接的若干阶段。包括可行性分析,项目开发计划,需求分析,概要设计,详细设计,编码,测试和维护。它是一种理想的线性开发模式,缺乏灵活,特别是无法解决软件需求不明确的问题。适合于需求不明确,设计方案有一定风险的软件项目。2增量模型:软件在模型中是逐渐开发出来的,开发一部分,展示一部分,能及早发现问题。或者先开发一原型软件,完成主要功能,然后逐步完善,最终获得满意的软件产品。3螺旋模型:将瀑布模型与增量模型结合起来,加入风险分析,弥补了这两种模型的不足。开发分四步:制定计划,风险分析,开发实施,用户评估。4喷泉模型:以用户需求为动力,以对象为驱运动模型,适合于面向对象开发方法,使开发过程具有迭代性和无间隙性。迭代性:系统有些部分常常重复工作多次,相关功能在每次迭代中随之加入演化的系5统。无间隙:在分析,设计,实现等开发活动之间不存在明显边界。5基于知识的模型:瀑布模型与专家模型的结合。开发各阶段都有利用相应专家系统来辅助设计,使维护在系统需求一级进行。6变换模型:适合于形式化开发方法的模型。软件开发方法:使用早已定义好的技术集及符号表示习惯来组织软件生产的过程。软件开发开发的目标:通过使用成功的软件开发方法,在规定的投资和时间内,开发出符合用户需求的高质量的软件。软件开发方法是克服软件危机的重要方面之一,对软件工程及软件包产业的发展起了不可估量的作用。已使用的成功方法有:1、结构化方法:一种面向数据流的开发方法,适合数据处理领域。指导指导思想是自顶向下,逐步求精。用数据流图建立系统功能模型,完成需求分析工作。用软件结构图建立系统物理模型,实现概要设计。最后将每个模块的功能用相应标准控制结构表示出来,从而实现详细设计。2、JACKSON方法:一种面向数据结构的开发方法,适合小规模项目。首先描述问题的输入,输出数据结构,分析其对应性,然后推出相应程序结构,从而给出问题的软件过程描述。当输入与输出数据结构无对应关系时,难于应用此方法,JSD(一完整的系统开发方法)对JSP进行了扩充3、维也纳开发方法(VDM):一种形式化开发方法,软件的需求用严格的形式语言描述,然后把模型逐步变换成目标系统。4、面向对象的开发方法:基本出发点是尽可能按人类认识世界的方法和思维方式来分析和解决问题。以对象作为最基本的元素,客观世界中具体的事物,事件,概念和规则都有可看成对象,它也是分析问题,解决问题的核心。开发方法包括面向对象分析,面向对象设计,面向对象实现。主要有BOOCH方法,Coad方
本文标题:《软件工程》学习辅导
链接地址:https://www.777doc.com/doc-166386 .html