架构师修炼-架构知识(部分)

转载 2013年12月05日 15:48:08

(说明:这些知识没有统一的标准,以下内容紧供参考,欢迎您能阅后改进)

一、 架构设计文档:

需求分析完成约80%的时候开始进行。

目的目标:架构应尽可能简化,架构文档应简单、简短,清晰而不杂乱,解决方案自然。

系统概述:给出一致的轮廓。

先定义上层的主要子系统,应该描述各子系统的任务,并提供每个子系统中各模块或对象类的的初步列表。


应该描述不同子系统间相互通信的方式,而一个良好的架构应该将子系统间的通信关系降到最低。


成功架构的一个重要特色,在于标明最可能变更的领域,应当列出程序中最可能变更的部分,说明架构的其他部分如何应变。


复用分析、外购:缩短软件开发周期、降低成本的有效方案未必是自行开发软件,可以对现有软件进行复用或进行外购。应考虑其对架构的影响。


除了系统组织的问题,架构应重点考虑对于细节全面影响的设计决策,深入这些决策领域:

外部软件接口(兼容性、通信方式、传递数据结构)、用户接口(用户接口 和系统层次划分)、数据库组织和内容、非数据库信息、关键算法、内存管理(配置策略)、并行性、安全性、可移植性、网络多人操作、错误处理。


要保证需求的可追踪性,即保证每个需求功能都有相应模块去实现。


架构不能只依据静态的系统目标来设计,也应当考虑动态的开发过程,如人力资源的情况,进度要求的情况,开发环境的满足情况。架构必须支持阶段性规划,应该能 够提供阶段性规划中如何开发与完成的方式。


不应该依赖无法独立运行的子系统架构。


将系统各部分的、依赖关系找出来,形成一套开发计划。


建议参考架构设计文档(模板),取长补短。


二、 软件开发源代码组织:

0)版本管理:SVN,CVS。。。

1) 开发可管理性:便于人员分工(模块独立性、开发工作的负载均衡、进度安排优化、预防人员流动对开发的影响)、利于配置管理、大小的合理性与适度复杂性;
2) 可维护性:与运行可管理性不同;
3) 可扩充性:系统方案的升级、扩容、扩充性能;
4) 可移植性:不同客户端、应用服务器、数据库管理系统;
5) 需求的符合性:从源代码的组织结构看需求的符合型主要考虑针对用户需求可能的变化的软件代码及构架的最小冗余(同时又要使得系统具有一定的可扩展性)。

(每项详情请自行完善)



三、 程序运行设计:

1) 需求的符合性:正确性、完整性;功能性需求、非功能性需求;
2) 总体性能(内存管理、数据库组织和内容、非数据库信息、任务并行性、网络多人操作、关键算法、与网络、硬件和其他系统接口对性能的影响);
3) 运行可管理性:便于控制系统运行、监视系统状态、错误处理;模块间通信的简单性;与可维护性不同;
4) 与其他系统接口兼容性;
5) 与网络、硬件接口兼容性及性能;
6) 系统安全性;
7) 系统可靠性;
8) 业务流程的可调整性;
9) 业务信息的可调整性;
10) 使用方便性;
11) 架构样式的一致性;
注:运行时负载均衡可以从系统性能、系统可靠性方面考虑。

(每项详情请自行完善)


四、 软件架构有关的一些基本概念:

1、模块(module)
2、组件(component)
3、 模式(pattern):例如,架构模式、分析模式、设计模式和代码模式或实施模式。
4、架构模式(architectural pattern):表示软件系统的基本结构组织方案。它提供了一组预定义的子系统、指定它们的职责,并且包括用于组织其间关系的规则和指导。
5、 层(layer)
6、系统分层的几种常用方法:
1) 常用三层服务:用户层、业务逻辑层、数据层;
2) 多层结构的技术组成模型:表现层、中间层、数据层;
3) 网络系统常用三层结构:核心层、汇聚层和接入层;
4) RUP典型分层方法:应用层、专业业务层、中间件层、系统软件层;
5) 基于Java的B/S模式系统结构:浏览器端、服务器端、请求接收层、请求处理层;
6) 某六层结构:功能层(用户界面)、模块层、组装层(软件总线)、服务层(数据处理)、数据层、核心层;
7、 架构(Architecture)
8、架构的描述方式:“4+1”视图 (用例视图、设计视图、实现视图、过程视图、配置视图)是一个被广为使用的架构描述的模型;RUP过程的架构描述模板在“4+1”视图的基础上增加了可选的数据视图(从永久性数据存储方面来对系统进行说明);HP公司的软件描述模板也是基于“4+1”视图。
9、结构:软件架构是多种结构的体现,结构是系统架构从不同角度观察所产生的视图。就像建筑物的结构会随着观察动机和出发点的不同而有多种含义一样,软件架构也表现为多种结构。常见的软件结构 有:模块结构、逻辑或概念结构、进程或协调结构、物理结构、使用结构、调用结构、数据流、控制流、类结构等等。


五、 系统架构基础:

1,操作系统:。。。

2,数据库系统:。。。

3,网络基础知识:。。。

4,系统性能:。

(以上每一项都需要展开展开再展开。。。还要嵌套。。。)

成为一个Java的架构师要学习哪些知识?

成为一个Java的架构师要学习哪些知识? 既然java架构师,首先你要是一个高级java攻城尸,熟练使用各种框架,并知道它们实现的原理。jvm虚拟机原理、调优,懂得jvm能让你写出性能更好的代码...

软件架构师知识点1

  • 2017年11月13日 07:54
  • 966KB
  • 下载

架构师都要懂哪些知识

Web架构师究竟都要学些什么?具备哪些能力呢?先网上查查架构师的大概的定义,参见架构师修炼之道这篇文章,写的还不错,再查查公司招聘Web架构师的要求。 总结起来大概有下面几点技能要求: 一、 架...

软件架构师知识点3

  • 2017年11月13日 13:40
  • 256KB
  • 下载

史上最全IT架构师技术知识图谱

  • 2017年12月01日 10:38
  • 9.08MB
  • 下载

十四、成为一个Java的架构师要学习哪些知识?

作者:哈哈 链接:http://www.zhihu.com/question/29031276/answer/54631312 来源:知乎 著作权归作者所有,转载请联系作者获得授权。既然Java...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:架构师修炼-架构知识(部分)
举报原因:
原因补充:

(最多只允许输入30个字)