软件架构应该做些什么

简介:

《代码大全》第三章读书笔记

 

软件架构是在软件需求出来之后,软件构建开始之前的工作

 

架构师应该确定的事情有:

1 程序组织

架构应该定义程序中的主要构造块。 
根据程序规模不同,各个构造块可能是单个类,也可能是由多个类组成的系统。每个构造块实现一个高层功能。并且每个需求都至少有一个构造块覆盖它。

定义各个构造块之间的通信规则和依赖规则

 

2 主要的类

架构应该详细定义或写出所用的主要的类。并指出该类如何与其他类交互。

架构不需要对所有类进行说明,使用82法则:对构成系统80%功能的20%类进行说明

 

3 数据设计

架构应该说明清楚用到的数据表的设计,并且描述为何做出这样的选择

 

4 业务规则

对特定的业务规则(比如:客户信息的更新时间不能超过30秒)要有架构方面的描述(比如30秒内对客户端进行信息同步)

 

5 用户界面设计

架构应该有详细的用户界面,好的用户界面直接关系到功能的实现和软件的最终效果

 

6 资源管理

架构应该对稀缺资源有管理计划。比如数据库连接,线程,句柄等的使用。有可能需要设计一个“资源管理器”的模块

 

7 安全性

架构应该描述用户据输入数据,cookie,配置文件等的安全性说明

 

8性能

应该根据需求文档中对性能的描述来提供估计的性能数据,并且说明为什么架构师相信能达到性能目的。或者为什么有的性能指标无法达到

 

9 可伸缩性

架构应该说明系统如何应对以后用户数量,服务器数量,网络节点数量,数据库记录数,数据库记录长度,交易量等增长的需求。

 

10 互用性

如果系统与其他软件或硬件有共享资源,架构应该说明如何完成这项功能

 

11 国际化/本地化

系统式是否支持国际化,如何在与用户交互的模块中实现国际化

 

12 输入输出

架构应该详细定义读取策略

 

13 错误处理

有人估计程序中高达90%的代码是用来处理异常和错误的,意味只有10%的代码是用来处理常规情况的。

需要考虑的问题包括:

错误处理是进行纠正还是只进行检测

错误检测是主动还是被动

程序如何传播错误,是立刻丢弃还是通知一个地方

错误处理有什么约定

如何处理异常,什么时候能抛出异常,什么地方log,什么地方捕获

在什么地方处理错误,是传递到专门处理错误的地方还是沿着函数链往上传递错误

每个类的输入数据额有效性方面如何负责

是希望用运行环境内建的错误处理机制还是自定义一套机制

 

14 容错性

容错是增强系统可靠性的技术,如果出现了错误是转入“部分运转”还是“功能退化”?

 

15 架构的可行性

架构师应该论证自己这个系统设计的可行性

 

16过度工程

即健壮性。架构应该指出哪些类哪些模块需要进行过度工程(健壮性测试),哪些类或模块只需要做出最简单的工作性能

 

17 关于买还是造

一些软件,开源代码,处理程序,是使用现货采购还是自己定制开发

 

18 关于复用

如果使用业界已经存在的软件,开源代码等资源,应该说明清楚如何对这些东西进行加工。

 

19 变更策略

架构应该清楚描述处理变更的策略。架构应该列出已经考虑过的可能会有变更的需求或者可能增强的功能。

并提供处理情况,比如使用版本号进行控制,或者将代码设计成可动态添加新数据

 

20 架构的总体质量

架构应该清楚描述其做的所有主要决策的动机

明确指出有风险的地方

 



本文转自轩脉刃博客园博客,原文链接:http://www.cnblogs.com/yjf512/archive/2011/09/15/2176908.html,如需转载请自行联系原作者

相关文章
|
2月前
|
前端开发 JavaScript API
前端的全栈之路Meteor篇(完):关于前后端分离及与各框架的对比,浅析分离之下的潜在耦合
本文探讨了Meteor.js这一全栈JavaScript框架的特点与优势,特别是在前后端分离架构中的应用。Meteor通过共享数据结构和简化全栈开发流程,实现了前后端的紧密协作。文章还对比了其他全栈框架,如Next.js、Nuxt.js等,分析了各自的优势与适用场景,最后讨论了通过定义文档归属者和用户专有数据集简化后端构建及端云数据同步的方法。
|
3月前
|
设计模式 网络协议 网络架构
软件工程师,学会封装不香么
软件工程师,学会封装不香么
39 0
|
4月前
|
程序员
软件设计与架构复杂度问题之战略编程与战术编程的主要区别如何解决
软件设计与架构复杂度问题之战略编程与战术编程的主要区别如何解决
|
6月前
|
前端开发 JavaScript 测试技术
安卓应用开发中的架构模式解析
【6月更文挑战第21天】在软件开发领域,架构模式是设计优雅、高效、可维护应用程序的基石。本文深入探讨了安卓应用开发中常见的架构模式,包括MVC、MVP、MVVM和Clean Architecture,旨在为开发者提供一个清晰的指导,帮助他们选择最适合自己项目的架构风格。通过对比分析这些架构模式的特点、优势以及适用场景,文章揭示了如何根据项目需求和团队能力来采用恰当的架构模式,以实现代码的可维护性、可扩展性和可测试性。
77 7
|
设计模式 网络协议 Java
《移动互联网技术》 第十章 系统与通信: 掌握Android系统的分层架构设计思想和基于组件的设计模式
《移动互联网技术》 第十章 系统与通信: 掌握Android系统的分层架构设计思想和基于组件的设计模式
123 0
|
弹性计算 缓存 前端开发
前端(二)——软件设计的架构模式
前端(二)——软件设计的架构模式
135 0
|
前端开发 测试技术 数据库
软件架构编年史:整洁架构
软件架构编年史:整洁架构
软件架构编年史:整洁架构
|
设计模式 算法 前端开发
我明白了,谈一谈设计原则
死记是没有用的,正如教条主义式的生搬硬套没有多少作用,理解了才能举一反三、灵活运用。 我们可以再弄清楚十大原则:单一职责原则、开放封闭原则、里氏替换原则、接口隔离原则、依赖倒置原则、 迪米法特原则、组合聚合复用原则、不重复你自己、尽量保持简单、不过度设计。
117 0
我明白了,谈一谈设计原则
|
存储 SQL 架构师
软件架构可能不是你想象的那个样子
作为一门学科,软件架构需要做出彻底的改变。人们对它的看法受制于很多关于它需要解决什么问题以及它应该如何去解决这些问题的旧观念。
153 0
软件架构可能不是你想象的那个样子
下一篇
DataWorks