应用开发策略选择

每个软件架构师,开发经理和开发人员都很可能遇到过软件设计和开发中“自上之下vs.自下而上”的争论。

正确的答案其实是,这里并没有单一的最佳方案。 应用是用自上而下和自下而上的两种方案之一来构建,每种方式的支持者和另一方的支持者一直争论不休。但是决定企业应该采取哪一种应用开发战略要求检视需求和资源,并且考虑到应用可能的变化,理解应用设计上这两种不同的方案以及各自减少风险的所需步骤。

模块化编程理念和企业架构都影响着软件开发,使其从上开始,从业务需求和预期收益入手。

实际上,这意味着列出业务目标,基于映射到用户行为的功能划分,用通用的软件术语来描述业务目标,然后将这些功能进一步分解,匹配硬件和软件的需求。在过去的十年里,这已经被广泛接受成为应用程序设计的最佳方法。

自上而下和自下而上

自上而下应用设计和开发也更容易和企业以及将使用应用的用户相匹配。大家理解软件做什么以及怎么做,意味着他们从应用的功能驱动视图来理解应用。如果从这样的视角开始,就可以从业务部门收集方案使用性方面的需求,并且能够洞察出业务实践随时间的改动可能会如何影响到软件设计。

这样自上而下方案的问题在于,项目目标还包括使用某种特定技术或者资源集——特别是云——的时候会遇到问题。应用不会为云自动优化;他们必须特别设计来利用云的特定特性,同时避免花费过多。从上开始的话,架构师可能能够构造出一些和一开始的目标平台以及托管选项不是特别匹配的东西。自下而上的方案才能够确保托管以及资源的正确使用。

自下而上的应用开发战略更容易契合通过面向服务架构或者微服务的使用而开发的组件库。如果可以从已有软件组件组装出一个应用程序——或者其中的一大部分——那么就可以减轻开发负担和应用生命周期管理需求。自上而下方案在现有组件模型没有什么用时可以领导设计的方向。

方案之争
经验丰富的开发团队已经适应了自上而下vs自下而上的应用开发战略之争,但是有两种基础方案得到了广泛认可。一种着重考虑资源或者平台目标,认为这些和功能需求一样重要,另一种更像是“在中间会和”的方案。

很容易看出,如果需要为使用现有模块化模型而进行优化,或者为云计算做准备,这样的需要提升成为需求时,那么应用程序设计需要从一开始就考虑到这些需求,并且按需作出设计。但是,不是所有开发团队都能够轻松在设计的最高层混合功能和技术的需求。使用云技术如何和支持某种特定的功能行为相契合呢?如果无法回答这个问题,那么流行的做法是设置某个需求集的优先级高于另一个需求集。这样能够完成拥有有限功能的设计。

当基于资源,平台或者组件重用的目标,业务需求适合某个假定的应用模型时,“提升”模型能够工作得很好。比如,一个基本的Web前端软件模型,管理特定的系统-用户关系,链接到一系列解决企业功能需要的应用流程上,能够足够好地组织开发工作,确保重用需求可见,而不牺牲任何功能性。

“在中间会和”方案假定平台和组件创建一个能够抽象到一系列技术行为的工具包。比如,可用组件能够组装起来更新数据库或者完成报告。这些高层级的行为也能够关联到云特性上,比如水平扩展或者故障发生时的实例置换。虽然它们可能无法直接映射到新应用的功能性需求——或者它们可能对于项目而言并不需要——它们比基础技术需求更加功能化。架构师随后就能够基于这些行为组合出第二或者第三层设计。

基于行为,在中间会和的应用开发战略的问题是,如何向上反应行为感知性,而不会被底层问题占据。最佳方式是从底层开始组装有用的行为,然后将其暴露成工具给架构师,架构师从顶层开始功能性设计。该方案在有显式高层功能性需求时最有用,这些需求可能来自一个良好的EA模型。没有非常强有力的功能性需求,那么设计流程就很容易被自下而上的资源探求和组件战略所占据。

底线
自上而下的设计很好地将应用和业务目标契合在一起,并且优化用户体验的质量,但是他们可能创建出不是最优的组件化,并且限制了应用程序采纳新技术,比如云计算的能力。自下而上的设计优化资源和组件化能力,但是可能会偏离用户的体验质量。最后,最好选择契合你的最重要目标的方案,然后一步步确保能够兼顾到另一端。

本文转自d1net(转载)

时间: 2024-08-02 10:49:05

应用开发策略选择的相关文章

《iOS App界面设计创意与实践》——快速提示:iOS开发策略

快速提示:iOS开发策略 iOS App界面设计创意与实践 在我们深入iOS UI.动画和手势背后的技术之前,掌握一些基础知识很重要.对于设计师而言,虽然不要求读完本书后能够编写代码,但是有一些标准的iOS开发策略,开发者或者必须在基于iOS SDK开发中遵循,或者应该作为最佳实践来遵循.作为设计师,了解这些因素对开发人员的影响,对于理解如何设计最佳用户体验是至关重要的.作为开发人员,快速温习一下最佳实践并没有害处. 模型-视图-控制器 当谈及编码原则时,模型-视图-控制器(MVC)是最基础的.

