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

来源:互联网 发布:合肥工业大学网络视频 编辑:程序博客网 时间:2024/05/28 09:34
一切设计的切入点是什么呢?我们必须从最初的需求和约束条件的混沌中提取出一个粗粒度的软件结构,然后再把它划分为构成待开发系统的有实际意义的各个部分,这就形成了一个清晰的初期概念设计,并形成一种理性、深入、细腻及智慧的设计风格。


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



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


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


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


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


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


2)结构应该易于理解


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


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


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


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


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


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


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