第十五章软件工程环境第一节软件开发环境第二节软件工具软件开发环境是指在计算机的基本软件的基础上,为了支持软件的开发而提供的一组工具软件系统。第一节软件开发环境记事本EmacsVim/Notepad++SublimeDWVSEclipse第一节软件开发环境软件开发环境的特征一组相关工具的组合这些相关工具是按一定的开发方法或处理模型组织起来的这些相关工具支持整个软件生存期的各个阶段或部分阶段第一节软件开发环境对软件开发环境的要求第一节软件开发环境软件开发环境的目的在于提高软件开发的生产率和软件产品的质量。理想的软件开发环境是能支持整个软件生存周期的开发活动,并能支持各种处理模型的软件方法学,同时实现这些开发方法的自动化。通常认为软件开发环境的基本要求有如下5点。•软件开发环境应是高度集成的一体化系统•应该支持软件生存周期各个阶段的活动,从需求分析、系统设计、编码和调试、测试验收到维护等各个阶段的工作;•应该支持软件生存期各个阶段的管理和开发两方面的工作;•应协调一致的支持各个阶段和各个方面的工作,具有统一形式的内部数据表示;•整个系统具有一致的用户接口和统一的文档报表生成系统。第一节软件开发环境•软件开发环境应具有高度的通用性•能适应最常用的几种语言;•能适应和支持不同的开发方法;•能适应不同的计算机硬件及其系统软件,对这些方面应具有最小的依赖性(尤其是硬件);•能适应开发不同类型的软件;•能适应并考虑到不同用户的需要(如程序员、系统分析员、项目经理、质量保证人员、初学者与熟练人员)。第一节软件开发环境•软件开发环境应易于定制、裁剪或扩充以符合用户要求,即具有高度的适应性和灵活性•定制是指软件开发环境应能符合项目特征、过程和用户的爱好;•裁剪是指环境能按用户需要建立子环境,即构成适合具体硬件环境、精巧的、低冗余的工作环境;•扩充是指坏境能向上扩展,能根据用户新的需求或软件技术的新发展对原有的环境进行更新或扩充。第一节软件开发环境•好的软件开发环境应是容易使用、经济高效的系统•易学、易用、响应时间合理和用户喜爱;•能支持自然语言处理;•能支持交互式和分布式写作开发;•降低用户和环境本身的资源花费。第一节软件开发环境•软件开发环境应有辅助开发向半自动开发和自动开发逐步过渡的系统。自动化和半自动化的含义是:•各个阶段的文档之间要能半自动或自动地变换和跟踪;•应注重使用形式化技术;•不同程度地、逐步地采用“软件构件”的集成组装技术,并建立其可扩充的、可再用的软件构件库;•采用人工智能技术,逐步包含支持软件开发的专家系统。第一节软件开发环境•完全符合以上要求的软件开发环境,目前在世界上还不存在!•但随着软件工程的发展,这些目标是可以实现的。第一节软件开发环境软件开发环境的分类按解决的问题分类第一节软件开发环境程序设计环境程序设计环境解决如何将规范说明转换成可工作的程序的问题,包括两个重要的部分:方法和工具。系统合成环境系统合成环境主要考虑把很多子系统集成为一个大系统的问题。所有大型软件都有两个基本特点:它们是由一些较小的、较易理解的子系统组成的,因此需要有一个系统合成环境来辅助控制子系统及其向大系统的集成。项目管理环境大型软件系统的开发和维护必然会有许多人员在同一时段内协同工作,需要对人与人之间的交流和合作进行管理。项目管理环境的责任是解决由于软件产品的规模大、生存期长、人们的交往多而造成的问题。•以语言为中心的环境•以语言为中心的环境的特点是强调支持某种特定语言的编程;•包含支持某特定语言的编程所需的工具集;•环境采取高度的交互方式;•仅支持与编程有关的功能(如编码和调试),不支持项目管理等功能。第一节软件开发环境软件开发环境的分类按软件开发环境的演变趋势分类InterLisp•LispSmalltalk-80•SmallTalkToolPark•PascalRationalenvironment•Ads第一节软件开发环境•以语言为中心的程序设计环境是最早被人们开发并使用的环境,也是目前使用最多的环境。这类环境具有以下特点:•支持软件生存周期后期活动,特别强调对编程、调试和测试活动的支持;•该类环境的特点依赖于程序设计语言(高级语言);•该类环境感兴趣的研究领域是增量开发方法(IncrementalDevelopment)。•工具箱环境•工具箱环境的特点是由一整套工具组成,供程序设计选择之用,如有窗口管理系统、各种编辑系统、通用绘图系统、电子邮件系统、文件传输系统及用户界面生成系统等。•用户可以根据个人需要对整个环境的工具进行裁剪,以产生符合自己需要的个人系统环境。•其次是这类环境的特点是独立于语言的。如UNIX,Windows,APSE的接口集CAIS和SPICE等。第一节软件开发环境软件开发环境的分类按集成化程度分类•第一代。建立在操作系统之上,工具是通过一个公用框架集成的。•工具无需修改即可由调用过程;•工具使用的文件结构不变,而且成为环境库的一部分;•人机界面图形能力差,多使用菜单技术;例如20世纪70年代的UNIX环境以文件库为集成核心。第一节软件开发环境•第二代。具有真正的数据库,而不是文件库。•多采用E-R模式,在更低层次集成工具,工具和文件都作为实体保存在数据库中,现有工具需要做适当修改或定制方可加入。•人机界面采用图形、窗口等。例如Ada程序设计环境(APSE)以数据库为集成核心。第一节软件开发环境•第三代。建立在知识库系统上,出现集成化工具集。•用户不用在任务之间切换不同的工具,采用形式化方法和软件重用等技术,采用多窗口技术。•这一代软件集成度最高;利用这些工具,实现了软件开发的自动化,大大提高软件开发的质量和生产率,缩短软件开发的周期,并降低软件的开发成本。例如20世纪80年代CASE与目前的CASE集成化产品。第一节软件开发环境第二节软件工具•软件工具是“可用来帮助和支持软件需求分析、软件开发、测试、维护、模拟、移植或管理而编制的计算机程序或软件。”第二节软件工具工具工具接口工具用户接口交互连接其它工具通信接口操作系统环境信息库第二节软件工具软件工具的分类软件工具模拟工具开发工具测试和评估工具运行和维护工具性能测量工具程序设计支持工具第二节软件工具Westinghouse(西屋电气)公司于1992年公布了13类软件工具的分类标准和该类的范例工具。系统模拟和模型工具•指结构和数据流模型、算法模型、定时和大小工具及动画工具。需求追踪工具•指编辑程序、数据库管理系统及在DBMS上的应用运行工具需求分析工具•指正文和数据流图工具、数据字典工具、及面向对象的分析工具。第二节软件工具设计工具•指结构图、模块规格说明、伪代码、代码生成程序及及语言敏感的编辑程序编码和单元测试工具•指编码程序、语言敏感的编辑程序、语言、代码格式化程序、交叉编译程序、连接程序及源码层次的调试程序测试和集成工具•指测试驱动程序、覆盖分析程序、回归测试及测试床文档工具•指桌面出版系统、文档模板及格式管理系统项目管理工具•指计划和进度、追踪和状态报告及成本估算和代码行估算第二节软件工具配置管理工具•指访问和版本控制机构、产品基线、文件和修改管理质量保证工具•指检查表、直方图、图形及表格度量工具•指行计数、代码质量度量、管理度量及其它标准度量软件重用工具•指桌面出版系统、文档模板及格式管理系统其它工具•指数据管理、通信、电子公告牌及活页等第二节软件工具谢谢!