Bridging GIS: Developing system independent applications
Third party relationships
The open concept must be considered from the first phase of the project cycle. How will this
openness be achived? Do current developers know the accepted standards or is additional
training required? Perhaps, most important, what tools and third-party resources will be used to
complete the task?
Developer knowledge is becoming increasing more and more diverse. Once upon a time, the
better a person knew syntax, the better a developer that person was. Where a developer once
focused most of his/her time learning the syntax of a language and understanding the data model,
the developer of today must know much more than these. Language protocols, APIs, network
basics, system security and system architecture are just some of the things today's developer
must understand and apply. Because finding this complete skillset in any one individual is
unlikely, corporations and individuals have developed formal and informal partnerships. It is
only through these "virtual teams" that success can be achieved in creating open applications.
By utilizing third party resources, the developer can concentrate on core and custom
functionality, while still achieving openness. For example, rather than developing code
specifically to read an Oracle database, it can be developed to be SQL compliant and use ODBC
drivers. The developer concentrates on writing standard SQL statements and does not worry
about whether the user's database will be Oracle, SQL Server, Sybase or anything else. As a
fhrther step to openness the developer can allow for customization by performing queries that are
stored in the database, not in the code. This allows the user to change the query without need of
code changes and recompiles.
Another example of working in a virtual team is by use of development tools that conform to
open standards. Take, for example, a developer who would like to give the user the ability to
view and manipulate engineering drawings. It would take far too much time to develop interface
and translation routines for each engineering or graphics package on the market today. Instead
the developer will rely on a company that specializes in engineering and image processing to
provide him/her with a tool to use. This tool maybe a dynamic link library (DLL), an Active-X
control, binary library, etc. In either case it will provide the developer with a single standard
interface to access any of the recognized formats.
In his/her code, the developer does not have to worry about how to translate the individual image
or engineering formats. All s/he has to know is how to communicate with the third party tool.
To the developer it is completly unknown as to what type of object the user may have. It is also
completely unknown how to read and translate that type of object. What the developer needs to
know is how to speak with the tool; how to have the image utilize a standard metadata format
that describes itself, how to ask it to read or load the image and how to have the changed image
saved. In each of these cases, the developer does not need to know or care how each happens.
All s/he cares about is how to make the requests.
Information sharing throughout the virtual team is essential to success. This means the
developer, too, must expect to share her/his time and knowledge if sdhe expects to receive
information and cooperation in return. Or as Zig Ziglar, a well-known motivational speaker
says, "You can have anything in life you want, if you just help enough other people get what they
want."
Open ended thinking
One could dare say that yesterday's best developer, in terms of syntax and data model
understanding, would be a failure in today's world without adequately understanding
partnerships and virtual teams. Conversely, the foremost partnerships and information sharing in
the world will not guarantee the best, or even good, developer. In addition to partnerships and
information, good development practices and standards are imperative to producing open,
independent applications.
Several good development practices include logically handling diverse functionality of operating
systems, coherent layering and use of building blocks, dynamically loading data, intelligent use
of metadata for database tables and fields, and custom creation of objects for cross-functional
applications.