软件架构是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。软件架构会包括软件组件、组件之间的关系,组件特性以及组件间关系的特性[1]。软件架构可以和建筑物的架构相比拟[2]。软件架构是构建计算机软件,开发系统以及计划进行的基础,可以列出开发团队需要完成的任务[3]。 软件架构是在软件的基础架构上进行决策,一但决定后,再修改的代价很大。软件架构中的决策包括在软件设计时的一些特殊结构性选项,例如要控制太空船登陆艇的系统需要快速而且可靠,因此需要选择适合实时计算的语言,而且为了满足可靠度的需求,程序需要有数个冗余的复本,各复本运作在不同的硬件上,以便比对各程序的结果。
将软件架构文档化有助于和项目关系人之间的沟通,在高层设计时就可以提早进行决策,也可以在各项目之间复用设计组件[4]。 —— 维基百科:软件架构