如果您想在软件工程师的职业中进一步发展,您必须掌握系统设计。 即使您刚刚开始编码,开始学习系统设计也是一个好主意。
在您职业生涯的早期,您将在很大程度上测试您的编码能力。 我们将在这篇文章中了解系统设计的概念、为什么要研究它、在整个系统设计过程中执行的主要职责、什么是系统设计策略等等。
让我们开始。
什么是系统设计?
定义系统各个方面的过程,例如其体系结构、模块和组件,以及它们的各种接口和流经它的数据,称为系统设计。
它旨在通过创建一个合乎逻辑的高效系统来满足公司或组织的特定目标和要求。 正确的设计理念和方法为应对程序复杂性和可扩展性提供了路线图。
系统设计策略师和经验丰富的软件工程师的任务是创建这个 plan 在适当的指导下。
它更多的是关于系统分析、架构模式、API、设计模式以及将它们粘合在一起,而不是关于编码。 由于您的应用程序可以承受架构负载,因此根据应用程序的要求充分设计您的系统可以消除不必要的费用和维护工作,并为您的最终用户提供更好的体验。
系统设计的两个基本策略是什么?
最好的系统设计策略总是由系统的要求决定的。 好的系统策略会根据您是使用现有系统还是从头开始而改变。
除了基本上融合了这两种策略的混合方法之外,还有两种主要的系统设计策略。 让我们来看看这两种系统设计方法。
1. 自下而上的策略
在这种系统设计技术中,首先设计子系统和最低级别的组件(甚至是子组件)。 如果事先设计好这些组件,就可以更容易、更有效地开发更高级别的子系统和更大的组件。 这节省了侦察和故障排除的时间。
重复将较低级别的组件组合成更大集合的过程,直到整个系统由单个组件组成。 这种方法还使通用解决方案和低级实现更具可重用性。 当抽象级别期望很高时,这种方法是理想的。
但是,由于这种方法没有与问题的结构相结合,因此很难用它开发出高质量的解决方案。 由于高度抽象,也可以使用最有效的多余函数。
2. 自上而下的策略
这种设计风格优先将系统分解为子系统和组件。 自下而上的策略不像自下而上的技术那样自下而上地构建,而是首先将整个系统概念化,然后再将其分解为子系统。
然后创建这些子系统并将其分成更小的子系统和满足更大系统需求的组件集。 这种方法不是将这些子系统视为单独的事物,而是将整个系统视为一个对象。
当系统最终根据其特征进行构想和分离时,子系统被视为独立的实体。 然后将组件组织在分层框架中,直到设计出系统的最低级别。 此方法定义明确,不鼓励抽象。
自上而下的技术是高质量的典型,因为设计过程不断定义子系统和组件,因为它们适合系统,从而产生一个高效、响应和有效的系统。
另一方面,这些解决方案不是通用的,不能被广泛使用。 这些系统还具有更复杂的设计并且更难以维护。
另一方面,混合设计技术将自顶向下方法的高质量特征与自底向上方法的可重用性和组织良好的结构相结合。 因此,大多数系统都是最成功的系统设计技术。
系统设计的各种子集是什么?
系统设计的子集如下:
1. 逻辑设计
它是系统数据流、输入和输出的抽象。 它以满足用户要求的方式描述源、目标、数据存储库和数据流。 系统的逻辑设计在创建时考虑了一定程度的细节,这实际上解释了信息如何流入和流出系统。 使用了 ER 和数据流程图。
2. 物理设计
物理设计与系统的实际输入和输出过程相关联。 物理设计的主要目标是控制如何检查、处理和显示数据。 它主要侧重于用户的界面设计、流程设计和数据设计。
3.建筑设计
它也被称为高级设计,因为它强调系统架构设计。 它讨论了系统的性质和起源。
4. 详细设计
它以建筑设计为基础,强调每个学科的成长。
在系统设计过程中执行的主要任务是什么?
1. 创建设计定义
- 计划并确定将用于构建和实施系统组件和物理接口的技术。
- 确定在整个系统运行阶段哪些技术和系统组件有过时或演变的危险。 为最终的更换做好准备。
- 记录设计定义方法,包括完成设计所需的任何支持系统、商品或服务。
2.确定设计属性
- 定义与架构特性相关的设计标准,并确保它们可以被实施。
- 定义在系统架构阶段未建立的任何接口,或者随着设计细节变得更加详细而需要定义的接口。
- 定义并记录每个系统元素的设计属性。
3. 考虑获取组件的选项
- 检查您的设计备选方案。
- 选择最佳选项。
- 如果决定开发系统元素,则将采用其余的设计定义和实施过程。 如果要购买或重复使用一个系统元素,可以采用获取方法来获取它。
4.组织设计
- 捕获并跟踪每个设计和架构决策背后的原因。
- 评估并保持对设计属性进展的控制。
为什么要学习系统设计?
已在大范围内取得多项突破 网络应用 在过去的二十年中。 这些创新改变了我们对软件开发的看法。
Facebook、Instagram 和 Twitter 以及我们日常使用的其他应用程序和服务都是可扩展的系统。 由于全球数十亿人同时使用这些系统,因此必须构建它们来管理大量流量和数据。 系统设计在这里发挥作用。
您将需要理解系统设计思想以及如何将它们作为软件工程师应用。 在职业生涯早期学习系统设计可以帮助您更加自信地面对软件设计困难,并将设计理念应用到您的日常工作中。
随着您在职业生涯中的进步并开始为更高级别的角色进行面试,系统设计将成为您面试过程中更重要的元素。 因此,无论您的技能水平如何,系统设计都很重要。
系统设计的好处
- 它加快了程序。
- 它降低了设计的价格。
- 不一致性被消除。
- 它有几个资源。
- 它使客户的生活更轻松、更简单。
结论
这具有提高公司质量的优势,同时也提高了盈利能力。
由于产品和数据处理,功能系统提供最佳的质量控制以及较低的制造成本。 这是任何行业或领域的要求。
发表评论