知识大全 正视架构设计的重要作用

Posted 需求

篇首语:成功需要付出代价,不成功需要付出更高的代价。。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 正视架构设计的重要作用相关的知识,希望对你有一定的参考价值。

  要讨论软件架构设计在软件开发中的重要作用 首先让我们来了解一下目前国内软件的开发现状

  总的来说 国内的多数企业仍然是采用 瀑布模型 作为软件开发过程的主要模型 虽然在采用瀑布模型的同时可能会引入原型法以及诸如MSF等其它软件开发方法与过程 但随着项目时间的推进 这种 瀑布模型 会慢慢演化为 边做边改模型

  从事过软件项目开发的专业人士都有这样的困惑:为什么到了项目接近尾声的时候 仍然还有那么多没有解决的问题?

  理论上讲 应该是先分析 后设计 再编码 那为什么项目在交货以后 我们还在不断的编写设计文档?为什么每次客户需求发生变更 我们又要投入大量的资源来应对不断变化的客户需求?为什么软件开发会碰到这么多困难 我们天天加班加点 不断地去解决开发中碰到的种种问题 可是问题越解决越多 得到的效果却那么不尽人意?

  项目出现这些问题 原因很多 概括起来可以分为两种:管理因素和技术因素 国内普遍重视管理因素 而忽视技术因素 所以出现层出不穷的问题也就无法避免

  软件架构设计属于技术因素 它位于软件开发过程的前期阶段 架构设计的过程 是分析客户需求 挖掘非功能性需求 并将客户需求所定义的领域知识转化为软件系统模型的过程 由此可见 架构设计所涵盖的范围非常广泛

  目前 国内对于软件架构的认识 还存在这样或那样的误区 难道只有当设计人员在为软件项目配备了充足的资源 然而却得不到预期的结果时 才会反思:是不是软件开发本身出现了问题?

  架构设计源于客户需求

  在进行需求分析的过程中 系统分析员将客户需求转化为计算机模型 然而在这个过程中 系统分析员本身的特性也就决定了这一角色很难把握住客户的非功能性需求

  需求需要挖掘 尤其对于大型的软件系统而言 光靠系统分析员这个单一的角色 很难完成需求分析与挖掘的艰巨任务 在需求分析的过程中 架构设计师更为关注的是系统的非功能性需求 例如稳定性 可扩展性 可维护性 安全性 高效性等等 这些需求都是需要挖掘的

  如何挖掘?挖掘方式取决于核心需求 举个很简单的例子 客户需要实现两个系统的数据传输 这是个核心功能性需求 而在这个需求的背后 还包括了 传输过程要求可靠 需要采用一种特定的数据格式进行传输 由于数据包含一定的机密因素 因此需要加密 并需要选择合适的加密算法 等等一系列的非功能性需求

  此时 架构设计师不仅需要了解客户本身的功能需求 还需要能够发掘非功能需求 因此 优秀的架构设计师一定是一个经验丰富的需求工程师 需求分析让架构设计师知道 我需要考虑哪些因素 而深厚的软件技术功底让架构设计师知道 如何去考虑这些因素 可见 架构设计源于客户需求

  架构设计源于对知识的不断积累

  首先应该认识到 没有对领域知识 软件系统特性与软件技术等的深刻理解 就无从谈及架构设计 而深厚的领域知识与技术经验则是源于不断的积累

  目前 市场上确实很多产品在架构上已经非常成熟和稳定 但这些产品的成熟架构也是通过长期不断的实践与积累才逐步形成的 经验丰富的架构设计师可以在开发产品的同时总结出一套架构模式 这对维护产品的体系结构 以及开发同类产品都有深远的意义

  从另一个角度讲 产品的架构并非一成不变 随着技术的不断创新与发展 新技术一定会被应用到现有的系统架构中 此时 软件架构可能需要进行调整 我们也不能再说 我们没有必要去关心这些产品架构了

  架构设计是一种取舍过程

  实现某一非功能性需求 可以有很多种方法 但并不是每种方法都是最合适的 这在架构设计的过程中需要做出取舍 例如 为了使得软件系统具有易扩展 易更改的能力 我们可以采用插件体系结构或内嵌脚本系统结构 两者都可以使得软件系统具有方便扩展的能力

  然而 如果客户的业务流程会经常变化 或者软件系统产品会应用到具有不同业务流程的多个客户时 采用后者可能会更加符合软件本身的特点

  当今IT业技术层出不穷 在特定的应用场景中 采用何种技术何种模式最合适 这就是架构设计的取舍 JAVA和 NET孰好孰坏?讨论这样的问题也不再有意义 软件工程大师Martin Fowler曾经说过:架构师是对所有重要事情做出决定的人 这一决定也囊括了取舍

  架构设计将服务于整个开发过程

  良好的架构设计不仅使得软件系统能够满足客户需求 它更为软件系统带来了安全性 稳定性 可扩展性等属性 而这些属性在应对客户需求变更 提高软件可测试性与可维护性 降低维护成本 提高开发效率等各方面都起著非常重要的作用

  客户所需要的是可以用于生产实践的最终产品 他们自然不会去关心你的软件系统采用何种设计和架构 但作为软件系统的分析者 设计者和开发者 我们必须为软件产品寻求一种合理的架构设计 因为它不仅能够使系统满足非功能性需求 而且能够降低开发成本和维护费用

cha138/Article/program/Java/gj/201311/27621

相关参考

知识大全 架构重构--改善既有代码的设计

  当架构模型进行迭代的过程中必然伴随着对模型进行修改和改进我们如何防止对模型的修改又如何保证对模型进行正确的改进?  Context  架构模型通过精化合并等活动之后将会直接用于指导代码而这个时候往

知识大全 ASP.NET网站开发的架构设计

ASP.NET网站开发的架构设计  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ASPNET网站

知识大全 在数据架构规划前进行XML消息的设计

在数据架构规划前进行XML消息的设计  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  本文假定你对

知识大全 .NET企业级应用架构设计之技术选型

.NET企业级应用架构设计之技术选型  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  这里说的技术

知识大全 大型高性能ASP.NET系统架构设计

大型高性能ASP.NET系统架构设计  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Web前端系

知识大全 架构模式-界面组装器模式

  本文提出了一种界面设计中的架构模式界面组装器模式它致力于分解界面将界面和组装行为解耦将界面逻辑处理与领域逻辑处理解耦这样我们在开发GUI胖客户端界面应用时可以从众多的界面控制管理中解脱出来而专注于

在人类文明发展的进程中,创新设计起到重要作用。以奔驰、波音、通用、西门子为代表的汽车飞机、电力电气设计,引领了现代交通和

在人类文明发展的进程中,创新设计起到重要作用。以奔驰、波音、通用、西门子为代表的汽车飞机、电力电气设计,引领了现代交通和电气化社会;以英特尔、微软、苹果、联想为代表的芯片、软件、智能终端设计,造就了信

知识大全 如何理解.Net的三层架构

深入探讨:如何理解.Net的三层架构  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  各层的作用 

知识大全 色彩化的设计

  在软件的设计过程特别是架构设计和概要设计过程中我们不难发现不太可能在整个项目中一刀切而采用完全一致的设计细节    一些设计细节常常需要考虑系统可能的性能系统潜在的变化包括和外部系统的潜在接口(随

室内设计利用灯光独特照射气氛的作用

室内设计利用灯光独特照射气氛的作用光---生命之源。人离不开光,人类要是没有了光,其结果不堪设想。自然光是万物生命之源,而人类在现代生活中更离不开灯光。灯光是美化居室的一个重要组成部分,完美的室内照明