应用架构行为准则
应用程序架构是企业解决方案架构(ESA)的一个子集(图1)。应用程序架构既是一个过程(架构和设计)又是一个东西(可交付成果——架构的内容)。应用程序架构帮助组织规划其在应用程序解决方案和其他系统中的投资。正在评估、设计和交付的应用程序解决方案必须能够与已建立的解决方案共存。其中包括新开发的应用程序、遗留应用程序扩展、应用程序现代化、购买的应用程序包及其升级。
图1
应用程序架构存在于多个详细级别:
- 在概念层次上,企业架构(EA)策略和计划确保应用程序组合与其他形式的解决方案架构(业务、技术和信息)协同有效地发展。
- 在逻辑层次上,应用程序架构超出了企业解决方案架构(ESA)工作的概念层次,它包括设计和重用软件服务和接口,从而提高了开发人员的生产力和应用程序的灵活性、质量和一致性。
应用程序架构的原则适用于所有类型的应用程序方法和解决方案。面向服务的架构(SOA)支持共享软件服务的需求正在推动组织实现应用程序架构师的角色和相关角色,包括SOA卓越中心(CoEs)或能力中心(CCs),以便跨SOA实现计划进行协调。
企业级范围和角色
在概念层次上,企业架构(EA)策略和计划确保应用程序组合与其他形式的解决方案架构(业务、技术和信息)协同有效地发展。
- 在这个概念级别上,最能实现这些策略和计划以及应用程序架构规程的角色是企业解决方案架构师。
- 项目级的解决方案和应用程序架构师也可能被要求担任这个角色(或者至少就AA规划问题咨询)。但是,将解决方案架构策略和规划职责与项目设计和实现职责分离是一种最佳实践,否则,两者都无法正确执行。
企业解决方案架构有两个主要级别(图2)-
- 一个EA级别,包括代表不同架构和观点的各种类型的企业架构师-业务、技术、信息和解决方案(包括AA的概念级别)
- 一种解决方案/项目级别,在解决方案设计和交付的详细逻辑和实现级别中包含多个架构师和分析师角色。
在EA概念级的细节中,企业解决方案架构师(在其他团队成员和项目级主题专家的帮助下)正在确定可重复的标准和指南,以及可重用的资产和投资,包括与应用程序架构相关的资产和投资,它可以传递给负责项目和个人解决方案的人。
图2
企业解决方案架构师的角色
企业解决方案架构师的角色可以是广泛而富有挑战性的。在大多数组织中,我们看到这个EA角色的两个主要职责领域:
1] 采用ESA的标准化和再利用
企业解决方案架构师将可重复的标准和指南交付给适当的企业解决方案组合,然后将这些以及现在定义/部署的共享服务和资产用于单个项目解决方案工作。
图3
2] 利用企业解决方案架构(ESA)协调当前和未来的状态
- 根据ESA的现状,决定需要记录哪些内容(并在发生变化时进行更新)。解决方案架构师应确保正确描述每个解决方案。
- 与其他架构师合作,创建并记录欧空局未来状态的愿景,包括解决与在正确的时间为每个架构的正确更改提供资金相关的业务问题。然后,解决方案架构师应确保每个解决方案都针对其未来状态进行了适当的规划(包括一个解决方案对EA标准和指南的利用,以及解决方案模式中描述的解决方案组合中的那些标准和指南)。
- 确保合适的人员、流程和技术到位,以实现有效的协作
项目级范围和角色
未能区分解决方案架构师工作和应用程序架构师工作的企业错过了确保单个项目成功和多个项目重用的机会。
- 应用程序架构师有责任以最大化重用为目标进行设计,并尽可能消除项目、应用程序系统和业务单元之间的冗余和不一致。
- 虽然解决方案架构师将通过创建可重用的软件和信息服务来促进重用,但相对于为项目团队正在构建、集成和/或部署的特定解决方案定义一个合理、有效和完整的设计,它的优先级较低。
- 企业解决方案架构(ESA)团队(包括SAs和a as)负责细节和内容的概念级别,包括将哪些标准、指南、可重用资产和投资传递给项目作为起点
解决方案架构师
SAs专注于给定项目的所有架构方面(尽管它们可能一次处理多个项目)。正如企业SA确保ESA团队成员在概念/规划详细级别上的架构协作一样,SAs也确保了项目级别上的架构协作。此外,他们必须完成一个完整的设计,定义解决方案的所有方面,包括但不限于应用程序架构方面。
应用程序架构师
AAs的重点是应用接口和软件服务的设计。与设计应用程序接口和软件服务相关联的强调程度取决于项目方法,以及有多少预先存在的接口和服务可以重用和构建。因此,AAs侧重于应用程序软件(box)之间接口(line)的设计,以及box的设计,以使它们尽可能像应用程序服务那样可重用。AAs有责任设计接口和服务,以提高应用程序的灵活性,最大限度地重用,并尽可能消除项目、应用程序系统和业务部门之间的冗余和不一致。
以下是SA职责与AA职责的比较。
图4
大多数组织最初都将AA的重点放在应用程序接口的设计上,而且有充分的理由——应用程序集成是实现应用程序包以及支持将新的SOA Web浏览器与遗留应用程序和数据集成的一个主要问题。虽然良好的应用程序接口设计解决了稳定性、安全性和性能问题,但也希望尽可能提高业务敏捷性和开发人员的生产力。
- 具有SOA服务接口设计技能的AA侧重于应用程序接口(行)。
- AA与SOA软件服务提供商的设计技能侧重于应用程序服务(box)。
- 具有实现编码技能的开发人员根据AA生成的设计对服务的消费者和提供者实现以及新的应用程序服务(行和框解决方案)进行编码。
以下是AA和应用程序开发团队的职责区别-
图5