4.4 软件架构中技术/横切概念
上一节将视图作为描述软件架构的核心手段,并阐述了此类描述的基础。现在将以简短的概念描述形式介绍额外所谓的“技术”或“横切”概念(换句话说,明确不是以现成的解决方案的形式)。这些概念对某些架构描述可能很重要,但不一定与特定架构相关。在许多情况下,预先存在的概念可以在不同的系统中重复使用。
此类技术/横切概念涵盖流程控制、错误处理、集成、国际化、持久性、部署等等。我们将首先解释此类概念的理论,然后给出两个简短的示例。这些描述绝不是详尽无遗的。
4.4.1 技术 /横切概念-示例维度
顾名思义,软件架构中的技术或横切概念通常在架构的多个部分(甚至全部)生效。同时,这些概念中的几个通常必须相互正交地处理。图 4 - 21 通过将错误处理、日志记录和持久性的概念放置在坐标系的不同维度来说明这种方法。特别是错误处理和日志记录经常在软件系统的大多数子区域中使用,但它们本身彼此独立(尽管在错误处理的范围内日志记录也可用于错误日志)。在常见的多层架构中(参见[DE++09]),持久性通常仅在一个区域中封装,但通常包括错误处理,并且可能还使用日志记录。
软件架构图4-21Sample维度 作为进一步的例子,在数据库联合架构或异构分布式信息系统中(见[CKH05]),自治、异构和分布这些维度是典型的横切概念,在相关的软件架构中需要加以解决。原则上,对于软件架构的所有技术或横切概念,都可以进行类似的正交/横切方面的考虑。
4.4.2 错误处理
在软件系统的使用和执行过程中,操作错误、部分停机和类似的错误情况是日常常见的现象。在软件架构的背景下,也许主要任务是考虑如何在系统运行期间处理可预见的错误。这可以包括,例如,拦截形式上无效的用户输入,或者软件对连接的数据库系统故障的“合理”反应。 典型的错误处理任务需要由架构和开发团队解决,包括: • 错误情况的识别 • 对可预见错误定义适当的反应,包括 o 分类为类别和严重级别 o 区分功能错误和技术错误 • 尽量减少错误的影响 • 使错误原因的诊断更容易 - 例如,使用软件系统报告: o 出了什么问题? o 在哪里发生的? o 为什么出错了? • 通过软件系统进行错误预防,例如: o 可识别风险的早期预警 o 允许处理公差 • 定义错误处理的技术,例如: o C 函数调用返回状态码。 o Java 异常返回包含上述信息的错误描述。
作为软件架构师,您的(也)任务是确保端到端的错误处理成为软件系统的一部分,因为仅在“良好情况”下工作的程序不适合实际使用。
4.4.3 安全性
在软件架构中,另一个典型的横切关注点是安全性——在现实的软件项目中,合适的横切概念在这个主题上往往处理得太迟。 安全性是一个特别广泛的主题,因为它或多或少会影响整个软件应用程序。它从用户界面开始(例如,用户登录和防止脚本攻击),贯穿整个代码(例如,防止缓冲区溢出攻击),一直延伸到数据库及其用户,他们应该只被授予特定的访问权限。这只是众多存在的例子中的一部分。 除了软件,还必须采取组织措施——例如,定义必须与管理协调的用户组和角色,规划定期的安全审计,在涉及敏感个人数据的情况下让员工代表参与等等。 更一般地说,需要解决的一组最低的安全问题是: • 认证 o 确定发送者的身份 • 授权 o 根据用户的身份授予用户权限 • 完整性 o 对操纵受保护数据的识别 • 保密 o 传输、发送和存储数据,使其不能被未授权方访问 • 不可否认性 o 接收的消息不能被发送者否认 • 可用性 o 采取措施应对不可预见或故意造成的系统故障。
Last updated