【系统架构设计(一)】系统工程与信息系统基础上:系统工程基础概念
文章目录
- 一、系统工程的基本概念
- 二、系统工程方法论
- 1、霍尔三维结构:硬科学
- 2、切克兰德方法:软科学思维
- 3、其他
- 三、系统工程生命周期管理
- 1、生命周期阶段划分
- 2、生命周期方法论
系统工程与信息系统基础为复杂系统设计提供从思维方法到具体技术的全方位指导,帮助架构师从整体角度理解和解决复杂问题,选择合适的设计方法,制定有效的实施策略,最终构建出高质量、可维护、可扩展的信息系统。
必须掌握的核心概念:
- 系统工程的定义、理念、手段与目标
- 霍尔三维结构的逻辑维、时间维、知识维
- 切克兰德方法的7个步骤
- 系统工程生命周期的7个阶段
- 信息系统生命周期的4个阶段
- 信息系统建设的8个原则
- 各种开发方法的特点和应用场景
- 信息系统分类体系(TPS、MIS、DSS、ES、OAS、ERP)
- 电子政务的6种关系模式
重点理解的应用场景:
- 系统工程方法在软件架构设计中的应用
- 不同开发方法的适用条件和选择策略
- 各类信息系统的架构特点和设计原则
- 电子政务系统的集成和互操作性
一、系统工程的基本概念
系统工程是一种组织管理技术,也是为实现系统目的,对系统组成要素、组织结构、信息流、控制机构进行分析研究的科学方法。其核心理念是从整体和系统观念出发,追求"整体最优"。
系统工程的关键特征体现在三个方面:
- 整体性思维:强调系统各组成部分的相互关系和整体功能
- 科学方法论:借助计算机等工具,对系统结构、元素等进行分析
- 决策支持:属于现代科学决策方法,为复杂问题提供解决方案
这种系统思维在软件架构设计中的实际应用体现在微服务架构的拆分原则、分布式系统的容错设计和可扩展架构的演进策略等方面。
二、系统工程方法论
1、霍尔三维结构:硬科学
霍尔三维结构是"硬科学"方法论的代表,将系统工程分为逻辑维、时间维和知识维三个相互关联的维度。
- 逻辑维:关注解决问题的逻辑过程,包括问题定义、目标确定、方案设计、系统分析、优化、决策、实施七个步骤。这种逻辑化的处理方式确保了问题解决的系统性和完整性,避免了盲目性和随意性。
- 时间维:对应系统生命周期的各个阶段,从探索性研究到系统退役,每个阶段都有明确的任务和交付物。
- 知识维:涵盖了数学、物理、计算机、管理等各领域的专业知识,为系统工程的实施提供了知识基础。
因此,霍尔三维结构为架构师提供了一个完整的思维框架,无论是设计大型分布式系统还是优化现有架构,都可以按照这个框架进行系统性的分析和设计。
2、切克兰德方法:软科学思维
切克兰德方法是"软科学"方法论的代表,其核心不是"最优化",而是"比较"和"探寻"。这种理念的转变反映了对复杂系统本质的深刻理解:在现实世界中,很多问题并不存在唯一的最优解,而是需要在多个可能的解决方案中进行比较和选择。
切克兰德方法的七个步骤包括认识问题、根底定义、建立概念模型、比较及探寻、选择、设计与实施、评估与反馈。这种循环迭代的过程强调了问题解决的动态性和适应性,特别适合处理那些需求不明确、环境变化频繁的复杂系统问题。
更重要的是,这种方法强调"比较"和"探寻"的过程,这意味着在系统设计过程中,架构师需要保持开放的心态,不断探索新的可能性,而不是固守某种预设的解决方案。这种思维方式对于现代软件架构设计具有重要的指导意义。
3、其他
-
并行工程方法强调"制造过程"与"支持过程"并行,注重三个方面:产品设计开发期间最快速度按质完成、各项工作问题协调解决、适当的信息系统工具支持。
-
综合集成法由钱学森命名,区分【简单系统】和【巨系统】,遵循四原则:整体论原则、相互联系原则、有序性原则、动态原则。
-
WSR系统方法的实践准则是【懂物理】-【明事理】-【通人理】,强调从技术、管理、人文三个维度理解系统。
三、系统工程生命周期管理
1、生命周期阶段划分
系统工程的生命周期包括七个关键阶段:
- 探索性研究:对系统相关的概念、技术可行性等进行初步调研,探索新想法、新需求
- 概念阶段:明确系统目标、范围、功能等基本概念,形成系统的初步架构和设计思路
- 开发阶段:依据概念阶段确定的方案,进行详细设计、编码、模块开发等工作
- 生产阶段:对开发完成的系统进行规模化生产、集成,确保系统的质量和性能
- 使用阶段:系统交付给用户后,用户在实际环境中使用系统,实现系统预定功能
- 保障阶段:在系统使用过程中,提供维护、技术支持、故障排除等服务
- 退役阶段:当系统不再满足业务需求时,进行数据迁移、系统下线、资产处置等工作
2、生命周期方法论
计划驱动方法:遵循线性顺序,先确定需求,再依次进行设计、构建、测试和部署。这种方法适用于需求明确、稳定的项目,优点是过程可控、可预测性强,缺点是灵活性差,需求变更成本高。
渐进迭代式开发:通过多次迭代逐步完善系统,每次迭代都包含需求分析、设计、开发、测试等环节,更适应需求不确定、变化频繁的项目。
精益开发:强调消除浪费、快速响应客户需求,以最小的成本实现最大的价值,注重知识共享和团队协作。
敏捷开发:强调团队协作、客户参与、快速响应变化,以短周期迭代的方式开发软件,通过频繁沟通和反馈及时调整开发方向。