创建软件架构时应该关注什么?

时间: 2019-09-19阅读: 535标签: 架构

软件架构师的首要关注点不是系统的功能,而是软件的品质,软件品质关注点指明了功能呢必须以何种方式交付,才能被系统的利益相关人所接受。作为一个架构师,你应该了解软件产品利益人以及他们的关注点:

  • 投资人,他们想知道项目是否能够在给定的资源和进度约束下完成。
  • 架构师、开发人员、测试人员,他们首先考虑的是最初的构建和以后的维护与演进。
  • 项目经理,他们需要组织团队,制定迭代计划。
  • 市场人员,他们想通过软件产品的品质特点实现与竞争者的差异化。
  • 用户,包括最终用户、系统管理员,以及安装、部署、准备、配置人员。

技术支持人员,他们关注帮助平台电话呼入的数目和复杂性。

架构师第一项任务,就是与利益相关人员协作,理解这些品质关注点和约束,并为它们排列优先级。为什么不从功能需求开始呢?因为通常有许多可能的系统分解方式。例如,从数据模型开始可能得到一种架构,而从业务处理模型开始则可能的得到不同的架构。在极端的情况下,系统没有分解,被开发成单一的软件。这可能会满足所有功能需求,但是可能不会满足品质需求。

一个项目通常情况下会有以下关注点:


功能性

产品向它的用户提供哪些功能?


可变性

软件将来可能需要哪些改变?哪些改变不太可能发生,不需要特别容易进行这些改变?


性能

产品将达到怎样的性能?


容量

多少用户将并发使用该系统?该系统将为用户保存多少数据?


生态系统

在部署的生态环境中,该系统将与其他系统进行哪些交互?


模块化

如何将编写软件的任务分解为工作指派(模块),特别是这些模块可以独立地开发,并能够准确而容易地满足彼此需要?


可构建性

如何将软件构建为一组组建,并能够独立实现和验证这些组建?哪些组建应该复用其他的产品,哪些应该从外部供应商出获得?


产品化

如果产品将以几种变体的形式存在,如何开发一个产品线,并利用这些变体的共性?产品线中的产品以怎样的步骤开发?在创建一条软件产品线时,要进行哪些投资?开发产品线中不同变体的选择,预期会得到怎样的回报?

特别是,是否可能开发最小的产品,然后再添加(扩展)组建,在不改变以前编写的代码的情况下,开发产品线的其他成员?


安全性

产品是否需要用户认证,或者必须限制对数据的访问?数据的安全性如何得到保证?如何抵挡“拒绝服务”攻击或其他攻击?

到这里是不是有点熟悉啊,这其实就是产品经理写的PRD文档中的一份,PRD文档中有关于产品性能指标,安全的指标等等,而架构师很大部分工作就是在拿到PRD的时候把项目进行分解,让其在架构上符合产品设计基本要求。


站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

2.广告联盟: 整理了目前主流的广告联盟平台,如果你有流量,可以作为参考选择适合你的平台点击进入

链接: http://www.fly63.com/article/detial/6025

关闭

微服务架构陷阱:过渡设计和设计不足

在这篇文章里,我将简要地介绍在设计微服务架构时需要注意的问题。如果实施得当,就会获得自治能力和灵活性,但同时也会带来通信延迟和部署及托管成本。这篇文章并不是一个高级指南

微服务架构 VS 单体架构

在软件行业,微服务架构是一种重要的发展趋势。这一趋势,不仅仅是对企业内的IT信息系统建设,甚至在企业向数字化转型方面,都有着深远的影响

网站架构优化性能

最初业务量不大,访问量小,此时的架构,应用程序、数据库、文件都部署在一台服务器上,有些甚至仅仅是租用主机空间, 将应用程序、数据库、文件各自部署在独立的服务器上

Redis高可用,高性能,架构演进史

高性能就是做分片(可以类比为分库分表,将数据分到不同服务器上),在Kafka中叫分区,在mongodb中叫shard,在HDFS上叫DataNode。而保证高可用的方式就是做交叉备份。然后我很好奇Redis是怎么部署的。

朱晔的互联网架构实践心得:品味Kubernetes的设计理念

Kubernetes(k8s)是一款开源的优秀的容器编排调度系统,其本身也是一款分布式应用程序。虽然本系列文章讨论的是互联网架构,但是k8s的一些设计理念非常值得深思和借鉴,本人并非运维专家,本文尝试从自己看到的一些k8s的架构理念结合自己的理解来分析 k8s在稳定性

实用的软件架构方法

软件架构就是软件的基本结构,它是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。软件架构是一个系统的草图。软件架构描述的对象是直接构成系统的抽象组件。

架构/构建高可用的网站

目的为保证服务器硬件故障时依然可用,数据依然保持并能够访问,手段:数据和服务的冗余备份以及失效转移机制,有状态 :在服务端保留之前的请求信息,用以处理当前请求(例如:session)无状态 :没有特殊状态的服务

微服务五种开源API网关实现组件对比

微服务架构是当下比较流行的一种架构风格,它是一种以业务功能组织的服务集合,可以持续交付、快速部署、更好的可扩展性和容错能力,而且还使组织更容易去尝试新技术栈。微服务具有几个关键特征:

浅谈一下可扩展性网站架构设计

扩展性(Extensibility)-指对现有系统影响最小的情况下,系统功能可持续扩展或者提升的能力,表现在系统基础设施稳定不需要经常变更,应用之间较少依赖和耦合,对需求变更可以敏捷响应

C/S和B/S两种架构区别与优缺点分析

C/S 架构是一种典型的两层架构,其全程是Client/Server,即客户端服务器端架构,其客户端包含一个或多个在用户的电脑上运行的程序,而服务器端有两种,一种是数据库服务器端,客户端通过数据库连接访问服务器端的数据

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!