为您的软件建立强大的安全性至关重要。恶意行为者不断使用各种类型的恶意软件和网络安全攻击来破坏所有平台上的应用程序。您需要了解最常见的攻击并找到缓解它们的方法。
本文不是关于堆溢出或堆利用的教程。在其中,我们探讨了允许攻击者利用应用程序中的漏洞并执行恶意代码的堆喷射技术。我们定义什么是堆喷射,探索它的工作原理,并展示如何保护您的应用程序免受它的影响。
什么是堆喷射技术,它是如何工作的?
堆喷射是一种用于促进执行任意代码的漏洞利用技术。这个想法是在目标应用程序中的可预测地址上提供一个shellcode,以便使用漏洞执行这个 shellcode。该技术是由称为heap spray的漏洞利用源代码的一部分实现的。
在实现动态内存管理器时,开发人员面临许多挑战,包括堆碎片。一个常见的解决方案是以固定大小的块分配内存。通常,堆管理器对块的大小以及分配这些块的一个或多个保留池有自己的偏好。堆喷射使目标进程连续地逐块分配所需内容的内存,依靠将 shellcode 放置在所需地址的分配之一(不检查任何条件)。
堆喷射本身不会利用任何安全问题,但它可用于使现有漏洞更容易被利用。
必须了解攻击者如何使用堆喷射技术来了解如何缓解它。以下是普通攻击的样子:
堆喷射如何影响进程内存
堆喷射攻击有两个主要阶段:
1.内存分配阶段。一些流连续分配大量具有相同内容的固定大小的内存块。
2.执行阶段。这些堆分配之一接收对进程内存的控制。
如您所见,堆喷射漏洞利用技术看起来像连续的垃圾邮件,形式为大小相同且内容相同的块。如果堆喷射攻击成功,控制权将传递给这些块之一。
为了执行这种攻击,恶意行为者需要有机会在目标进程中分配大量所需大小的内存,并用相同的内容填充这些分配。这个要求可能看起来过于大胆,但最常见的堆喷射攻击案例包括破坏Web 应用程序漏洞。任何支持脚本语言的应用程序(例如,带有 Visual Basic 的 Microsoft Office)都是堆喷射攻击的潜在受害者。
因此,在一个流的上下文中预期攻击是有意义的,因为脚本通常在单个流中执行。
但是,攻击者不仅可以使用脚本语言执行堆喷射攻击。其他方法包括将图像文件加载到进程中,并通过使用 HTML5 引入的技术以非常高的分配粒度喷射堆。
这里的问题是哪个阶段可疑,我们可以干预并试图弄清楚是否存在正在进行的攻击?
内存分配阶段,当一些流填满大量内存时,已经很可疑了。但是,您应该问自己是否可能存在误报。例如,您的应用程序中可能存在确实在一个循环中分配内存的脚本或代码,例如数组或特殊内存池。当然,脚本在完全相同的堆块中分配内存的可能性很小。但是,它仍然不是堆喷射的关键要求。
相反,您应该注意执行阶段,因为分析接收进程内存控制权的堆分配总是有意义的。因此,我们的分析将特别关注包含潜在 shellcode 的分配内存。
为了将堆喷射 shellcode 的执行与普通JIT代码生成区分开来,您可以分析分配某个内存块的最新流分配,包括流中的相邻分配。请注意,堆中的内存始终分配有执行权限,这允许攻击者使用堆喷射技术。
堆喷射缓解基础知识
为了成功缓解堆喷射攻击,我们需要管理接收内存控制的过程,应用钩子,并使用额外的安全机制。
保护您的应用程序免受堆喷射执行的三个步骤是:
1.拦截NtAllocateVirtualMemory调用
2.在尝试分配可执行内存期间使其无法执行
3.注册结构化异常处理程序 (SEH) 以处理由于执行不可执行内存而发生的异常
现在让我们详细探讨每个步骤。
接收对内存的控制
我们既需要监控目标进程如何分配内存,又需要检测动态分配内存的执行情况。后者假设在堆喷射期间分配的内存具有执行权限。如果数据执行保护 ( DEP ) 处于活动状态(对于 x64,默认情况下始终处于活动状态)并且尝试执行没有执行权限分配的内存,则会生成异常访问冲突。
恶意 shellcode 可以预期在没有 DEP 的应用程序中执行(这不太可能),或者使用脚本引擎在默认情况下具有执行权限的堆中分配内存。
我们可以通过拦截可执行内存的分配并以分配它的漏洞无法察觉的方式使其不可执行来防止恶意代码的执行。因此,当漏洞利用认为喷射是安全的执行并尝试将控制权委托给喷射的堆时,将触发系统异常。然后,我们可以分析这个系统异常。
首先,让我们从用户模式进程的角度来探索 Windows 中的内存工作是什么样的。以下是通常分配大量内存的方式:
在哪里:
如果我们设法替换NtAllocateVirtualMemory,我们将能够拦截进程内存中的堆分配流量。
应用挂钩
为了拦截目标函数NtAllocateVirtualMemory的执行,我们将使用 mhook 库。您可以选择原始库或改进版本。
使用 mhook 库很容易:您需要创建一个与目标函数具有相同签名的钩子,并通过调用Mhook_SetHook来实现它。钩子是通过在函数体上使用jmp指令覆盖函数prolog来实现的。如果您已经使用过钩子,那么您应该没有任何困难。
安全机制
有两种安全机制可以帮助我们缓解堆喷射攻击:数据执行预防和结构化异常处理。
结构化异常处理或 SEH是一种特定于 Windows 操作系统的错误处理机制。当发生错误(例如,除以零)时,应用程序的控制权被重定向到内核,内核会找到一系列处理程序并逐个调用它们,直到其中一个处理程序将异常标记为“已处理”。通常,内核将允许流程从检测到错误的那一刻起继续执行。
从进程的角度来看,DEP 看起来像是在内存执行时出现 EXCEPTION_ACCESS_VIOLATION 错误代码的 SEH 异常。
对于 x86 应用程序,我们有两个陷阱:

