Fallof2019Lecturer:SongYuieyusongzzu.edu主要内容第1节软件开发环境的概述第2节软件开发工具第3节常用的软件开发环境第4节软件开发工具与环境的发展第1章软件开发工具与环境概述第1节软件开发环境的概述1.1软件开发环境的概念1.2研制软件开发环境的意义1.3软件开发环境的主要成分1.4软件开发环境数据库1.5软件开发环境具备的功能1.6软件开发环境与软件开发工具的关系1.7软件开发环境的特性1.8软件开发环境的结构第1节软件开发环境的概述1.1软件开发环境的概念软件开发环境(SoftwareDevelopmentEnvironment,SDE)是指在基本硬件和宿主软件的基础上,为支持系统软件和应用软件的工程化开发和维护而使用的一组软件,简称SDE。它由软件工具和环境集成机制构成,前者用以支持软件开发的相关过程、活动和任务,后者为工具集成和软件的开发、维护及管理提供统一的支持。SDE在欧洲又叫集成式项目支援环境(IntegratedProjectSupportEnvironment,IPSE)。第1节软件开发环境的概述1.2研制软件开发环境的意义(1/2)目前计算机的应用范围和领域越来越广泛,大量的应用程序有上万行,甚至几十万行源程序代码,开发如此复杂的应用系统需要有多人通力协作,大型程序的组装、调试、修改等工作都需要有计算机辅助才能顺利完成。另外,与程序一起还有大量的文档,如此众多的信息全部都由人直接管理已不胜负担,一定要有计算机参与管理。早期计算机工作者为提高计算机项目的开发效率,研制了许多软件工具,如编辑工具、调试工具等,但在具体使用这些独立工具时发现有许多不足,特别是使用一个工具后,为使用另一个工具必须从前一工具退出,然后再进入另一工具,在这种使用方式中工具之间没有任何联系。事实上,软件开发过程的各阶段是紧密联系的,软件开发环境就是顺应这种需要而产生。第1节软件开发环境的概述2.研制软件开发环境的意义(2/2)在一个支持传统软件开发方法的软件开发环境中,它集成了各种软件文档的设计和分析工具,如结构化分析工具、结构化设计工具、结构化编辑工具、程序调试工具以及各种分析测试工具等。开发环境将所有工具有机地联系起来,实现各工具有统一的接口和内部格式,前阶段工具产生的信息能被后继阶段的工具利用。特别是开发环境中的软件工具提供的统一的友好的用户界面,非常便于使用者从使用一个工具转换到使用另一个工具。使用软件开发环境开发软件能大大提高软件的生产率,所以现在的软件生产商已开始以开发环境形式推出他们的软件产品。第1节软件开发环境的概述1.3软件开发环境的主要成分软件开发环境的主要组成成分是软件工具。人机界面是软件开发环境与用户之间的一个统一的交互式对话系统,它是软件开发环境的重要质量标志。存储各种软件工具加工所产生的软件产品或半成品(如源代码、测试数据和各种文档资料等)的软件环境数据库是软件开发环境的核心。工具间的联系和相互理解都是通过存储在信息库中的共享数据得以实现的。第1节软件开发环境的概述1.4软件开发环境数据库(SDE-DB)(1/2)软件开发环境数据库是面向软件工作者的知识型信息数据库,其数据对象是多元化、带有智能性质的。软件开发数据库用来支撑各种软件工具,尤其是自动设计工具、编译程序等的主动或被动的工作。较初级的SDE数据库一般包含通用子程序库、可重组的程序加工信息库、模块描述与接口信息库、软件测试与纠错依据信息库等;较完整的SDE数据库还应包括可行性与需求信息档案、阶段设计详细档案、测试驱动数据库、软件维护档案等。第1节软件开发环境的概述1.4软件开发环境数据库(SDE-DB)(2/2)更进一步的要求是面向软件规划到实现、维护全过程的自动进行,这要求SDE数据库系统是具有智能的,其中比较基本的智能结果是软件编码的自动实现和优化、软件工程项目的多方面不同角度的自我分析与总结。这种智能结果还应主动地被重新改造、学习,以丰富SDE数据库的知识、信息和软件积累。这时候,软件开发环境在软件工程人员的恰当的外部控制或帮助下逐步向高度智能与自动化迈进。第1节软件开发环境的概述1.5软件开发环境具备的功能较完善的软件开发环境通常具有如下功能:(1)软件开发的一致性及完整性维护;(2)配置管理及版本控制;(3)数据的多种表示形式及其在不同形式之间自动转换;(4)信息的自动检索及更新;(5)项目控制和管理;(6)对方法学的支持。第1节软件开发环境的概述1.6软件开发环境与软件开发工具的关系软件开发环境的主要组成成分是软件工具。不仅需要有众多的工具来辅助软件的开发,还需有一个统一的界面。软件开发环境基本组成有三:交互系统、工具集和环境数据库。软件开发工具在软件开发环境中以综合、一致和整体连贯的形态来支持软件的开发。第1节软件开发环境的概述1.7软件开发环境的特性可用性:用户友好性、易学、对项目工作人员的实际支持等。自动化程度公共性:公共性是指覆盖各种类型用户、各种软件开发活动。集成化程度适应性:适应性是指符合用户要求的程度。价值:得益和成本的比率。第1节软件开发环境的概述1.8软件开发环境的结构软件开发环境具有层次式的结构,分四层:宿主层:基本宿主硬件和软件。核心层:一般包括工具组、环境数据库和会话系统。基本层:一般包括一组工具,如编译工具、编辑程序、调试程序、连接程序和装配程序等。应用层:以特定的基本层为基础,包括一些补充工具以更好地支援应用软件的研制。第2节软件开发工具2.1软件开发工具的由来2.2软件开发工具的概念2.3软件开发工具的功能与性能2.4软件开发工具的类别2.5软件开发工具的研究与应用2.1软件开发工具的由来软件开发工具的范围:在高级程序设计语言(第三代语言)的基础上,为提高软件开发的质量和效率,从规则、分析、设计、测试、成文和管理各方面,对软件开发者提供各种不同程度的帮助的一类新型的软件。2.1软件开发工具的由来软件发展的四个阶段:机器语言阶段汇编语言阶段高级语言阶段第四代语言阶段(非过程化语言):数据库开发语言、C++2.1软件开发工具的由来1.开发工具的出现:它是在高级程序设计语言(第三代语言)之后,软件技术进一步发展的产物目的是在人们开发软件中给人们各种不同方面、不同程度的支持或帮助它支持软件开发全过程,而不仅限于编码或其他特定工作阶段2.1软件开发工具的由来2.通用软件的不足:许多工作是通用软件无法完成的:语法错误、变量错误用通用软件完成的工作,只表现其表面形式,而不能反映其逻辑内涵用通用软件来帮助人们完成软件开发工作,常难于保持一致性2.1软件开发工具的由来3.软件开发发展的四个阶段:用机器语言开发软件用汇编语言开发软件,由汇编程序完成转换用高级语言开发软件,由编译程序完成转换在各种软件开发工具帮助下完成,由编译程序完成转换2.2软件开发工具的概念1.什么是软件开发工具:软件开发工具是一种软件,它是辅助和支援其它软件研制和维护的工具,研制软件开发工具的主要目的是为了提高软件生产率和改进软件的质量软件开发工具的特征:软件开发工具应该是用高级语言编写的,这样可以提高可移植性采用增量开发方式,这样软件工具就具有可扩充性充分重视用户界面的设计2.2软件开发工具的概念软件开发工具的研制应利用成熟的技术和原型化方法快速生成,以降低工具的开发成本总之,软件开发工具具有使用户易于操作、功能强大、覆盖面广、可靠性高、可扩充等优点2.2软件开发工具的概念3.软件开发工具发展的表现:自动化程度的提高这一阶段的工作明确地把需求分析包括进了软件开发工具工作的范围之内,从而使软件开发过程进一步向用户方面延伸2.2软件开发工具的概念把软件开发工作延伸到项目及版本管理,从而超出了一次编程的局限,而扩展到了作为一个不断发展的客体生长完美的全过程软件工具的广泛使用,积累了经验,找出了问题,促进了软件开发理论和方法的发展,反过来又使软件开发工具进一步发展完善了2.3软件开发工具的功能与性能1.软件开发的过程:软件开发工作的第一阶段是初始要求的提出。软件工作者的任务是根据这种初始要求形成严格的、明确的、可供实际开发使用的功能说明书2.3软件开发工具的功能与性能总体设计:它的工作是根据软件功能说明书的要求,完成软件的总体设计,这包括整个软件的结构设计、公用的数据文件或数据库的设计、各部分的连接方式及几个主要内容。总体设计的成果是系统的总体设计文件及各个模块的设计任务书实现阶段:包括程序的编写与文档的编写测试或调试阶段:其中包括两个部分,模块的调试与整个软件的联调2.3软件开发工具的功能与性能2.软件开发工具的功能:认识与描述客观系统:这主要用在软件开发工具的第一个阶段----需求分析阶段。由于需求分析在软件开发中的地位越来越重要,人们迫切需要在明确要求、形成软件功能说明书方面得到工具的支持2.3软件开发工具的功能与性能存储及管理开发过程中的信息:在软件开发的各阶段都要产生与使用许多信息,如需求分析阶段要收集大量客观系统的信息,在此基础上形成系统功能说明书。当项目规模变大时,这些信息量就会大大增加;而项目持续时间较长时,信息的一致性就成为十分困难的问题2.3软件开发工具的功能与性能代码的编写或生成:在整个软件开发工作中,程序编写工作占了较多的人力物力和时间,提高代码的编制速度和效率,显然是改进软件工作的一个重要方面。这方面的改进主要是从代码的自动生成和软件模块重用两个方面来考虑2.3软件开发工具的功能与性能文档的编制或生成:文档编写是软件开发中十分重要的工作,不但费时费力,而且也很难保持一致。软件开发工具可各种文字处理软件的基础上,可自动生成相关的文档软件项目的管理:这一功能是为软件项目管理人员提供支持的。项目管理包括进度管理、资源管理与费用管理、质量管理等内容2.3软件开发工具的功能与性能3.软件开发工具的性能:所谓软件的功能是指软件能做什么,而性能则是指事情能做到什么程度。即功能是定性说明能不能做的问题,说明软件开发工具能提供哪些帮助;性能是定量地说明软件开发工具能做到何种程度2.3软件开发工具的功能与性能表达能力或描述能力:因为软件项目的情况千变万化,软件开发工具要能适应软件项目的种种不同情况,提供有效的、实际的帮助。这即是描述能力或表达能力保持信息一致性的能力:软件开发中一致性的检验与控制是十分关键的,包括:各部分之间的一致,代码与文档的一致,功能与结构一致等2.3软件开发工具的功能与性能使用的方便程度:软件开发工具应当尽量方便用户,不能因使用工具而增加麻烦。软件的开发应当与用户有充分的交流,其中涉及的表达方法,人机界面应尽量通俗易懂,即易于使用2.3软件开发工具的功能与性能工具的可靠程度:软件开发工具应有足够的可靠性,即在各种干扰条件下仍能保持正常工作,而不致丢失或弄错信息对硬件和软件环境的要求:软件开发工具对软件开发环境的要求不应超出应用软件环境的要求,有时甚至还应低于应用软件对环境的要求2.4软件开发工具的类别1.按开发工作阶段分:设计工具是指在实现阶段对人们提供帮助的工具分析工具是指用于支持需求分析的工具计划工具则从更宏观的角度去看待软件开发2.4软件开发工具的类别2.按集成程度划分为非集成化开发工具和集成化的开发工具3.按与硬件、软件的关系划分为依赖于特定的计算机或特定的软件。另一类软件开发工具则是独立于硬件与其他软件的2.5软件开发工具的研究与应用应用软件开发的队伍成员有两种:一种是计算机专业出身技术人员,另一种人员来源于各个应用领域,它们出身于计算机以外的各种专业领域软件开发工具的目的是从信息管理与信息处理方面,给予软件开发人员帮助与支持2.5软件开发工具的研究与应用软件开发过程中涉及的四类信息:有关系统环境、现状及需求的信息。由用户提出,分析员采集,经他的理解,成为需求分析和设计的依据有关软件的功能设计和物理设计的各种信息。体