软件设计的切入点是什么?如何从最初的需求提取出一个粗粒度的软件结构?

author author     2022-09-04     388

关键词:

一切设计的切入点是什么呢?我们必须从最初的需求和约束条件的混沌中提取出一个粗粒度的软件结构,然后再把它划分为构成待开发系统的有实际意义的各个部分,这就形成了一个清晰的初期概念设计,并形成一种理性、深入、细腻及智慧的设计风格。


“顶层架构设计”相关模式的思维导图如下。

技术分享


分布式系统模式语言的根模式和切入点。这些模式有助于我们从最初的需求和约束条件的混沌中提取出一个粗粒度的软件结构,然后再把它划分为构成待开发系统的有实际意义的各个部分。


1)凭直觉设计容易形成大泥球


要设计出可持续软件,必须关注质量的几个关键因素,包括:运行方面质量因素(如性能和可用性)和开发方面质量因素(如扩展性和可维护性)。


设计大的分布式系统很容易让它变得复杂。刚开始,我们所拥有的只是关于要开发的软件系统的一系列需求和约束条件,或者是一个不成熟的开发方案。如果只是凭着直觉来设计,其结果很可能是“一个大泥球”、一个设计和编码都很混乱的软件,这会导致最终无法分辨其内在的元素。


这一类软件难于理解、维护和改进,并且随着时间的流逝很容易在稳定性、性能、可伸缩性.以及其它核心运行架构质量上陷入困境。


2)结构应该易于理解


决定软件开发成功与否的一个重要因素是结构。结构应该易于被开发人员理解,应该对系统及其开发所面临的压力具有弹性,应该支持围绕它而推进的开发过程,应该兼顾使用并维护它的组织和个体的需求。


简单的说,这种结构应该给软件系统的开发人员和其他相关人员提供一个良好的环境。然而,如果软件的结构设计没有远见和适当的指导,它就很容易变得混乱,而且还会导致不仅系统的全局难以把握,甚至局部也是难以把握,其表现在于代码中充满零碎的细节和假设而难以理解。


3)需要一个粗粒度的概念设计


因此,在这样的软件开发过程中,我们需要一个粗粒度的系统概念,在抽象和分离这两个手段的帮助下,可以暂时忽略不必要的细节,在更广的层次上组织系统的核心概念。这种概念设计需要考虑两个层面的问题:


客户需求:软件必须是对系统应用领域来说是有意义的表现。特别是系统提供的功能需求和质量特性必须支持具体的业务,否则对用户来说这样的设计就没有实际价值。


生态环境:系统设计更进一步考虑的问题是生态环境。我们是处于一个不断变化的世界中,需求的变化不可避免。变化可能是因为质量上的新要求、新的的功能需求加入、业务流程的改变、具体业务算法的选择、以及系统表现层的不同选项等。如果不能明确地知道应用领域中哪些东西会发生变化,或者软件必须支持什么样的变化,就很难为软件系统或产品提供适当层次和程度的灵活性。


作为整个设计的入口,必须应对上述挑战,从而不仅反映软件系统的功能需求,还能为技术架构的进一步细化打下坚实的基础。


本文出自 “中科院计算所培训” 博客,请务必保留此出处http://tcit1987.blog.51cto.com/8713743/1936480

浅谈我对ddd领域驱动设计的理解

目录从遇到问题开始DDD切入点1-理解概念什么是领域(Domain)?什么是设计(Design)?什么是驱动(Driven)?概念总结:DDD切入点2-理解领域、拆分领域、细化领域理解领域知识是基础拆分领域细化子域DDD切入点3-领域模型设计领... 查看详情

如何快速进行软件需求分析?

1.概念需求的定义包括从用户角度(系统的外部行为),以及从开发者角度(一些内部特性)来阐述需求.关键的问题是一定要编写需求文档.我曾经目睹过一个项目中途更换了所有的开发者,客户被迫与新的需求分析者坐到一起.系统的分... 查看详情

构建之法——第七篇

本周我对于软件的设计与实现和用户体验进行了一个深度的学习。我们写软件就是要解决用户的需求,我们需要表达和传递一些信息:在“需求分析”阶段,我们要搞清楚,在问题领域的现实世界里,都有哪些实体,如何抽象出... 查看详情

未来的图书是什么样子

  需求分析也称为软件需求分析、系统需求分析或需求分析工程等,是开发人员经过深入细致的调研和分析,准确理解用户和项目的功能、性能、可靠性等具体要求,将用户非形式的需求表述转化为完整的需求定义,从而确定... 查看详情