IBM i教程:IBM i开发策略的更新

你知道作为一名IBM i的开发成员是如何工作的么?假设让你负责一款操作系统的开发和升级,你知道如何 判断操作系统的哪些部分需要更多的投资?你将如何了解当今不断发展变化的新技术,然后判断这些新想法是 否应用到系统中,或者它们会和系统中已经实现的功能相冲突? 今天,我希望能通过我的团队未来几 个星期内的工作计划,来帮助你知道我们是如何做的.当然我们讨论的内容大部分是IBM机密,所以我不能在 这个博客分享.但是,我想我可以让你了解一下这个大概过程:如何采纳好的想法,如何对某些想法说不,或 者将某些想法

linux开发板选择问题?

问题描述 linux开发板选择问题? REAL210开发板.Exynos4412开发板.物联网开发板.CES-V210开发板.CES-EDU6410开发板linux开发选哪个好? 解决方案 看你的需要,不同的开发板,提供的环境.硬件配置.扩展接口等等都不同,满足你需要的最便宜的就是最好的. 如果提不出要求,那么最贵的就是最好的,俗话说一分钱一分货. 解决方案二: 如果你是初学者,建议学一下 arm9,三星的2410.友善之臂开发板的资料挺全的. 解决方案三: 我觉的物联网开发版比较好,现在物联网

架构师-我在设计一个表结构.主键生成策略选择哪种好,有什么讲究吗?

问题描述 我在设计一个表结构.主键生成策略选择哪种好,有什么讲究吗? 选uuid? 还是选数字自增? 一般情况下都用哪个啊? 一般情况下都用哪个啊? 一般情况下都用哪个啊? 解决方案 主键一般都是非业务主键,仅作编号没有实际意义,自增或者UUID都可以的.比较如下: 解决方案二: 数字自增长 一直用的这种,还不错.

图案填充-cad二次开发不用选择直接设定填充图案

问题描述 cad二次开发不用选择直接设定填充图案 采用c#CAD二次开发,怎么添加填充,且不用用户先选择填充图案,而之直接给他设定图案,那位大神指点迷津下 解决方案 先在cad录制一个宏.然后再在你的代码中照着写就可以了. 解决方案二: 试过了不知道怎么看宏代码,和word等office不一样,另外cad没有给接口,是通过P/Invoke技术实现,也试过了但老是出现无法找到入口点 using Autodesk.AutoCAD.Runtime; using Autodesk.AutoCAD.Edi

Sql Server优化之索引提示----我们为什么需要查询提示,Sql Server默认情况下优化策略选择的不足

原文:Sql Server优化之索引提示----我们为什么需要查询提示,Sql Server默认情况下优化策略选择的不足 环境: Sql Server2012 SP3企业版,Windows Server2008 标准版   问题由来: 最近在做DB优化的时候,发现一个存储过程有非常严重的性能问题, 由于整个SP整体逻辑是一个多表关联的复杂的查询,整体结构比较复杂的,通过的分析和尝试, 最后发现问题出在其中一个大表的查询上实现方式上, 因为这个大表上的意外的执行方式,导致其他表无法被驱动,其他表也

项目特质与设计开发流程的策略选择

最近,借着新项目的机会,我(英文原文作者)对过去在Oculus Launchpad项目中的经验进行了总结.在本文中,我来和各位聊一聊我通常会以怎样的方式开始新项目. 正常情况下,我手头会有两到三个项目同时进行.取决于规模与复杂度的差异,我在规划阶段所花费的时间也有所不同.从形成最初的想法,到最终完成demo,我通常会将整个流程划分为以下几个步骤. 规划 刚刚有说到,规划阶段的工作量取决于项目自身的性质.如果打算研究一种新引擎或是开发技术,我甚至会跳过这一阶段,直接上手代码并尽快实现一些东西 出来

前端开发者的跨平台移动应用开发策略及工具

愉悦的周五,早些回到家,冲澡吃饭照顾猫咪家务完毕已然超过九点的样子.登录博客后台,进入编辑页面,才觉得些许轻松安逸.不坏,一天里能有这么一会沉浸在这样的感觉里,足够了. 在之前的一篇文章中,我们曾经讨论过,对于交互和视觉设计相关职能的从业人员来说,从传统Web行业向移动应用领域转型的过程中需要学习和注意的问题.这篇文章中提到过"混合型应用"的概念,以及与之相关的两本开发指导书籍.今天这篇文章的英文原文,就是来自这两本书的作者--移动应用开发者Jonathan Stark. 本文中,他将

企业开发中选择logback而不是log4j的理由

不知道看到这篇文章的Java工程师有没有考虑过这个问题:为什么在企业开发中会选择logback来记录日志,而不是log4j呢? 如果你以前没有考虑过这个问题,那么现在如果让你考虑一下,你可能觉的会是因为什么原因呢?本文就来为你回答这个问题.   无论从设计上还是实现上,Logback相对log4j而言有了相对多的改进.不过尽管难以一一细数,这里还是列举部分理由为什么选择logback而不是log4j.牢记logback与log4j在概念上面是很相似的,它们都是有同一群开发者建立.所以如果你已经对