在软件开发中,您可能会在许多文章和书籍中读到,设计应该是重中之重。一个好的设计可以解决很多问题。该设计将为开发人员带来更多清晰度。它将提供有关确切要求的详细信息。在本文中,我将讨论自上而下的设计方法。我将通过电子学习的例子逐步解释。
一个问题必须从多个层面来看待。它们中的每一种都有其优点。软件设计或开发的不同级别如下
从大的角度来看,这是一种商业目标。重要的是回到业务目标。最终,我们所做的一切都是为了更好的商业目标。因此它将获得更高的优先级。您做出的所有决策都必须映射回业务目标。为了理解自上而下的设计,让我们举一个例子并进行深入研究。
我有电子学习领域的背景。对我来说,设计过程很容易产生共鸣。在电子学习应用程序中,为学生生成进度报告可能是一个需求主题。
很公平,但是这些学生需要什么样的进度报告。它将带您进入新的水平。
报告类型将启动您定义模块。
在更广泛的层面上定义报告类型构成了模块的定义。这些模块被标识为
一旦定义了更广泛的模块,我们就必须为这些已识别的模块定义子模块
让我们讨论这些模块并确定可能的子模块。
一旦我们确定了子模块,就用功能列表详细说明它。一些例子是:
这些功能也可以分解为子功能。
对于这些类型的报告,我们需要识别业务实体。在这种情况下,业务实体将是:
这些实体将有助于设计API。您的 API 应该基于域的实体进行设计。
它们还将帮助我们识别系统和子系统。例如,在上面的列表中,用户、课程、考试、成绩都是各自不同的系统。报告模块必须与所有这些系统交互才能获取报告所需的数据。
一旦我们定义了上面解释的所有步骤,就可以更深入地挖掘功能和子功能了。
我们必须为每个功能或子功能制定一个业务规则列表。它必须列出作为功能的一部分必须实现的业务规则的确切列表。
它将成为开发人员和测试人员执行任务的清单。开发人员将确保针对该用例实施所有这些业务规则。它将确保不存在与业务规则相关的错误,这是开发中最重要的部分之一。测试人员将考虑用户案例和业务规则来设计测试用例。
一旦我们在自上而下的设计的帮助下确定并深入研究了功能需求。在每个阶段考虑安全性和性能等非功能性需求也很重要。它将确保设计的系统在更高负载或所需负载下执行且安全。
一个例子是为学生生成报告。了解课程中的学生人数很重要。该系统将能够生成课程中学生人数的报告。在自学的情况下,学生可以自行注册课程。
用户总数可以增长到 3000 到 5000 人。这会给您带来非功能性需求。它将帮助您确定必须采取哪些措施来支持如此大的期望。必须在设计阶段对其进行处理,以便正确实施并按预期执行。
用户个人身份信息的要求应从另一个系统获取。同样,安全性和性能的非功能性需求也在范围内。
设计一个支持所有这些情况的系统需要足够的时间。我们必须将这些非功能性需求识别为自上而下设计的一部分。它还将帮助您做出正确的估计。