软件工程的目的是控制复杂性,而不是创造复杂性。

软件架构是当软件复杂性提高后,催生出来的一些列准则。在软件里,架构指为客户构建系统。软件存在的目标是为了自动化商业流程和人类行为。架构的定义如下:

软件架构师行动指南 软件架构师的职责描述_架构师

1)需求

系统的使命可以通过一组需求来描述。这些需求最终推动系统架构的形成。

没有确认清楚需求是直接导致软件项目失败的常见原因之一。需求的流程:(1)确认修改;(2)区分功能性需求以及非功能性需求;(3)收集需求;(4)如何处理需求。

2)区分什么是架构,什么不是

(1)定义架构和实现之间的边界;(2)正确的决策;(3)放手去实践。

3)架构流程

软件架构师行动指南 软件架构师的职责描述_软件工程_02

软件架构师

架构设计基于需求分析。分析确定系统要做什么;架构决定如何去做。需要有人了解这个“什么”来去确定这个“如何”。这个人就是架构师。架构师把需求和规范关联起来的专家。

架构师的职责

软件架构师行动指南 软件架构师的职责描述_架构师_03

针对当前软件的复杂性。架构对于软件来说是必需品。总的来说,软件开发不是单纯的工程学,它涉及大量的设计、创意,甚至心理学。此外,软件具有极高的动态性,它构建起来相对比较慢,却又需要和不断变化的业务需求保持同步。