导图社区 嵌入式架构重构步骤
关于软件架构设计的详细流程和思考框架,主要围绕资源优化、重构目标、依赖关系分析、功能审查、性能评估以及架构重构步骤展开。适用于物联网嵌入式等领域针对已有代码进行梳理和再次重构。
提示: 本内容由社区用户上传并分享。平台不对内容的真实性、合法性、知识产权归属及是否侵害第三方权利进行事前审核或保证。本内容可能包含受版权保护的图片、字体或其他第三方素材,使用前请自行确认授权范围。
项目复盘(Post-mortem Analysis 或 Project Retrospective)是对已完成项目的回顾和分析,旨在总结经验教训、发现问题根源、提炼成功经验,并为未来的项目提供改进方案
社区模板帮助中心,点此进入>>
互联网9大思维
组织架构-单商户商城webAPP 思维导图。
域控上线
python思维导图
css
CSS
计算机操作系统思维导图
计算机组成原理
IMX6UL(A7)
考试学情分析系统
架构重构步骤
明确重构目标
性能提升: 是否旨在提高系统的性能?
资源优化
是否旨在优化资源使用,减少不必要开销?
代码质量和可维护性: 是否希望通过重构改善代码质量和可维护性?
扩展性: 是否需要提高系统的可扩展性?
安全性和可靠性: 是否需要加强系统的安全性和可靠性?
评估现有架构
依赖关系
分析各个模块之间的依赖关系
系统分析
对现有系统进行全面分析,了解当前架构的优点和缺点
现状评估
功能审查:详细了解现有系统的所有功能,并记录下来。这有助于识别哪些功能是核心的、哪些是辅助的,以及哪些功能可能已经过时或不再适用
性能评估:评估当前系统的性能表现,包括处理速度、响应时间、资源利用率等。
可靠性分析:检查系统的稳定性和可靠性,找出频繁出现的问题和故障点。
安全性评估:评估系统的安全性,包括数据保护、访问控制、网络通信安全等方面。
问题识别
瓶颈分析:识别系统中的性能瓶颈,如CPU占用过高、内存不足等问题。
代码质量问题:检查代码的质量,包括编码规范、注释、复杂性等方面。
设计缺陷:发现设计上的不足之处,如模块划分不合理、依赖关系混乱等。
技术债务:识别技术债务,包括过时的库、未更新的依赖等。
需求分析
需求预测:根据业务发展和技术进步,预测未来的需求变化。
功能增强:确定需要新增或改进的功能。
性能提升:设定新的性能目标,如更快的响应时间、更低的功耗等。
安全性加强:提出新的安全要求,如更强的数据加密、更严格的访问控制等。
架构设计
模块化设计:重新设计系统架构,使其更加模块化。每个模块应具有高内聚、低耦合的特点。
层次化设计:将系统分为不同的层次,如硬件层、驱动层、中间件层、应用层等。
服务化设计:考虑将部分功能模块化为服务,以提高复用性和可维护性。
可扩展性设计:设计易于扩展的架构,以便在未来增加新功能或更换组件。
制定重构计划
逐步重构
采用增量的方式进行重构,而不是一次性完成
风险评估
评估每一步骤的风险,并制定相应的应对措施
测试计划
制定详细的测试计划,以确保重构后的系统仍然满足原有的功能需求
模块化重构设计
确定模块边界
功能划分
根据系统功能的不同,将系统划分为多个模块
硬件资源分配
考虑硬件资源的分配,例如 CPU、内存、外设等
数据流
分析数据流,确定哪些功能需要紧密耦合,哪些可以独立
性能指标
分析模块应该达到的性能指标
设计模块接口
API 设计
设计清晰的 API,使模块之间能够通过接口相互通信
数据封装
确保每个模块的数据和操作对外部是隐藏的,只暴露必要的接口
输入输出
明确每个模块的输入输出,确保数据的一致性和准确性
低耦合,高内聚
降低耦合度
提高功能内聚和代码内聚
设计模式
工厂模式
用于创建对象的实例,而不暴露创建逻辑
单例模式
保证一个类只有一个实例,并提供一个全局访问点
观察者模式
当对象的状态改变时通知所有依赖的对象
适配器模式
使原本由于接口不兼容而不能一起工作的那些类可以一起工作
代理模式
为另一个对象提供一个代理以控制对这个对象的访问
设计原则
SRP 单一职责原则
每个函数或者功能块只有一个职责,只有一个原因会使其改变
OCP 开放一封闭原则
对于扩展是开放的,对于修改是封闭的
DIP 依赖倒置原则
高层模块和低层模块应该依赖中间抽象层(即接口),细节应该依赖于抽象。
ISP 接口隔离原则
接口尽量细化,同时方法尽量少,不要试图去建立功能强大接口供所有依赖它的接口去调用
LKP 最少知道原则
一个子模块应该与其它模块保持最少的了解