结构推理 试述软件开发环境的分类。
【正确答案】软件开发环境可按解决的问题、软件开发环境的演变趋向和集成化程度进行分类。
   (1)按解决的问题分类。
   ①程序设计环境。解决如何将规范说明转换成可工作的程序问题,它包括两个重要部分,方法与工具。
   ②系统合成环境。主要考虑把很多子系统集成为一个大系统的问题。所有的大型软件系统都有两个基本特点:它们是由一些较小的、较易理解的子系统组成的,因此,需要有一个系统合成环境来辅助控制子系统及其向大系统的集成。
   ③项目管理环境。大型软件系统的开发和维护必然会有许多人员在一段时间内协同工作,这就需要对人与人之间的交流和合作进行管理。项目管理环境的责任是解决由于软件产品的规模大、生存期长、人们的交往多而造成的问题。
   (2)按软件开发环境的演变趋向分类。
   ①以语言为中心的环境。这类环境的特点是:强调支持其特定语言的编程;包含支持某特定语言编程所需的工具集;环境采取高度的交互方式;仅支持与编程有关的功能(如编码和调试),不支持项目管理等功能。
   ②工具箱环境。这类环境的特点是由一整套工具组成,供程序设计选择之用,如有窗口管理系统、各种编辑系统、通用绘图系统、电子邮件系统、文件传输系统、用户界面生成系统等。用户可以根据个人需要对整个环境的工具进行剪裁,以产生符合自己需要的个人的系统环境。
   ③基于方法的环境。这类环境专门用于支持特定的软件开发方法。这些方法可分为两大类:支持软件开发周期特定阶段的管理与开发过程。前者包括规格说明、设计、确认、验证和重用。后者又可细分为支持产品管理与支持开发和维护产品的过程管理。产品管理包括版本管理和配置管理。开发过程管理包括项目支持和控制、任务管理等。
   (3)按集成化程度分类。
   环境的形成与发展主要体现在各工具的集成化的程度上,当前国内外软件工程把软件开发环境分为三代,各代之间的主要特征为:
   ①第一代,建立在操作系统之上,工具是通过一个公用框架集成;工具不经修改即可由调用过程来使用;工具所使用的文件结构不变,而且成为环境库的一部分;人机界面图形能力差,多使用菜单技术。例如20世纪70年代UNIX环境以文件库为集成核心。
   ②第二代,具有真正的数据库,而不是文件库。多采用E-R模式;在更低层次集成工具,工具和文件都作为实体保存在数据库中;现有工具要做适当的修改或定制方可加入;人机界面采用图形、窗口等。例如Ada程序设计环境(APSE)以数据库为集成核心。
   ③第三代,建立在知识库系统上;出现集成化工具集,用户不用在任务之间切换不同的工具;采用形式化方法和软件重用等技术;采用多窗口技术。这一代软件集成度最高,利用这些工具,实现了软件开发的自动化,大大提高了软件开发的质量和生产率,缩短了软件开发的周期,并可减低软件的开发成本。例如20世纪80年代CASE与目前的CASE集成化产品。
【答案解析】