DEP可以在系统参数中关闭。
防止堆喷射攻击
现在,让我们开始练习。为了减轻堆喷射攻击,我们将采取以下步骤:
1.形成分配历史
2.检测 shellcode 执行
3.检测喷雾
形成分配历史
为了拦截动态分配内存的执行,我们将 PAGE_EXECUTE_READWRITE 标志更改为 PAGE_READWRITE。
让我们创建一个结构来保存分配:
接下来,我们将为NtAllocateVirtualMemory定义一个钩子。此挂钩将重置 PAGE_EXECUTE_READWRITE 标志并保存已重置标志的分配:
一旦我们设置了钩子,任何带有 PAGE_EXECUTE_READWRITE 位的内存分配都会被修改。当试图将控制权传递给该内存时,处理器将生成一个我们可以检测和分析的异常。
在本文中,我们忽略了多线程问题。然而,在现实生活中,最好单独存储每个流的分配,因为 shellcode 执行预计是单线程的。
检测 shellcode 执行
现在,我们将为 SEH 注册一个处理程序。这就是这个处理程序通常的工作方式:
1.提取触发异常的指令的地址。如果此地址属于我们保存的区域之一,则此异常已由我们的操作触发。否则,我们可以跳过它,让系统继续搜索相关的处理程序。
2.搜索堆喷射。如果动态分配的内存被可疑执行,我们必须对检测到的攻击做出反应。否则,我们需要恢复原样,以便应用程序可以继续工作。
3.使用NtProtect函数 (PAGE_EXECUTE_READWRITE)恢复区域的原始参数。
4.将控制权交还给工艺流程。
下面是一个 shellcode 检测的代码示例:
目前,我们有一种机制可以监控应用程序中的 shellcode,并可以检测其执行时刻。在现实生活中,我们需要再执行两个步骤:
检测堆喷射
使用上面的代码,我们在动态内存执行时停止了一个应用程序,并获得了最新分配的历史记录。我们将使用这些信息来确定我们的应用程序是否受到攻击。让我们探索一下我们的堆喷射检测技术的两个步骤:
用于识别堆喷射的建议算法
我们建议使用所描述的技术并注意以下四个标准,以排除可能会显着减慢您的应用程序的不必要检查:
1.为每个线程定义已保存的内存分配数量。
2.设置已保存内存分配的最小大小。拦截大小为一页的分配将导致不合理地节省内存。堆喷射通常使用为某个应用程序的特定堆管理器选择的巨大值进行操作。数十页和数百页似乎更相关。
3.定义发生异常时将分析的最新分配数。如果我们处理过多的分配,它会降低应用程序的效率,因为对于动态内存的每次执行,我们都必须读取大区域的内容。
4.设置 shellcode 的预期最小大小。如果我们要搜索的代码太小,就会增加误报的数量。
结论
我们探索了一种使用钩子和内存保护机制检测堆喷射攻击的方法。在我们的项目中,这种方法在测试和堆喷射检测过程中显示出出色的效果。
电脑经常蓝屏是怎么回事?
一、启动时加载程序过多不要在启动时加载过多的应用程序(尤其是你的内存小于64MB),以免使系统资源消耗殆尽。 正常情况下,Win9X启动后系统资源应不低于90%。 最好维持在90%以上,若启动后未运行任何程序就低于70%,就需要卸掉一部分应用程序,否则就可能出现“蓝屏”。 二、应用程序存在着BUG有些应用程序设计上存在着缺陷或错误,运行时有可能与Win9X发生冲突或争夺资源,造成Win9X无法为其分配内存地址或遇到其保护性错误。 这种BUG 可能是无法预知的,免费软件最为常见。 另外,由于一些用户还在使用盗版软件(包括盗版Win9X),这些盗版软件在解密过程中会破坏和丢失部分源代码,使软件十分不稳定,不可靠,也常常导致“蓝屏”。 三、遭到不明的程序或病毒攻击所至这个现象只要是平时我们在上网的时候遇到的,当我们在冲浪的时候,特别是进到一些BBS站时,可能暴露了自己的IP,被黑客用一些软件攻击所至。 对互这种情况最好就是在自己的计算机上安装一些防御软件。 再有就是登录BBS要进行安全设置,隐藏自己IP。 四、版本冲突有些应用程序需调用特定版本的动态链接库DLL,如果在安装软件时,旧版本的DLL覆盖了新版本的DLL,或者删除应用程序时,误删了有用的DLL文件,就可能使上述调用失败,从而出现“蓝屏”。 不妨重新安装试一试。 此篇说的是软件使用可能引起的蓝屏,当然这只是引起蓝屏的一小部份原因。 五、注册表中存在错误或损坏很多情况下这是出现“蓝屏”的主要原因。 注册表保存着Win9X的硬件配置、应用程序设置和用户资料等重要数据,如果注册表出现错误或被损坏,就很可能出现“蓝屏”。 如果你的电脑经常出现“蓝屏”,你首先就应考虑是注册表出现了问题,应及时对其检测、修复,避免更大的损失。 六、软硬件不兼容新技术、新硬件的发展很快,如果安装了新的硬件常常出现“蓝屏”,那多半与主板的BIOS或驱动程序太旧有关,以致不能很好支持硬件。 如果你的主板支持BIOS升级,应尽快升级到最新版本或安装最新的设备驱动程序。 蓝屏故障和其它故障一样,根据成因大致可以分为软件和硬件两个方面。 现在还是遵循先软后硬的原则来看看故障的成因和解决办法吧!一、软件引起的蓝屏故障1.重要文件损坏或丢失引起的蓝屏故障(包括病毒所致)。 实例:Win98中的VxD(虚拟设备驱动程序)或是.DLL 动态连接库 之类的重要文件丢失,情况一般会比较严重,会出现“蓝屏警告”。 解决方法一:记下所丢失或损坏的文件名 用Win98启动盘中的“Ext”命令从Win98安装盘中提取和恢复被损坏或丢失的文件,步骤如下:(1)用Win98启动盘引导计算机,在提示符下敲入“Ext”命令。 (2)在提示“Please enter the path to the Windows CAB files( a):”后输入Win98安装压缩包所在的完整路径,如“F \Pwin98\Win98”,完成后回车。 (3)在提示“Please enter the name(s)of the file(s) you want to extract:”后输入你记下的丢失文件名,如“Bios.Vxd”,回车。 (4)在解压路径提示“Please enter path to extract to(‘Enter’ for current directory):”后输入文件将被解压到的完整路径,如“C \Windows\System”并敲回车。 (5)最后出现确认提示“Is this Ok?(y/n):”,输入“y”后回车。 “Ext”程序会自动查找安装盘中的CAB压缩包,并将文件释放到指定的位置。 (6)重新启动即可。 解决方法二:用杀毒软件杀毒。 有的病毒可能会破坏注册表项 杀毒后注册表应恢复中毒之前的备份。 解决方法三:如果能启动图形界面,可以采取重装主板以及显卡的驱动程序,和进行“系统文件扫描”来恢复被破坏或丢失的文件。 “系统文件扫描”的方法为 单击“开始/程序/附件/系统工具/系统信息/工具/系统文件检查器”,然后扫描改动过的文件即可。 2.注册表损坏导致文件指向错误所引起的蓝屏。 实例:注册表的擅自改动(包括人为地改动和软件安装时的自动替换) 其现象表现为开机或是在调用程序时出现蓝屏,并且屏幕有出错信息显示(包含出错的文件名)。 解决方法一:恢复备份。 (1)单击“开始/关机/重新启动计算机并切换到MS-DOS方式”,然后单击“是”;(2)进入Windows目录下。 例如,如果你的Windows安装在“C \Windows” 目录下,应键入以下内容 “CD C \WINDOWS”后回车;(3)键入“SCANREG\RESTORE”后回车。 (4)按照上述步骤,可以将注册表恢复到最近一次启动计算机时的状态。 解决方法二:删除键值。 如果是在卸载程序后出现蓝屏的话,笔者断定故障是由于程序卸载不完善造成的。 解决这类问题非常简单,首先你要记下出错的文件名,然后再到注册表中找到以下分支“HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD”。 在“查找”中输入刚才的文件名,把查到的键值删除即可。 此时,千万不要忘记备份注册表哦!典型案例:笔者在删除金山毒霸时中途死机,重新启动后刚看到桌面的图标就出现蓝屏,并伴有错误信息出现。 错误信息中提到Kavkrnl.vxd文件找不到,笔者首先根据文件名的前两个字符确定该文件不是Win98的系统文件,ka开头的应是金山毒霸的虚拟设备驱动程序。 基本判断为文件指向错误,于是决定删除它在注册表中相应键值。 在注册表编辑器的查找中输入“Kavkrnl.vxd”,将它在“HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD”中的相应主键值删除,重启后故障消除。 3.System.ini 文件错误引起的“蓝屏”。 实例:软件卸载或是安装后未即时更新System.ini 文件所造成的错误。 解决方法:禁用注册表中该项或是重新安装相应的软件或驱动程序。 4.Win98自身的不完善造成的蓝屏。 实例:Win98的sp1和Microsoft的Vxd_fix.exe补丁程序对Win98的稳定性起着至关重要的作用。 解决方法:快去下载吧,如华军网站南京站HTTP //nj.onlinedown.net/Win98SP1.htm Win98sp1 及http //nj.onlinedown.net/Windows98VxDpatch.htm Vxd_fix.exe 。 5.系统资源耗尽引起的蓝屏故障。 实例:蓝屏故障常常发生在进行一项比较大的工作时,或是在保存复制的时候,且往往发生得比较突然。 这类故障的发生原因主要是与三个堆资源(系统资源、用户资源、GDI资源)的占用情况有关。 解决方法:打开你的资源状况监视器,看一下剩余资源,如果你的三种资源都在50%甚至更低,就很容易出现诸如“非法操作”、“蓝屏”或“死机”故障。 为此,必须减少资源浪费,减少不必要的程序加载,避免同时运行大程序(图形、声音和视频软件),例如加载计划任务程序,输入法和声音指示器,声卡的DOS驱动程序,系统监视器程序等等。 6.DirectX问题引起的蓝屏故障。 实例:(1)DirectX版本过低或是过高;(2)游戏与它不兼容或是不支持;(3)辅助重要文件丢失;(4)显卡对它不支持。 解决方法:升级或是重装DirectX。 如果是显卡不支持高版本的DirectX那就说明你的显卡实在是太老了,尝试更新显卡的BIOS和驱动程序,否则,只好花钱升级显卡了。 二、硬件引起的蓝屏故障1.内存超频或不稳定造成的蓝屏。
msi 与exe结尾的文件的不同这处?
EXE文件是最常见的应用程序,可以是单个独立程序,也可是引导程序,或者程序组中的一个! 【MSI】 说到MSI文件,不得不先说说Windows Installer,它不只是安装程序,而是可扩展的软件管理系统。 Windows Installer的用途包括:管理软件的安装、管理软件组件的添加和删除、监视文件的复原以及使用回滚技术维护基本的灾难恢复。 另外,Windows Installer还支持从多个源位置安装和运行软件,而且可以由想要安装自定义程序的开发人员自定义。 要想使用这些功能,就必须通过MSI文件。 MSI 文件是Windows Installer的数据包,它实际上是一个数据库,包含安装一种产品所需要的信息和在很多安装情形下安装(和卸载)程序所需的指令和数据。 MSI文件将程序的组成文件与功能关联起来。 此外,它还包含有关安装过程本身的信息:如安装序列、目标文件夹路径、系统依赖项、安装选项和控制安装过程的属性。 的优势 Windows Installer技术就是合并在一起发挥作用的两个部分:客户端安装程序服务() 和Microsoft软件安装(MSI)软件包文件。 程序是 Windows Installer 的一个组件。 当 被安装程序调用时,它将用 读取软件包文件 ()、应用转换文件 () 并合并由安装程序提供的命令行选项。 Windows Installer 执行所有与安装有关的任务:包括将文件复制到硬盘、修改注册表、创建桌面快捷方式、必要时显示提示对话框以便用户输入安装首选项。 当双击MSI文件的时候,与之关联的Windows Installer 的一个文件 被调用,它将用读取软件包文件()、应用转换文件()进行进一步处理,然后 Windows Installer 执行所有与安装有关的任务:包括将文件复制到硬盘、修改注册表、创建桌面快捷方式,必要时显示提示对话框以便用户输入安装需要的信息,就这样,一个程序安装到了你的电脑上。 采用MSI安装的优势在于你可以随时彻底删除它们,更改安装选项,即使安装中途出现意想不到的错误,一样可以安全地恢复到以前的状态,正是凭着此强大功能,越来越多的软件开始使用MSI作为发行的方式了。 如果你对MSI文件感兴趣,可以用WinRAR等压缩软件打开,看一下里面的内容,满足一下好奇心。
开发环境、开发工具、开发平台的关系与区别是什么?
软件开发环境(Software Development Environment,SDE)是指在基本硬件和宿至软件的基础上,为支持系统软件和应用软件的工程化开发和维护而使用的一组软件,简称SDE。 它由软件工具和环境集成机制构成,前者用以支持软件开发的相关过程、活动和任务,后者为工具集成和软件的开发、维护及管理提供统一的支持。 SDE在欧洲又叫集成式项目支援环境(Integrated Project Support Environment,IPSE)。 软件开发环境的主要组成成分是软件工具。 人机界面是软件开发环境与用户之间的一个统一的交互式对话系统,它是软件开发环境的重要质量标志。 存储各种软件工具加工所产生的软件产品或半成品(如源代码、测试数据和各种文档资料等)的软件环境数据库是软件开发环境的核心。 工具间的联系和相互理解都是通过存储在信息库中的共享数据得以实现的。 软件开发环境数据库是面向软件工作者的知识型信息数据库,其数据对象是多元化、带有智能性质的。 软件开发数据库用来支撑各种软件工具,尤其是自动设计工具、编译程序等的主动或被动的工作。 较初级的SDE数据库一般包含通用子程序库、可重组的程序加工信息库、模块描述与接口信息库、软件测试与纠错依据信息库等;较完整的SDE数据库还应包括可行性与需求信息档案、阶段设计详细档案、测试驱动数据库、软件维护档案等。 更进一步的要求是面向软件规划到实现、维护全过程的自动进行,这要求SDE数据库系统是具有智能的,其中比较基本的智能结果是软件编码的自动实现和优化、软件工程项目的多方面不同角度的自我分析与总结。 这种智能结果还应主动地被重新改造、学习,以丰富SDE数据库的知识、信息和软件积累。 这时候,软件开发环境在软件工程人员的恰当的外部控制或帮助下逐步向高度智能与自动化迈进。 软件实现的根据是计算机语言。 时至今日,计算机语言发展为算法语言、数据库语言、智能模拟语言等多种门类,在几十种重要的算法语言中,C&C++语言日益成为广大计算机软件工作人员的亲密伙伴,这不仅因为它功能强大、构造灵活,更在于它提供了高度结构化的语法、简单而统一的软件构造方式,使得以它为主构造的SDE数据库的基础成分——子程序库的设计与建设显得异常的方便。 事实上,以C&C++为背景建立的SDE子程序库能为软件工作者提供比较有效、灵活、方便、友好的自动编码基础,尤其是C++的封装等特性,更适合大项目的开发管理和维护。 软件开发环境可按以下几种角度分类:(1)按软件开发模型及开发方法分类,有支持瀑布模型、演化模型、螺旋模型、喷泉模型以及结构化方法、信息模型方法、面向对象方法等不同模型及方法的软件开发环境。 (2)按功能及结构特点分类,有单体型、协同型、分散型和并发型等多种类型的软件开发环境。 (3)按应用范围分类,有通用型和专用型软件开发环境。 其中专用型软件开发环境与应用领域有关,故又软件开发方法(Software Development Method)是指软件开发过程所遵循的办法和步骤。 软件开发活动的目的是有效地得到一些工作产物,也就是一个运行的系统及其支持文档,并且满足有关的质量要求。 软件开发是一种非常复杂的脑力劳动,所以经常更多讨论的是软件开发方法学,指的是规则、方法和工具的集成,既支持开发,也支持以后的演变过程(交付运行后,系统还会变化,或是为了改错,或是为了功能的增减)。 关于组成软件开发和系统演化的活动有着各种模型(参见软件生存周期,软件开发模型,软件过程),但是典型地都包含了以下的过程或活动:分析、设计、实现、确认(测试验收)、演化(维护)。 有些软件开发方法是专门针对某一开发阶段的,属于局部性的软件开发方法。 特别是软件开发的实践表明,在开发的早期阶段多做努力,在后来的测试和维护阶段就会使费用较大地得以缩减。 因此,针对分析和设计阶段的软件开发方法特别受到重视。 其它阶段的方法,从程序设计发展的初期起就是研究的重点,已经发展得比较成熟(参见程序设计,维护过程)。 除了分阶段的局部性软件开发方法之外,还有覆盖开发全过程的全局性方法,尤为软件开发方法学注意的重点。 对软件开发方法的一般要求:当提出一种软件开发方法时,应该考虑许多因素,包括:①覆盖开发全过程,并且便于在各阶段间的过渡;②便于在开发各阶段中有关人员之间的通信;③支持有效的解决问题的技术;④支持系统设计和开发的各种不同途径;⑤在开发过程中支持软件正确性的校验和验证;⑥便于在系统需求中列入设计、实际和性能的约束;⑦支持设计师和其他技术人员的智力劳动;⑧在系统的整个生存周期都支持它的演化;⑨受自动化工具的支持。 此外,在开发的所有阶段,有关的软件产物都应该是可见和可控的;软件开发方法应该可教学、可转移,还应该是开放的,即可以容纳新的技术、管理方法和新工具,并且与已有的标准相适应可称为应用型软件开发环境。 ⑷按开发阶段分类,有前端开发环境(支持系统规划、分析、设计等阶段的活动)、后端开发环境(支持编程、测试等阶段的活动)、软件维护环境和逆向工程环境等。 此类环境往往可通过对功能较全的环境进行剪裁而得到。 软件开发环境由工具集和集成机制两部分构成,工具集和集成机制间的关系犹如“插件”和“插槽”间的关系。 工具集:软件开发环境中的工具可包括:支持特定过程模型和开发方法的工具,如支持瀑布模型及数据流方法的分析工具、设计工具、编码工具、测试工具、维护工具,支持面向对象方法的OOA工具、OOD工具和OOP工具等;独立于模型和方法的工具,如界面辅助生成工具和文档出版工具;亦可包括管理类工具和针对特定领域的应用类工具。 集成机制:对工具的集成及用户软件的开发、维护及管理提供统一的支持。 按功能可划分为环境信息库、过程控制及消息服务器、环境用户界面三个部分。 环境信息库:是软件开发环境的核心,用以储存与系统开发有关的信息并支持信息的交流与共享。 库中储存两类信息,一类是开发过程中产生的有关被开发系统的信息,如分析文档、设计文档、测试报告等;另一类是环境提供的支持信息,如文档模板、系统配置、过程模型、可复用构件等。 过程控制和消息服务器:是实现过程集成及控制集成的基础。 过程集成是按照具体软件开发过程的要求进行工具的选择与组合,控制集成并行工具之间的通信和协同工作。 环境用户界面:包括环境总界面和由它实行统一控制的各环境部件及工具的界面。 统一的、具有一致视感(Look & Feel)的用户界面是软件开发环境的重要特征,是充分发挥环境的优越性、高效地使用工具并减轻用户的学习负担的保证。 较完善的软件开发环境通常具有如下功能:(1)软件开发的一致性及完整性维护;(2)配置管理及版本控制;(3)数据的多种表示形式及其在不同形式之间自动转换;(4)信息的自动检索及更新;(5)项目控制和管理;(6)对方法学的支持。 --------------------------------------------------------开发平台是软件开发过程所使用运行的平台,可以是多语言平台,包含在开发工具之上.如开发平台,---------------------------------------------------------开发工具是单一语言的开发工具如VB6.0,属于开发工具
发表评论