公司OA产品到现在发展有3年多了,一直有人在说系统很烂,不稳定,性能差,可用性不好。这些结果的原因是什么呢?
先看下现状,存在的问题:
1、 系统不稳定,偶尔出现无规律的错误,中断类的。分析这些日志,属于底层、难定位的多。(没有引起足够的重视去分析?)
2、 速度慢,在部分子系统中操作时,包含的业务流程太多,要等待很长时间,而且等待过程中没有与用户的交互。
3、 可用性的问题。
做了三年,这三个问题一直存在,没有根本解决。在新系统中也出现这类问题,由此导致形成循环,并且维护成本一路攀升,需要的维护人员越来越多,而且越来越累。
个人分析,主要是架构环节的缺失,缺少对系统的整体约束、规划、前瞻。虽然有架构这个岗位,但没有起到架构的职责和作用。
找了些资料,了解下架构方面的知识。对于我来说,主要想弄清楚以下这些问题:
1、 什么是架构
2、 怎样来进行架构,架构工作包含哪些内容
3、 如何从开发到架构转变
在Simon Brown的文章中提到,架构是一个职责,不是头衔。软件架构师指导团队的架构和设计,通过一个全局的观点、宏观的视角来表达软件系统作为一个整体如何工作。
一个人拥有知识,但是却没有能力清晰的表达自己,这简单地和他没有任何知识一样,所以架构师必须要找到清晰地表达自己想法的方式。
进行架构设计时,要关注如下方面:
1、 管理非功能性需求。如性能、扩展性需求等。
2、 架构定义。将结构、方针、原则和领导力引入技术层面,个人理解为定义软件的主体结构及约束。
3、 技术选型。
4、 架构评估。组织对架构的评审,通过‘测试’保证架构方案的健壮性。
5、 协作。保证与所在环境的集成。
如何体现这些内容?主要是通过一系列的视图实现。如逻辑视图、开发视图、部署视图、场景视图、进程视图、数据视图、实现视图等。结合部门现状,觉得可以采用以下几个视图:
1、 逻辑视图:定义系统功能元素,以及他们的接口,职责,交互。可用于开发组织划分、成本/进度评估的依据。
2、 开发视图:描述系统的层,包等。系统通用服务、类及接口。用于描述系统如何开发实现。
3、 数据视图:系统核心实体及相应的存储方式,系统核心的数据流。
4、 用例视图:概括架构上的重要场景,阐明架构的广度和众多架构元素的运行方式,供设计和开发人员参考。
以前总觉得进行架构设计、写架构文档是件很高深的事情。仔细的分析这几类视图的作用和目的,从现存的问题出发分析,还是很清晰的。从开发到架构,是一个渐进的过程,从小处着手实施架构的工作,积累持续的,跨不同领域的技能、知识和经验,提升个人层次和视角。
分享到:
相关推荐
从提供的内容来看,系统架构师的学习笔记包括了多个关键章节,每个章节都对应着不同方面的知识,覆盖了从基础的计算机知识到软件开发流程、软件架构设计以及具体技术的学习和应用。特别地,还涵盖了系统架构师在团队...
他从一个对软件测试一无所知的新手,成长为一位在测试领域拥有深厚理论功底和丰富实践经验的架构师,这其中不仅有个人的勤奋和努力,也离不开正确的方法和良好的学习环境。小艾的成长故事,也激励着每一位测试工作者...
在开源社区中,封装一套属于自己的PHP开发基础架构,不仅可以满足个人或团队在项目开发中的特殊需求,同时也可以作为学习优秀实践和提升技术水平的一种方式。本文旨在介绍一个由个人或团队自主封装的PHP开发基础架构...
CATIA CAA 架构开发学习 CATIA CAA 是一款基于模型驱动的架构开发平台,由 Dassault Systemes 开发,旨在提供一个通用的开发环境,用于开发基于 CATIA 的应用程序。CAA 架构的核心是 MVC 模式,即 Model-View-...
书中首先介绍了构建单体应用模型,展示了如何从零开始开发一个模块化的应用,比如一个打车应用,该应用的核心由业务逻辑模块组成,周围环绕着与外部交互的适配器,如数据库访问、消息组件和Web组件。 单体应用在...
开发工程师转型成为架构师是一个系统性且复杂的过程,涉及到技能的提升、思维方式的转变以及实践经验的积累。在转型的过程中,开发工程师需要关注以下几个关键的知识点和技能领域: 1. **系统架构与系统设计**:...
《深入理解Nginx模块开发与架构解析》第二版是一本专为Nginx开发者和运维人员准备的深度学习资料。这本书旨在帮助读者全面掌握Nginx的核心原理、模块开发及系统架构,从而更好地利用Nginx进行高性能的Web服务构建。 ...
从选择适合的架构模式到遵循设计原则,再到利用特定的组件和实施高效的开发流程,每个环节都对最终系统的质量和性能有着深远影响。通过对这四章内容的学习,读者将能全面了解并掌握企业级应用软件架构开发的关键技术...
《深入理解Nginx模块开发与架构解析(第2版)》是一本专注于Nginx技术的专业书籍,针对Nginx的内部工作机制和模块开发进行了深入的探讨。本书旨在帮助读者掌握Nginx的核心概念、架构设计以及如何进行模块开发,从而...
2. Struts的生命周期:了解请求从进入Dispatcher Servlet到返回响应的过程。 3. Action和ActionForm的编写:学习如何创建自定义Action类来处理业务逻辑,以及如何定义ActionForm来封装表单数据。 4. 配置文件的使用...
通过学习“Jetpack架构组件从入门到精通.pdf”,开发者将能够有效地组织代码,提升应用性能,同时利用现代Android开发的最佳实践。这份资源涵盖了从基础概念到高级技巧的广泛内容,对于希望提升Android开发技能的...
系统架构设计师的学习计划涉及到多个知识点和技能,以下是详细的解释和介绍: 首先,学习计划强调对《软件体系结构原理与实践(第2版)》这本书的理解和掌握,这是系统架构设计师知识体系中的核心内容。书中涉及的...
冲击顶级Python架构师-Python超级全栈架构师开发课程,是一套系统化非常强的Python实战课程,课程数目超过了400多集,课程帮助同学们从零基础开始学习Python基础课程,Python高级进阶课程,Python的进程和线程,数据...
《系统架构:复杂系统的产品设计与开发》是2016年出版的一本关于系统架构设计的重要著作。这本书深入探讨了在构建大型、复杂系统时所面临的挑战和解决方案,为IT行业的专业人士提供了宝贵的指导。其PPT形式的资料集...
首先,云计算机器学习(Cloud Machine Learning)被定义为一种基于云计算架构的机器学习工作模式,它利用云端的计算资源进行模型训练和预测。与传统机器学习相比,云机器学习具有资源隔离、资源共享、集群管理、自动...
根据文件标题《从入职到架构师——嵌入式软件成长之路》以及描述,我们可以提炼出几个关键的知识点和经验教训,这些内容对于嵌入式软件行业的新入职者、资深开发人员,以及那些希望成为技术架构师的开发者们来说都是...
《测试架构师修炼之道:从测试工程师到测试架构师1》提供了一条系统性学习的路径,旨在帮助测试工程师在测试领域中不断进步,实现个人职业发展。书中不仅介绍了各种模型模板和checklist,还提供了许多实际工作中可以...
"开发架构选型"通常涉及到多个方面,包括但不限于技术栈的选择、设计模式的应用、服务拆分策略以及框架的选取。这篇博客文章可能是关于作者在特定项目中如何进行架构决策的经验分享。 在“源码”和“工具”的标签下...