为使应用程序开发desicions [英] make desicions for app development

查看:181
本文介绍了为使应用程序开发desicions的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以我想建立这个具有一定商业价值的社会网站,我怎么可以决定哪些技术/架构是为我好,我的发展。我是否应该使用关系数据库或NoSQL数据库,甚至图形数据库去?我应该使用Java,PHP,红宝石,...假设我知道很多的语言(事实上,是的,我做的)?我知道,启动它不会开始与微软的技术,因为这会伤害你的钱包好东西。我应该遵循什么样的数据库设计的最佳做法?什么样的应用程序设计的做法,我已经做什么? Martin Fowler的的网站有很多很好的资源实际上却养了启动时的风险更高,并且需要比养一个孩子更多关怀,只是一个错误的决定可能会拧你的全部工作和金钱。好的想法确实存在,但使他们真正是另一回事。我在哪里可以找到真正的故事,最佳实践,技巧和放大器;招数,破解一切从数据库设计开始到堆栈服务器配置和维护的顶部。

注:我知道如何设计一个数据库,应用程序,code我的web应用程序,我已经把我的CS程度,但似乎事情是在现实生活中缺少的,使所有这些东西一起工作,所以我不不想一个教程或有关数据库设计或设计模式,一本好书,....

在此先感谢


解决方案

  

...我不认为
  这一业务的价值将有一个很大的因素在决定什么高科技
  使用...


实际上是很重要的。机构通常选择特定的平台/技术堆栈,因为它是在你需要雇用的技能的影响。找到一个谁是善于.Net和MS SQL,或时,LAMP堆栈比找人带这两个技能的更容易。资源池变小,对于更难招募 - 意味着难以支持你的系统=更贵/拖延修复bug /增加新的功能。

这同样适用于供应商,整合不同的系统下了线。

那么,你如何决定?像@Home状态,这是一个广泛的问题,所以它很难成为precise但是,这并不意味着我们不能提供任何东西:这里的基本过程我按照(步骤1 - 4是目前最贴近您#1尤其是):

设计/解决方案选项过程

最好的架构和解决方案是那些符合适当纳入问题的背景:什么是最终形成什么是最好的架构和解决方案看起来像司机?你想要去的地步,你可以说:这一点,我们做的'X',因为业务流程合法要求它和我们做'Y',因为我们不应该有一个技术限制的。

在一般意义上,你需要:


  1. 把你的问题,因为输入的情况下。

    • 愿景和相关的目标。

    • 约束,风险,假设,问题和放大器;依赖。


  2. 这将有助于塑造你的评分标准(这是你将如何评价你想出的创意)。

  3. 定义初始的高层次解决方案选项/方向。这些都是蓝天的讨论,可以相对自由的约束:大处着眼,条条框框。关键的一点是,不要开始实施的角度思考 - 甚至是特定的技术。你也可以把业务限制到一边:好了,我们这样做是因为目前的业务流程是X,如果我们做了Y(使用这种新技术),我们可以再做Z和降低运营成本。

  4. 评论和评分,这些对你的评分标准。

  5. 追求逻辑选择:基本上采取的3安培输出; 4,并带他们到一个新的水平。您可能要开始思考企业/设计模式在这一点上。

  6. 评论和评分,这些对你的评分标准

  7. 寻求执行选项:你需要一个组件做X:你重复使用,购买或建造?是否有同类最优的工具,你可以使用?他们是与你现有的基础设施兼容?等等。

  8. 评论和评分,这些对你的评分标准。

  9. 记录结果在建筑的决定(的原因)登记备查;这应/必须包括的previous步骤的输入和输出。这里的想法是,以prevent人后你谁来自不必做所有的工作又 - 或者盲目地与不良1重写你的深思熟虑的决定,通过

So I want to build this social website with certain business value, how can I decide which technology/architecture is good for me in my development. Should I go with Relational databases or NoSql databases or even Graph databases? Should I use Java, PHP, ruby, .... assuming that I know lots of languages (and in fact yes, I do)? I know that for a startup it wouldn't be good thing to start with Microsoft technology stack because this will hurt your wallet. What kind of database design best practices should I follow? what kind of application design practices I've to do? Martin Fowler's website has lot of good resource actually but raising a start up is more risky and needs more care than raising a child, just one wrong decision may screw your entire work and money. Good ideas do exist but making them real is something else. Where can I find real stories, best practices, tips & tricks, hacks for everything starting from database design to the top of the stack with server configuration and maintenance.

Note: I know how to design a database, application, code my web app, I've took my CS degree but seems that something is missing in real life to make all these things work together, so I don't want a tutorial or a good book about database design or design patterns, ....

Thanks in advance

解决方案

...I don't think that this business value will have a big factor in deciding what tech to use...

Actually it is important. Organizations usually choosing a specific platform / technology stack because it's impacts on the skills you need to hire for. Finding someone who is good at .Net and MS SQL, or, the LAMP stack is easier than finding someone with both of those skill sets. Your resource pool gets smaller, harder to recruit for - means harder to support your systems = more expensive / delays in fixing bugs / adding new features.

The same applies to vendors, integrating different systems down the line.

So how do you decide? Like @Home states, it's a broad question so it's hard to be precise but that doesn't mean we can't offer anything: here's the basic process I follow (steps 1 - 4 are most relevant to you at the moment, #1 especially):

Design / Solution Options Process

The best architectures and solutions are ones that fit appropriately into the context of the problem: what are the drivers that ultimately shape what the best architecture and solution look like? You want to get to the point where you can say "this we do ‘X’ because the business process legitimately requires it" and "we do ‘Y’ because of a technical limitation we should not have".

In a general sense you need to:

  1. Take the context of your problem as input.
    • Vision and relevant goals.
    • Constraints, risks, assumptions, issues & dependencies.  
  2. This will help shape your scoring criteria (this is how you will rate the ideas you come up with).  
  3. Define initial high level solution options / directions. These are blue-sky discussions that can be relatively free of constraints: think big, think outside the box. The critical point is to not start thinking in terms of implementation - or even specific technologies. You can also put business constraints to the side: "well we do this because the current business process is X, if we did Y (using a this new technology) we could then do Z and reduce operational costs".  
  4. Review and score these against your scoring criteria.  
  5. Pursue logical options: basically take output of 3 & 4 and take them to the next level. You may want to start thinking about enterprise / design patterns at this point.  
  6. Review and score these against your scoring criteria  
  7. Pursue implementation options: you need a component to do "X": do you re-use, buy or build? Are there best of breed tools you can use? Are they compatible with your current infrastructure? And so on.  
  8. Review and score these against your scoring criteria.  
  9. Record outcome (the reasons why) in an Architectural Decisions Register for future reference; this should / must include the inputs and outputs of the previous steps. The idea here is to prevent people who come after you from having to do all that work again - or blindly overwriting your well thought-through decision with a poor one.

这篇关于为使应用程序开发desicions的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