注册/登录
移动端
 
首页 > 留学资讯 > 澳洲留学 > 墨尔本大学留学生设计软件架构的5个步骤

墨尔本大学留学生设计软件架构的5个步骤

作者:海马 发布时间:2024-04-11 11:09

在没有计划的情况下,你不会想要做一个项目,软件架构设计也不例外。通过使这个过程更有效,你可以妥善考虑所有需求,并让利益相关者有机会提供他们的意见。通过使用技术视觉和谨慎的规划过程,你可以在开始原型之前勾勒出你的软件架构和设计。下面,我们阐述了墨尔本大学留学生设计软件架构的5个步骤。
墨尔本大学留学生设计软件架构的5个步骤

一、什么是软件架构设计?

软件架构设计利用编程知识来规划软件的高层设计,以便稍后添加细节,使软件团队能够勾勒出整体情况并开始准备原型。

通过遵循软件架构设计的技巧和最佳实践,软件开发人员可以思考他们的软件特性,并确定如何设计软件架构。

二、如何用5个步骤设计软件架构

1.清楚地了解你的需求

你开始的每一个设计都会有功能性和非功能性需求。这些需求指导你的软件架构,并允许你完成项目,使利益相关者满意。

如果从一开始就没有清楚地理解这些需求,你的团队就有可能迷失方向,强调错误的需求而忽略其他需求,或者使用过多的内部资源。

通过视觉方式获得更好的理解——按照以下步骤在智能图表平台上绘制出你的需求:

从高层次出发:首先以“直升机视角”勾勒出你的需求。思维导图是做这件事的有效方式。

绘制你的功能性需求:你可以使用动词来帮助你将名词聚集在一起。例如,“查看”和“编辑”这样的动词可以将“账户”或“个人资料”连接到功能区域的思维导图中。

考虑非功能性需求:在制作思维导图时,你可以记下非功能性需求以备后用。像“性能”这样的需求很重要,但可能太抽象了,无法放在思维导图上。

你的需求应该用来塑造你的工作范围并规划你的项目。

2.开始思考每个组件

面对现实吧——你的功能需求对项目的强大影响,一旦你绘制了需求地图,你的设计和技术选择可能已经决定了。

在过早考虑实现方式之前,你需要找出哪些需求对你的设计或项目计划构成重大挑战。在某些假设或选择下,一些需求实际上可能是不可能的。

从一个“完美的世界”开始:如果你能完美地创建它,你的设计会是什么样子?

考虑并记录你的需求的影响:与你的团队开始一个工作草稿,并逐渐发展它。首先,你需要看看你的需求对你的设计意味着什么——例如,你的利益相关者愿望清单中的个别项目可能互相矛盾,或者与其他功能和非功能性需求冲突。

稍后再设计最终架构:很可能在这个过程中,你的架构规划会发生变化,所以不要期望第一稿就像最终结果一样。

3.将架构划分为多个部分

自然地,随着你决定如何实现你的设计,你的架构设计会进入规划阶段。将你的架构划分为片段可以帮助你以一种能够为用户提供价值并适当规划你的开发资源的方式制定这个计划。

想象一下切蛋糕。大多数人是垂直切割蛋糕,穿过每一层。假设一整块蛋糕有糖霜、馅料,以及两到三层海绵蛋糕。垂直切片包含了一切。蛋糕也可以水平切割,分开各个层次。

同样,如果每个片段都是用来规划你的软件架构的故事,那么就有了层次——垂直切割蛋糕会创建围绕个别特性的故事,而水平切割则会显示单个组件。你的项目需要水平和垂直思维。

敏捷专注于垂直切片,让你的团队能够快速提供价值。这种方法可以让客户迅速了解产品进展,并让开发团队对每个特性背后的每一层都有反馈。一个垂直切片的软件架构示例是电子商务网站的结账流程。

