软件失败的一个常见原因(真实或感知)是缺乏与其他应用软件, 操作系统(或操作系统版本, 旧或新)的兼容, 或与原始的不同的目标环境(例如, 想要在桌面上运行的终端或gui应用程序现在需要成为一个网络应用程序, 必须在网页浏览器中提供)... 例如, 在缺乏向后兼容的情况下, 这可能会发生, 因为程序员开发和只 在 最 新 版本 的 目标 环境 中 测试 软件, 而不是所有用户都可能运行. 这导致了意想不到的后果, 最新的工作可能不会在较早版本的目标环境中运作, 或在较早版本的目标环境有能力使用的旧硬件上. 有时候, 这样的问题可以通过主动地将操作系统功能抽象化成一个单独的程序模块或图书馆来修复.
开发者在创造可能导致失败的软件时通常会做什么?
缺乏 向 后 兼容