软件设计与实现

我们写软件就是要解决用户的需求,我么需要表达和传递下面的信息,在“需求分析”阶段,我们要搞清楚在问题领域中的现实世界中,都有哪些实体,如何抽象出我们真正的关心的属性,实体之间的关系是什么,在这个基础上... 查看详情

《构建之法》一周小结

软件设计与实现分析和设计方法:写软件就是要解决用户的需求,需要表达和传递下面这些信息。在“需求分析”阶段,我们需要搞清楚:在问题领域中的实现世界里,都有那些实体,如何抽象出我们真正关心的属性,实体之间... 查看详情

创新产品的需求分析:未来的图书会是什么样子?

如何对需求不确定的创新产品进行分析和设计?简要总结一下有哪些方法和策略。  如今的产品设计研发都需要对产品的概念形式进行分析,结合市场的需求来决定产品的功能和外形,来满足人们某种需求的任何东西,包括有... 查看详情

一个软件的具体开发流程介绍

软件开发就是根据用户需求打造软件系统中软件部分的过程,它通常以项目的方式进行,用软件的方法,以项目管理的手段来执行。软件开发流程有八个步骤:(1)需求调研需求调研是软件开发的基础。每个项目都从一个需求... 查看详情

如何评测软件工程知识技能水平?

我认为一个软件工程师的软件工程知识技能水平高低主要体现在:实现一个软件工程基本流程的是否完善,到位。 软件工程基本流程包括以下几大步骤:1、获取需求2、设计体系结构3、设计模块4、编写程序5、测试程序6、测... 查看详情

创新产品的需求分析:未来的图书会是什么样子?

...。  需求分析的流程中,文档化与顾客有关的过程。在软件能力成熟度模型CMM中指出“需求管理的目的是在顾客和软件项目之间建立对将由该软件项目处理的顾客需求的共同理解,与顾客的约定是策划和管理软件项目的基... 查看详情

创新产品的需求分析:未来的图书会是什么样子?

需求分析目的  软件需要解决的是用户所面临的现实问题,但是,这些现实问题需要由软件技术人员来解决。情况往往是,开发软件的技术人员精通计算机技术,但并不熟悉用户的业务领域;而用户清楚自己的业务,却又不太... 查看详情

创新产品的需求分析:未来的图书是什么样的?

一.需求分析的定义需求分析是软件计划阶段的重要活动,也是软件生存周期中的一个重要环节,该阶段是分析系统在功能上需要“实现什么”,而不是考虑如何去“实现”。需求分析的目标是把用户对待开发软件... 查看详情

软件架构师必读!什么是设计?如何进行设计?

在质量的约束之下,软件架构如何进行设计?关键的问题是什么是设计,如何进行设计呢?对这个命题的不同理解,会形成截然不同的方法论。1、什么是设计设计是技术与文化的融合。设计的目的是创作事物,设计先于事物出... 查看详情

创新产品的需求分析:未来的图书会是什么样子

...用快速原型。快速原型模型适合预先不能确切定义需求的软件系统的开发,需要迅速建造一个可以运行的软件原型,以便理解和澄清问题,使开发人员与用户达成共识,最终在确定的客户需求基础上开发客户满意的软件产品。快... 查看详情

如何从seo角度做网站定位

...p; (行业的竞争性和关键词的竞争性分析)2、细分和切入点  (竞争性较大时如何细分并找到切入点)3、用户需求分析    (通过对用户需求分析找到需求点和搜索关键词)4、用户需求分析确定排名决... 查看详情

创新产品的需求分析:未来的图书是什么样的?

...根据所需活动描述所需行为质量要求或非功能要求:描述软件必须具备的某些质量特征设计约束条件:设计决策,例如平台或接口组件的选择过程约束条件:可用于构建系统的技术或资源2、需求分析  需求分析是从用户提出... 查看详情

“软件设计是怎样炼成的?”实战视频课程

适合人群:软件设计师,用户体验设计师,程序员,系统架构师。课程目标:理解什么是优秀的设计;学会从分析需求开始如何逐步做出实用的软件设计;学会架构设计、数据库设计、用户体验设计和详细设计的实战技巧。课程... 查看详情

创新产品的需求分析:未来的图书会是什么样子?

...如何对需求不确定的创新产品进行分析和设计需求分析是软件计划阶段的重要活动,也是软件生存周期中的一个重要环节,尤其是对创新型产品的需求分析,该阶段需要将用户非形式的需求表述转化为完整的需求定义。但是很多... 查看详情