在你的“结账”垂直蛋糕切片中,你可以看到存储结账信息的数据层,中间层 API,以及购物者看到的顶层用户界面。通过垂直切片,你可以决定要提供哪些功能,并选择迭代的部分。

通过绘制你的软件架构项目涉及的层次,你可以可视化整个项目以及每个层次如何影响其他层次。在规划过程中,拿出个别的敏捷蛋糕片段,并绘制它们之间的连接。

4.原型

始终创建原型。原型允许您快速失败并早期失败——提供快速反馈,让您发现您的概念验证。这是验证您的工作并检查您的假设以确保它们有效和彻底的重要部分。

在创建原型时,请记住,最初的几个迭代永远不会完美,而最终的迭代也不会完全完美。原型的优势之一是它不会被设定为成品,大多数人本能地进入原型过程中至少期望有些粗糙的地方。

充分利用原型阶段。这并不能取代测试,但却是您需要进行的测试的关键部分。

保持仔细的修订记录:当然,如果您不记录从原型中学到的东西,那么您就有重复错误的风险。写下所有内容——彻底记录您的设计决策以及您沿途所做的更改。

确保单一真相来源:您不希望多个更改和不同版本让您的进度受阻,因此建立一个专注于文档的单一来源的强大版本控制。

绘制原型图:您可以使用图表来帮助您管理原型的变化并可视化每个版本之间的差异。

5.确定和量化非功能性需求

除了功能性需求之外,您还将考虑非功能性需求。这些需求与功能性需求一样重要,因为它们定义了系统的特性。

非功能性需求通常是整个项目的高级质量需求,但并非总是如此。您的系统可能有非功能性需求,这些需求仅适用于软件架构的一部分。因此,您必须准备好将利益相关者纳入本地非功能性需求。例如,项目的特定垂直切片可能尤其引起客户服务团队的兴趣,该团队可能对这些非功能性需求有自己的期望。

然而,仅仅说您想要性能、可移植性或可扩展性是不够的。非功能性需求还必须量化。没有项目可以拥有绝对完美的性能:为了满足其他需求,必须明确规定和限制“性能”。

由于您的非功能性需求在塑造您的设计方面发挥作用,您不能避免定义它们。以下是您可能要考虑的其他要求:

性能:您的整个系统以及单个切片或层的性能如何。

可扩展性:与您的需求一起,您的系统以及您的需求未来扩展的潜力如何。

可移植性:您的数据可移植性以及您的系统组件的潜在可移植性,如果适用或必要。

可扩展性:考虑到您的系统和公司未来的增长,您的系统如何适应以及适应所需的工作量。

合规性:另一个重要因素——并且对您的整体项目设计产生重大影响。

绘制您的非功能性需求图可以帮助您的团队了解您如何量化它们,同时将特定需求放置在相关的上下文中。尽管您现在不必担心优化一切,但您确实需要考虑以后优化这些非功能性需求可能需要的工作量和资源。

海马课堂留学生作业辅导

1.根据学生的辅导需求匹配背景相符的专业老师。

2.老师根据学生情况,1V1个性化备课,双语教学,实时辅导。

3.讲解相关知识点和解题思路,提供大型作业任务的解决方案,辅导计算机编程语言操作,教授学生高效完成PPT和演讲稿。

阅读原文:https://www.highmarktutor.com/news/19275_62.html

版权作品,未经海马课堂 highmarktutor.com 书面授权,严禁转载,违者将被追究法律责任。

相关老师推荐

Niki英国

帝国理工学院 金融硕士
宏观、微观经济学、金融、数学、统计学等科目的辅导

立即
咨询
Sofia新加坡

新加坡国立大学 化学硕士
无机化学、有机化学、物理化学、分析化学、生物化学等科目的辅导

立即
咨询
Sheng Du澳洲

新南威尔士大学 IT硕士
编程、数据结构、算法、电脑网络、Java、Python、Matlab等课程辅导

立即
咨询

hmkt088

欢迎咨询