写点什么

软件架构的十大错误

  • 2007-10-17
  • 本文字数:1109 字

    阅读完需:约 4 分钟

IASA 成员 Eoin Woods 发表了一篇文章讲述他所认为的十大软件架构错误——常常要碰得头破血流才会得到的一些教训。这十大错误简要总结如下:

  1. 不能界定项目范围。“在这种情况发生时,一个简单的出差登记系统结果变成内建了完整的花费报销管理系统,项目费用、时间跨度和质量都留下不可避免的烂摊子……除了简单的登录真的不需要安全措施了?用户登录系统后真的不能够执行任何系统操作吗?”
  2. 网撒得不够宽。“我们都曾经犯过的一个错误是,只关注系统所有利益相关者中的一两方——通常受让人(为系统出钱的人)和最终用户得到了全部的关注。”
  3. 只关注功能。“……除非系统表现出了全面的高质量(诸如性能、安全、可维护性等等),否则不太可能成功。”
  4. 用方框和线条来描述。“[一个无所不包的] 巨大的 Visio 图无法成为有效的架构描述,有两个原因:第一,它试图在单一表示中呈现太多信息;第二,没人真正清楚地知道你画的各种符号到底表示什么意思。”
  5. 忘了需要培养的过程。“在建造系统的时候常常需要小心的事物包括:开发者和测试者没法真正理解设计,他们不热衷或者没时间学习技术,以及还没有很好的工具支持的新技术,或者新技术会强迫人们以新的不熟悉的方式工作。”
  6. 平台定义不精确。“光用‘需要 Unix 和 Oracle’来描述你的平台是不足够的。你需要精确地说明每一部分具体的版本和配置,才能保证得到你所需的平台。不然如果有人好心为平台的某一部分升级了一个库,就可能导致某些东西停止运作。精确定义平台你才能在部署中避免这样的情形。”
  7. 对性能和伸缩能力想当然。“及早开始考虑性能和伸缩性,构建性能模型尝试预测关键的性能指标并定位瓶颈,在设计逐渐成型的同时投入到一些实际的验证性工作中去。这会帮助你提高对设计中不存在严重性能和伸缩性缺陷的信心。”
  8. 自己发明安全技术。“多年来许多系统所犯的一个错误是试图加入自己发明的安全技术来提高系统安全性。比如定制的加密算法,开发者自己编写的审核系统,甚至完全 DIY 的访问控制系统。自家开发的安全方案基本上都是不明智的。虽然很多人都以为自己可以马上搞出一些聪明的安全技术,但通常都只是自作聪明。”
  9. 没有灾难恢复。“要想得到资源来实现系统的灾难恢复机制,其关键在于在若干真实的场景中,具体衡量系统不可用所导致的损失。如果你还能估算这些场景发生的概率,你就可以用这两组数据去说服人们灾难恢复的重要性,并获得合理的预算去实现它。”
  10. 没有撤退计划。“确保无论在系统部署或升级的过程中发生任何事,你都有一份书面的、经过审查的、一致同意的撤退计划,允许你将整个环境恢复到部署之前的状态。”

Eoin Woods 是 UBS Investment Bank 的软件及企业架构师。

查看英文原文: Top Ten Software Architecture Mistakes

2007-10-17 10:491476
用户头像

发布了 225 篇内容, 共 60.6 次阅读, 收获喜欢 49 次。

关注

评论

发布
暂无评论
发现更多内容

从零开始搭建vue-cli项目

小恺

6月月更

LabVIEW控制Arduino采集LM35温度传感器数值(基础篇—12)

不脱发的程序猿

单片机 LabVIEW Arduino LIAT 采集LM35温度传感器数值

几经波折,InfluxDB的TSDB C位还能做多久?

CnosDB

IoT 时序数据库 开源社区 CnosDB infra

idea社区版和商业版有什么区别

源字节1号

软件开发

ChainOfResponsibilityPattern-责任链模式

梁歪歪 ♚

设计模式

盘点校招面试 HR 可能会问到的问题

宇宙之一粟

面试 校招 6月月更

Java27岁了——一次争执引起的Java内卷生涯

写代码两年半

javase Java EE 6月月更

架构训练 模块七

小马

#架构训练营

MPLS协议简述

穿过生命散发芬芳

6月月更 MPLS

云原生训练营大作业

jjn0703

当我们进行性能优化,我们在优化什么(LightHouse优化实操)

刘悦的技术博客

性能优化 前端 优化 性能优化手册

如何快速上手AIRIOT?

AIRIOT

物联网 低代码平台

【动态规划入门篇】只需三步解决它

知心宝贝

算法 前端 动态规划 Leet Code 6月月更

王者荣耀商城异地多活架构设计

大眼喵

「架构实战营」

程序员们,快把这款AI“魔法”做到手机相机里,求求了

最新动态

中国标准走进国际视野,首个零信任国际标准的诞生往事

脑极体

LabVIEW控制Arduino采集热敏电阻温度数值(基础篇—13)

不脱发的程序猿

单片机 LabVIEW Arduino LIAT 采集热敏电阻温度数值

高性能API网关Kong介绍

天翼云开发者社区

IteratorPattern-迭代器模式

梁歪歪 ♚

设计模式

开始使用DOCKER COMPOSE V2

mengzyou

Docker DevOps Docker-compose

SPDK对接Ceph性能优化

天翼云开发者社区

开发工具

后端解构复习(一)

卢卡多多

技术栈 6月月更

【Go实现】实践GoF的23种设计模式:原型模式

元闰子

Go 设计模式 原型模式

企业知识管理体系怎么搭建和运营?

小炮

模块七作业: 王者荣耀商城异地多活架构设计

凯博无线

InfoQ 极客传媒 15 周年庆征文 | 轻量级状态机COLA StateMachine保姆级入门教程

Zhendong

Java 架构设计 状态机 InfoQ极客传媒15周年庆

Vue框架学习笔记 每天学习----四

恒山其若陋兮

6月月更

CommandPattern-命令模式

梁歪歪 ♚

设计模式

通用池化框架GenericObjectPool性能测试

FunTester

LabVIEW控制Arduino采集光敏电阻数值(基础篇—14)

不脱发的程序猿

单片机 LabVIEW Arduino LIAT 采集光敏电阻数值

利用Python实现自动操作Excel文件

弑着去忘记う

软件架构的十大错误_架构_Niclas Nilsson_InfoQ精选文章