Choose Your Tools with Care

Choose Your Tools with Care

Giovanni Asproni

MODERN APPLiCATiONS ARE VERY RARELY BUiLT FROM SCRATCH. They are assembled using existing tools—components, libraries, and frameworks— for a number of good reasons:

? Applications grow in size, complexity, and sophistication, while the time available to develop them grows shorter. It makes better use of devel- opers’ time and intelligence if they can concentrate on writing more business-domain code and less infrastructure code.

? Widely used components and frameworks are likely to have fewer bugs than the ones developed in-house.

? There is a lot of high-quality software available on the Web for free, which means lower development costs and greater likelihood of finding developers with the necessary interest and expertise.

? Software production and maintenance is human-intensive work, so buying may be cheaper than building.

However, choosing the right mix of tools for your application can be a tricky business requiring some thought. In fact, when making a choice, you should keep in mind a few things:

??20

97 Things Every Programmer Should Know

?

?

Different tools may rely on different assumptions about their context—e.g., surrounding infrastructure, control model, data model, communication protocols, etc.—which can lead to an architectural mismatch between the application and the tools. Such a mismatch leads to hacks and workarounds that will make the code more complex than necessary.

Different tools have different lifecycles, and upgrading one of them may become an extremely difficult and time-consuming task since the new func- tionality, design changes, or even bug fixes may cause incompatibilities with

?

???????????????the other tools. The greater the number of tools, the worse the problem can become.

? Some tools require quite a bit of configuration, often by means of one or more XML files, which can grow out of control very quickly. The applica- tion may end up looking as if it was all written in XML plus a few odd lines of code in some programming language. The configurational complexity will make the application difficult to maintain and to extend.

? Vendor lock-in occurs when code that depends heavily on specific ven- dor products ends up being constrained by them on several counts: maintainability, performances, ability to evolve, price, etc.

? If you plan to use free software, you may discover that it’s not so free after all. You may need to buy commercial support, which is not necessarily going to be cheap.

? Licensing terms matter, even for free software. For example, in some companies, it is not acceptable to use software licensed under the GNU license terms because of its viral nature—i.e., software developed with it must be distributed along with its source code.

My personal strategy to mitigate these problems is to start small by using only the tools that are absolutely necessary. Usually the initial focus is on removing the need to engage in low-level infrastructure programming (and problems), e.g., by using some middleware instead of using raw sockets for distributed applications. And then add more if needed. I also tend to isolate the external tools from my business domain objects by means of interfaces and layering, so that I can change the tool if I have to with a minimal amount of pain. A positive side effect of this approach is that I generally end up with a smaller application that uses fewer external tools than originally forecast.

时间: 2024-10-25 12:27:38

Choose Your Tools with Care的相关文章

Android NDK and OpenCV Development With Android Studio

Android NDK and OpenCV Development With Android Studio Hujiawei 172 2014年10月22日 发布 推荐 0 推荐 收藏 4 收藏,5.7k 浏览 ---------------- If you do NOT know Chinese, you can just skip this part ---------------- 一直打算将原来的XFace进行改进,最近终于有了些时间可以动手了,改进计划如下:开发上使用Android

Install Hibernate in Eclipse Neon

1.Go to the following link http://tools.jboss.org/downloads/jbosstools/neon/4.4.4.Final.html 2.There are two ways to install mentioned below.  3.Choose Hibernate Tools and following prompts to finish the installation. 4.Verify the installation.

How to install DIG dns tool on windows 7

This guide explain how to install dig dns tool on windows 7 in few steps: 1. First go to http://www.isc.org/downloads and look for BIND, underneath select right version, for windows we have to choose the "(zip)" option of the latest release of B

The OAuth 2.0 Authorization Framework-摘自https://tools.ietf.org/html/rfc6749

Internet Engineering Task Force (IETF) D. Hardt, Ed. Request for Comments: 6749 Microsoft Obsoletes: 5849 October 2012 Category: Standards Track ISSN: 2070-1721 The OAuth 2.0 Authorization Framework Abstract The OAuth 2.0 authorization framework enab

工具使用说明-09-安装VMware Tools

1.选择"虚拟机"à"安装Vmware Tools" 2.选择"是"以及RH中提示界面 3.使用命令行安装 3.1.创建临时安装目录并解压安装文件到指定目录 mkdir tmp cd /tmp mkdir vmtools cd /media/VMware Tools/ tar -zxvf VMwareTools-9.6.0-1294478.tar.gz -C /tmp/vmtools/ 3.2.执行安装,按提示选择默认 [[email prote

Overview of iOS Crash Reporting Tools: Part 1/2

Believe it or not, developers are not perfect, and every once in a while you might have a (gasp!) bug in your app. You will try your best to ship your apps with no bugs in them, but more often than not you realise afterwards that a bug has slipped th

Overview of iOS Crash Reporting Tools: Part 2/2

Thanks for joining me for the second part of this two-part series on crash reporting services! The first part introduced you to the architecture of crash reporting services, including storage, symbolication, and server-side management. As well, I pro

Java Performance Optimization Tools and Techniques for Turbocharged Apps--reference

Java Performance Optimization by: Pierre-Hugues Charbonneau reference:http://refcardz.dzone.com/refcardz/java-performance-optimization Java is among the most widely used programming languages in the software development world today. Java applications

linux 安装VMware Tools 方法 (1)

虚拟机安装 VMware Tools for Linux 介绍: VMware Tools是VMware虚拟机中自带的一种增强工具,相当于VirtualBox中的增强功能(Sun VirtualBox Guest Additions),是VMware提供的增强虚拟显卡和硬盘性能.以及同步虚拟机与主机时钟的驱动程序. 只有在VMware虚拟机中安装好了VMware Tools,才能实现主机与虚拟机之间的文件共享,同时可支持自由拖拽的功能,鼠标也可在虚拟机与主机之前自由移动(不用再按ctrl+alt