Softcoding and Utilities
Ravings and ramblings about code design
Programming and Design, 081115


Though I consider the lack of multiple-inheritance in Java a boon, it offers some great challenges in terms of system design. In my experience it has taught me to work extensively with interfaces, thus I have trained my modular thinking. Obviously this have influenced my work, where I have now designed a highly abstracted open ended software architecture. Or to put is short: less framework and more utility library thinking.

Where as a framework lends you extension points, is also imprisons you in a predefined library environment and defines the system design of your application. But what if the requirements changes and the framework no longer fits the bill? Yes, what do you do? In best cases you re-design the framework, which of course is only possible if you have access to the source code and a lot of time on your hands. That is probably what you do, or you pick another framework and begin the tedious task of porting your project.

For this reason I prefer to work with frameworks that can be encapsulated, to those that is supposed to do it all for you. Light weight frameworks that targets and solve a well defined problem is the shit, because you can put it in your tool belt and pull it out whenever you feel the need. This approach does not provide you with a solution that does it all for you, what it does is to provide you the means for a swift, rapid and easy development of new applications. Thus would the context change drastically and force you to rewrite the application, you would have the support of your tools that does not lock you in but which enables you to develop the new application quickly.

Another issue that I feel I must have to address when considering which approach one should have, is that of softcode vs hardcode. In my experience frameworks kind enables softcoded solutions, whereas the utility thinking lends itself for hardcoded ones. So while a framework can lock you in, it will probably do so by the lure of softcode. Since solutions that draws on softcode system design, offers more dynamics then utilities one can in my experience rationalize the programming process. Unavoidable couplings and possible entanglements can be encapsulated and managed from inside the selected framework and so forth.

So what I do is to make extensive use of framework architecture, but developing and working with those as modules and utilities in my toolkit. Right now I got applications sharing the same codebase, which is running on both JavaME, JavaSE and Android. Obviously they have platform specific classes and a framework for handling common but platform implementation specific objects. But that framework is merely a module among others in the actual application. In an environment where one has to develop new kinds of applications with ferocious speed, this I believe is the way to go.

- Aramis

Blogg listad på Bloggtoppen.se           Add to Technorati Favorites




Comments






Blog Why Not?!
Personal Blog of Aramis

Welcome. Filter: Show all, Personal, Programming & Design, Spirit, Economics.

There is no particular goal to this blog, but to convey what I find interesting and worth writing about. Get blog as RSS or ATOM . I never update my twitter feed.

Drive-By Distributed Computing 100218
The Dream Machine 091031
My first GA 091010
Hyper Media 090909
GPS Tag Your Site 090809
OO Instead of Flags 090803
Pool vs Cache 090730
GUI Programming 090704
Brain Computer 081223
Softcoding and Utilities 081115
Throwaway Apps 081027
HTC Dream 081004
J2ME Extends 080911
123 080730
Collaboration 080719
3H Listener 080711
Agent Scripting 080707
Biological Mechanisms 080609
Transitions and GUI 080531
Semantic GUI 080530
Breathing GUI 080529
Diggin 080525