1.2.2软件工程的概念,特点和目标
#1.软件工程的概念 软件工程的基本思想主要是强调在软件开发过程中利用工程化标准准则,技术,方法和管理及文档与应用的重要性. 1968年,FritzBauer在NATO会议上将软件工程定义为:建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法。 1983年,IEEE在《IEEE软件工程标准术语》中的定义是:软件工程是开发、运行、维护和修复软件的系统方法,其中**“软件”的定义为:计算机程序、方法、规则、相关的文档资料以及在计事机上运行时所必需的数据。1993 年,又对定义进一步改进综合为:将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中。1998 年Yogesh Deshpande和Steve Hansen提出了Web 工程(简称WebE)的概念**,是指按计划进行的网络综合性研发工作,具体在第10章介绍。 中国国家标准GB/T11457- 1995《软件 工程术语》的定义:软件工程是软件开发、运行、维护和引退的系统方法,目的就是为软件全生存周期活动提供工程化的手段,从而提高软件的质量、降低成本和缩短开发周期等。
《计算机科学技术百科全书》中对软件工程的定义是:应用计算机科学、数学及管理科学等原理,开发软件的过程。软件工程借鉴传统工程的原则、力法,以提高质量、降低成本。其中,计算机科学、数学用于构建模型与算法,工程科学用于制定规范、软件工程概念 设计范型(Paradigm)、评估成本及确定标准,管理科学用于计划、资源、质量、成本等管理。
#2.软件工程的特点和目标
软件工程是软件工程化的思想规范、过程技米、环境和工具的集成,是将具体的技术和方法结合形成的个完整体系。 软件工程是在软件开发中采用工 程化的原理和方法,采用一系列科学的、现代化的方法技术来开发软件。其工程化的思想贯穿到软件开发和维护的全过程,主要由软件工程师负责具体负责工作。 软件工程是计算机科学与技术学科中的一个重要分支,是一门指导软件系统开发、运行、维护和管理技术的工程学科。不仅具有一般工程学科的共性,还具有智能性抽象性、复杂性和更新性等特性.软件工程学科的基本特点是系统性、工程化、综合性和学科交叉性。软件工程学科的主要特点是实践性和发展性,软件工程的问题来源于实践并应用于实践,最终研发出高质量、高效、低成本的软件产品。其具体特点体现为三多”一是名学科不仅包含有关选题,还涉及计算机科学、工程科学、管理科学、数学等多个学科:二是多目标,不仅关心项目产品及其功能.还要注重质量、成本、进度性能、可靠性、安全性、通用性、可维护性有效性和界面等E是多阶段,软件开发不只是编程,而是由可行性研究、计划立项需求分析、总体设计、详细设计、编程、测试、运行、维护等阶段构成完整过程。软件工程的目的是在规定的时间和开发经费内,开发出满足用户需求的、高质量的软件产品。其目标是最终研发出高质量、高效、低成本的软件产品,实现软件研发与维护的优质、高效和自动化。 #1.2.3 软件工程学及其内容和方法
1.软件工程学概述
软件工程学是一个专门研究利用工程化的技术方法,构建、研发和维护有效的、实用的和高质量的软件的学科。主要涉及软件系统的分析与设计方法、编程与实现技术、数据库及网络技术、软件开发工具、系统平台、标准、设计模式等方面。 软件工程学的主要内容包括软件开发技术和软件工程管理两个方面。软件开发技术主要包括软件工程方法及过程、软件工具和软件开发环境.软件工程管理学主要包括软件工程经济学和软件管理学(软件项目管理等)。 软件工程的研究范围很厂,不仅涵盖软件系统的开发方法和技术、维护与管理技术,还包括软件工具环境及软件开发的规范。对软件工程学科的构成和内容尚未统一, 根据软件工程研究的对象和任务,软件工程学科主要包括软件工程原理、软件工程过程、软件工程技术软件工程方法、软件工程模型、软件工程管理、软件工程度量、软件工程环境、软件工程应用等基本内容。 2.常用的软件工程方法 在软件研发计划、开发、运行和维护过程中,所使用的一整套技术方法称为方法学(Methodology)或范型(Paradigm)。软件工程方法学是研发、管理与维护软件的系统方法,确定软件开发阶段,规定各阶段的目标、任务、技术、方法、产品、验收等步骤和完成准则。 软件工程三要素包括软件工程方法、软件工具和软件王程过程。 (1)软件工程方法:包括软件开发“如何做”的技术和管理准则及文档等技术方法。 (2)软件工具:为软件工程方法的运用,提供自动或半自动的软件支撑工具的集成环境,便于提高工作效率。 (3)软件工程过程:主要完成任务的工作阶段、工…作内容、产品、验收的步骤和完成准则。有时也将这一-要素确定为“组织管理”,实际上改为“过程与管理”更合适。 常用的软件工程方法,通常主要分为7种类型。 (1)而向功能方法。面向功能的软件开发方法也称为结构化方法,主要采用结构化技术,包括结构化分析、结构化设计和结构化实现,按照软件的开发过程、结构和顺序完成开发任务。先用结构化分析(Structured Analysis,SA)对软件进行需求分析,再用结构化设计(StructuredDesign,SD)方法进行软件设计,最后是结构化编程(Structured Programming,SP)实现。此方法不仅开发步骤明确,分析、设计、实现任务连贯、相辅相成,给出规范和变换型及事务Com型两类典型的软件结构,使软件开发效率得到极大提高,从而深受开发人员青睐,现在仍用于自动化及过程控制等应用。 (2)面向数据方法。面向数据(结构)的软件开发方法也称为Jackson方法,是M.A.Jackson在1975年提出的,从目标系统输人输出数据的结构,导出程序框果结构,再补充其他细节,得到完整的企事业机构实际业务数据处理程序的结构图。其方法也可与其他方法结合,用于模块的详细设计和数据处理等。对输人输出数据结构明确的中小型系统很有效,如商用文件表格处理等。 (3)面向对象方法(Object Oriented Method,O0M)是种将 面向对象的思想应用于软件开发过程,指导研发活动的系统方法。将“对象”作为数据和对数据的操作相对应的软件构件,用对象分解取代了传统方法的功能分解。该方法将所有对象都划分为类,将若干个相关的类组织成具有层次结构的系统,下层的子类继承上层的父类所具有的数据和操作,而对象之间通过发送消息相互联系。 20世纪80年代推出的0OM,直观、实用、高效被誉为20世纪90年代软件的主要技术之一。其基本思想是:对问题领域进行自然分割,以更接近人类通常思维的方式建立问题领域的模型,以便对客观的信息实体进行结构和行为的模拟,从而使设计的软件更直接地表现问题的求解过程。00M以对象作为最基本的元素,是分析和解决问题的核心。00M的要素是对象、类、继承以及消息通信。可概括为
面向对象=对象十类十继承十消息通信
实际上,所有按照这样4个概念设计和实现的软件系统.都可以认为是面向对象的。OOM由O0A(面向对象的分析) .00D(面向对象的设计)和00P(面向对象西向对象方法的程序设计)3部分组成。00M是多次反复、迭代开发的过程。
(4)面向问题方法,也称为问题分析法(Problem Analysis Method, PAM)是20世纪80年代末由日立公司提出的,是在Yourdon方法Jackson方法和自底向上的软件开发方法基础上取长避短改进而成。其基本思想是以输人输出数据结构指导系统的问题分解,经过系统分析逐步综合。其步骤是:从输人输出数据结构导出基本处理框;分析这些处理框之间的先后关系;按先后关系逐步综合处理框,直到画出整个系统的问题分析图。此方法成功率较高,曾在日本较为流行,在输人输出数据结构与整个系统之间仍然存在着难以解决的问题,只适用于中小型系统问题。 (5)面向方面的开发方法。面向方面的程序设计(Aspect Oriented Programming,AOP)是继面向对象技术之后新的软件开发的研究方向。随着软件规模和复杂性的不断增加,各组件之间的相互影响越来越复杂,限制了软件的重用性和适应性,并使验证系统的逻辑正确性更困难。传统的软件开发方法已无法从根本上解决由于提高系统复杂度带来的代码混乱问题。面向方面的系统是面向对象系统的扩展,在现有的AOP实现技术中,可通过创建Aspeet库或专用Aspect语言实现面向方面的编程。
(6)基于构件的开发方法。基于构件的开发(Component Based Development, CBD)或基于构件的软件工程(Component Based Software Engineering, CBSE)方法是软件开发新范型。在选定的构件模型支持下,利用复用技术可以优质高效地构建应用软件的过程。以分布式对象为基础的构件实现技术日趋成熟,CBD已成为目前软件复用研发的研究热点,被认为是最具潜力的软件工程发展方向之一。 软件复用(SoftwareReuse)或软件重用是指利用已存的软件构件,构建新软件的过程。可有效提高软件生产率和质量并降低成本。软件复用方式包括4种。 ①复用分析-在原有的需求分析结果的基础上和已有的构建(模块),通过进一步深人分析、比对、查找异同及特性等。 ②复用结构-复用系统模块的功能结构或数据结构等,进行改进提高。 ③复用设计-由于复用受环境影响小,设计结果比源程序的抽象级别高,因此可通过从现有系统中提取全部或不同粒度的设计构件,或独立于具体应用开发设计构件。 ④复用程序-包括目标代码和源代码复用,可通过链接(Link)、绑定(Binding)、包含(Include)等功能,支持对象链接及嵌人(OLE)技术实现。 (7)可视化方法。在可视开发工具提供的图形用户界面上,通过操作界面元素,如菜单、按钮、对话框、编辑框、单选框、复选框、列表框和滚动条等,由可视开发工具即可自动生成应用软件,这类应用软件和工作方式是事件驱动。对每一事件,由系统产生相应的消息,再传递给相应的消息响应函数。这些消息响应函数是由可视开发工具在生成软件时自动装人的。 3.软件研发工具 软件工具(Software Tools)是指支持软件的开发、维护、管理而专门研发的程序系统。目的是提高软件开发的质量和效率.降低软件开发、维护和管理的成本,支持特定的软件工程方法,减少手工方式管理的负担。软件工具通常由工具、工具接口和工具用户接口3部分构成。工具通过工具接口与其他工具、操作系统以及通信接口、环境信息库接口等进行相连交互。工欲善其事,必先利其器。软件工具和软件开发方法密切相关,是软件开发的两大支柱,因此软件工具对于软件的研发、维护和管理都很重要。 软件工具种类繁多,可组成“工具箱”或“集成工具”,如编辑、编译、正文格式处理,静态分析、动态跟踪、需求分析、设计分析、测试、模拟和图形交互等。按照应用阶段分为计划工具、分析工具、设计工具、测试工具等,按照功能分为分析设计、Web开发、界面开发、项目管理、软件配置、质量保证、软件维护等。 4.软件开发环境 1985年在第八届国际软件工程会议上,对软件开发环境(SoftwareDevelopmentEnvironment)定义为:“软件开发环境是相关的一组软件工具集合,支持一定的软件开发方法或按照一定的软件开发模型组织而成。 软件开发环境应具备的特点 (1)适应性 (2)坚定性 (3)紧密性 (4)可移植性 常用软件工程环境具有三级结构 (1)核心级 (2)基本级 (3)应用级 5. 软件项目管理概述 软件项目管理学包括软件管理学、软件经济学和软件度量学。其目的是低成本、高效、高质量地研发出用户满意的软件产品:主要任务是有效地组织人员,采用有效的技术、方法和工具“又好又快”地完成预定的软件项目。第8章单独介绍。美国软件项目管理学会,从8个方面描述了项目管理知识体系的应用,包括范围管理、时间管理、成本管理、质量管理、人力资源管理、交流管理、风险管理、采购与分包管理。 软件项目管理的内容,主要包括4个方面。 (1)组织人员。软件开发需要团队合作,应有良好的组织、周密的管理,各类人员优化组合、协同配合、共同完成工程任务,这是软件开发项目成功的重要保证。 (2)计划管理:在软件开发前进行可行性研究立项后,还需要确定软件工程计划并进行落实。在计划实施过程中,必要时可根据需要对工程进度适当调整。开发结束后以软件开发总结报告的形式进行总结,积累经验并备用,以便为以后制订出更合适的软件开发 (3)费用管理 (4)软件配置管理
|