# 1.0背景

如今，软件无处不在，从商业企业到我们日常专业、公共和私人生活的几乎所有领域。如果没有软件，航空旅行、电话、银行转账或驾驶几乎都是不可能的。软件控制的组件可以在每个家庭和许多日常设备中找到，从洗衣机到汽车\[BJ+06]。软件通常不是自治的，而是与硬件和电子设备一起嵌入的，或者作为公司用来产生价值的业务过程的一部分\[TT+00]。

公司和产品的价值和商业成功越来越多地取决于软件和软件质量(参见\[BM00]， \[SV99]， \[TT+00])。软件工程师因此面临着这样的挑战:在保持高水平软件质量的同时，用不断减少的预算，以不断增加的速度实现日益复杂的需求。

软件系统的规模和复杂性的不断增加，使其成为有史以来最复杂的人造系统之一。最好的例子就是互联网，它是一个真正以软件为基础的全球性系统。互联网现在可以在我们的地球家园之外的国际空间站(ISS)上使用。

一种结构化和系统化的设计方法对于基于软件的系统的成功至关重要。尽管使用了既定的软件开发方法，但不成功的软件项目数量仍然惊人地多。为了应对这种情况，我们需要尽可能地避免错误，或者在软件工程的早期阶段识别并消除错误。需求工程和软件架构就是其中的两个阶段。用系统软件开发之父之一Ernst Denert的话来说，软件架构是“最终的软件工程学科”(取自Denert在\[Sie04]中的前言)。
