当今的架构师和架构
在计算机的早期,大概是1960年左右,硬件的花费在软件之上,是占主导地位的。40年之后,我们发现情况发生了极大的变化。
因为工业的进步,硬件的成本急剧的下降。另一方面,软件开发的成本因为个性化企业级应用开发的复杂性而急剧上升。对公司来说,便宜的硬件使得为他们的信息系统增加越来越多的功能是值得的。最初一些独立的系统,相互之间没有连接,也很少会共享数据,在多年之后,变成了复杂的系统,功能和模块之间相互连接。
这种情况创造了一个需求,在进行这样的系统设计的时候,需要一系列的规范来指导工程师。
从建筑行业借用过来,“架构”一词用来描述计划、设计、实现软件系统的技能,是合适的。然而,在软件开发中,架构不像在建筑行业中需要那么多的艺术性质。设计良好的建筑对眼睛和功能来说,是令人愉快的。软件架构在主观方面会少一点。
1、什么是软件架构
“架构"一词最初被用于软件工业中,是表达在进行代码开发之前需要计划和设计。但是,在架构一个可用的软件系统和架构一个适于居住的建筑之间还是有本质的区别的。
很明显的,在架构建筑的过程中,我们会考虑建筑是否会砸到人。但是在软件中,通常有大量的金钱可以改写一个架构。在建筑业中,设计一定要以极其详细的计算和蓝图为基础,才能完成。在软件开发中,你可能会倾向于更加敏捷。在十几年前,预先设计的方法在软件行业也是非常普遍和流行的。但是,十几年过去了,这种方法增加了开发成本。因为在部署之前,软件可以进行高效和安全的测试,相比预先设计,敏捷占了上风。
今天,建筑行业的架构和软件行业的架构已经不像很多年前那么相似了。在很多字典中,软件架构被描述为:在一个计算机系统中,组合、整合、多个组件之间的联系。但是,他还是比较抽象的。
软件行内人通常会接受另一个解释:将系统分解为很多小块,然后放在环境中。
2、谁是架构师
架构设计基于对需求的分析。分析可以确定系统需要做什么,架构可以确定如何做。架构师是需求和详细设计之间的纽带,但是架构师的职责是什么呢?需要哪些技能呢?
2.1架构师的职责
根据ISO标准中定义,架构师是对系统架构负责的人、团队或者是组织。架构师与分析人员和项目经理相互配合,对系统评估和提出建议,协调一队开发人员。
架构师参与开发的整个过程,包括分析需求和架构设计、代码实现、测试、集成和部署。
主要的职责包括:
1)理解需求
在软件项目中,在架构师参与之前会发生一些其他事情。一群分析人员,IT部门的管理者,行政部门会开会、讨论、评估、商量。一旦一个新系统的需求被确定下来,预算到位,分析人员就会基于自己的业务知识、企业的流程、环境和终端用户的反馈引出典型的需求。
需求列表准备好之后,项目经理就会和架构师碰头,将需求交给架构师,“这就是客户想要的,你去构建一下”。
架构师理解需求,尽力在设计中满足和采纳它们。
2)分解系统
在需求的基础上,架构师将系统分解为多个子系统。在这种情况下,架构师会展望一下逻辑层和服务层。然后基于环境,确定层之间的接口,和其它层之间的关系,系统需要的服务级别。
整体设计与企业的目标和需求保持一致。在一些特殊地方,由需求来驱动整体设计,而不是整体设计领导需求。
架构会包括一些通用的指导原则,要求最小化模块之间的耦合,保持模块的高内聚,保证每一个模块有一个清晰的职责。
架构的结果还会满足一些非功能的需求,例如:安全、伸缩性。最后架构师还会指定一些战略性的东西,例如:每一个开发者的任务、或者是团队的任务,或者是子系统的组件。
3)确定和评估可用的技术
在理解了需求和设计了系统的层次之后,下一步就是用具体的技术和产品计划逻辑组件。架构师应该清楚和项目有关的产品和技术的成本和好处。架构师推荐一些对于项目来说,性价比较高的产品和技术。架构师不决定技术,只是以自己的知识为基础,推荐技术。
那么谁来决定使用架构师推荐的那种技术呢?显然是项目经理,或者是预算的管理者。架构师的建议可能被接受或者被否决。
4)明确详细设计
架构师最后的职责就是确定详细设计,详细设计是架构师和开发者进行交流的结果。详细设计可以以多种形式存在,UML图、文档、Viso图,甚至是原型。沟通对于一个架构师来说是至关重要的。沟通发生在架构师和开发者之间,也发生在架构师和项目经理以及业务分析人员之间,但是不是和用户。对架构师来说,一个良好的技术就是语言清晰。
架构是一个被广泛使用的词汇,拥有相当多的定义。
架构设计从功能和非功能需求出发,功能由业务分析员收集,架构师理解。
分享到:
相关推荐
ASP.NET 4是微软开发的一款用于构建Web应用程序的框架,它是.NET Framework的一部分,提供了一整套工具和服务,帮助开发者创建功能丰富的、交互性强的Web应用。这份"ASP.NET4学习笔记"包含了多个部分,旨在帮助学习...
总之,ASP.NET为Web开发提供了全面的解决方案,从简单的静态页面到复杂的Web应用,都能通过其强大的功能和灵活的架构得以实现。通过深入学习和实践,开发者可以利用ASP.NET创建出高效、稳定、易于维护的Web应用程序...
本资源集合是针对ASP.NET的学习笔记,旨在全面深入地讲解这个强大的技术。 在ASP.NET中,Web应用程序是由服务器端控件、页面生命周期、事件模型以及丰富的编程模型构成的。通过使用ASP.NET,开发者可以使用C#或VB...
ASP.NET是建立在.NET Framework之上的,这是一个全面的软件开发框架,包含运行时环境、类库和编译器,为开发者提供了一站式解决方案。 3. **Web Forms** ASP.NET Web Forms是ASP.NET的最初形式,它引入了控件模型...
个人学习笔记可能涵盖了对这些主题的深入理解和实践体会,包括遇到的问题、解决策略以及一些实用技巧。通过阅读这些笔记,你可以了解作者在学习过程中如何理解和应用这些概念,以及如何解决实际开发中的问题。 总之...
- `.sln`:解决方案文件。 - `.csproj`:项目文件。 - 控制台操作: - `Console.WriteLine("提示信息");`:输出一行文本。 - `Console.ReadKey();`:等待用户按键。 - 编写 C# 代码时,每条语句后都需要分号 `;`...
总的来说,VB.NET图书管理系统结合了VB.NET的强大编程能力与Sql Server 2005的高效数据管理,为图书馆的日常运营提供了智能化解决方案。通过学习和实践此类项目,开发者不仅可以提升VB.NET编程技能,还能深入理解...
ASP.NET购物系统是一个基于微软的.NET框架,利用Visual Studio 2005(VS2005)开发环境和SQL Server 2005数据库构建的电子商务应用程序。这个系统设计得相当全面,包含了从用户界面到数据处理的各个层面,为用户提供...
"使用Access库"则意味着它依赖于Microsoft的Access数据库管理系统,这是一个轻量级的数据库解决方案,特别适合小型应用和初学者使用。由于Access数据库易于操作和管理,因此这个留言板系统对于不熟悉复杂数据库管理...
ASP.NET Core Web API 学习笔记汇总.pdf 是一个聚焦于使用ASP.NET Core构建Web API的资源集合。ASP.NET Core是一个由微软开发的现代化、高性能、开源的框架,它旨在为开发者提供构建各种类型的应用程序的能力,包括...
在这个课程中,我们将深入探讨ASP.NET的基础概念、核心技术和实际应用,以及在构建酒店管理系统时可能遇到的问题和解决方案。 首先,ASP.NET是微软公司推出的一种用于构建Web应用程序的框架,它基于.NET Framework...
Price是一位专注于C#和微软Azure解决方案架构的专业人士,拥有超过20年的行业经验。本书旨在帮助读者利用ASP.NET Core 6、Blazor和EF Core 6,结合Visual Studio 2022和Visual Studio Code进行现代跨平台应用、网站...
2. 在集合类中使用一个预定义的集合。 (2) throw 语句用于发出在程序执行期间出现反常情况(异常)的信号。throw 语句的形式为: throw [expression]; expression :异常对象。当在 catch 子句中再次引发当前异常...
《Visual C++程序设计学习笔记》是一份深入探讨C++编程在Microsoft Visual Studio环境下的实践指南。这份笔记涵盖了从基础知识到高级技术的广泛内容,旨在帮助读者熟练掌握Visual C++的使用,提升软件开发能力。 一...
10. **Azure云计算**:Microsoft Azure提供了丰富的云服务,包括存储、计算、数据库等,.NET开发者可以利用Azure SDK构建云端解决方案。 11. **设计模式**:了解常见的设计模式,如单例、工厂、观察者等,它们是...
"web2.sln"是Visual Studio的解决方案文件,包含了项目的配置信息和所有相关的项目文件。"51aspx源码必读.txt"可能是一份关于ASP.NET编程的参考资料。"说明.txt"和"说明2.txt"可能是项目使用指南或开发笔记。"最新...
总的来说,.NET订餐网源码不仅是一个完整的餐饮电商解决方案,也是一个学习.NET开发、Web应用架构、数据库设计和管理的宝贵资源。通过深入研究,开发者可以掌握更多的技能,进一步提升在IT行业的专业能力。
总的来说,这个ASP.NET开发的B2C商城系统旨在提供一个完整的在线销售解决方案,涵盖从商品展示到订单交付的全过程,同时也考虑到了系统的可扩展性和安全性。对于学习ASP.NET开发电商系统或者想要深入了解电子商务...
**WPF(Windows Presentation Foundation)**是微软推出的一种强大的用户界面框架,它是.NET Framework的重要组成部分,主要用于构建桌面应用程序。WPF提供了丰富的图形渲染能力、数据绑定、多媒体支持、文档处理和...