Skip to main content

Development Philosophy : The Framework approach

Warning: Long blurb about what is in my head right now
 
Ok so I have been pondering the role of architecture and its current relevance. In some organizations it is ignored in others it is a hindrance. It is very hard to measure its impact. This is a thought that came from that exercise.

Development should not be difficult; so keep it simple for the majority of things and hide the complexity. One of the key things business wants is to be more agile and get what will add business value as quick as possible. This allows them to have a completive edge over the competition. 

As for maintenance it is a hidden cost at time of development and will cost many times more than the cost of the initial development over time. This is kind of where my passion lies bringing down the cost of maintenance and upping the speed of development.

One of the tools I use to address the above is Framework based development where you don’t just provide a blueprint but a working fully functional framework for you development team to use that provides an increase in development speed and increased maintainability. 

The responsibility for the creation of the framework once tools have been decided falls to the team. You generally don’t have much choice when it comes to toolset (.Net, Java, Oracle blah) so it is best to accept it and create the best and most productive tools around the chosen technology to make everyone’s life easier. I have never come across a tool/ product which was so mature and such a good fit that no custom development / reporting etc was needed.  That custom development should take the guise of a framework for want of a better word. A set of tools, generators, standards and code that guide a developer into creating the 80% (of the 80/20 rule) of the application and that allow development to be a simple process.

Take note: The following points will take a decidedly Java flavor but you can replace these ideas in any technology.

Prototype – You start out with a prototype that proves your ideas and structure. This is a key element to any framework because it first provides the base for what will come and addresses any technical problems. Also it allows the team to understand and embrace any new technology.

Project structure – What does your application look like what code is common and how is it structured. Do you have separate teams that work on separate parts of the system? How will it be deployed? You need to address all of these kinds of questions to get the right fit for you team and how you work.

Standards – Naming standards and code usage patterns must all be documented on a wiki.

Tools – What can you create to make the developers life easier?

Build, CI, Unit tests – Imperative to set this up as part of your framework. This will allow you to test any changes to your framework with confidence.  

Persistence, Visualization etc developer tools – Object structure to abstract the complex repetitive code. Templates to allow uniformity in UI, Custom tags. This is where the meat of any framework lies the patterns an abstractions that allow for speedy development. Things like how can you have a standard interface into your model layer. How can you ensure that Bean code is generilaized enough that a developer has to do the least amount of work.

Data store – Do you check in packages and procedures and sql stuff into version control and how is this managed.

Team structure and process – Everyone should understand the framework and why documented in wiki and how the moving parts fit together. Code reviews are helpfully keeping everything on the right track.

Comments

Popular posts from this blog

ADF Encountered deferred syntax #{ in template text.

OracleJSP error: oracle.jsp.parse.JspParseException:  Error: Encountered deferred syntax #{ in template text.  If intended as a literal, escape it or set directive  deferredSyntaxAllowedAsLiteral This normally happens when you have some tag lib dependancy problems but this was  not the case for me... My problem: For some reason my model project had web stuff in it(public html etc)  so I had to remove the public html stuff from my project and manually edit the Model.jpr project file and remove the tag lib entries at the bottom o the file. Go figure.    

JBO-25013: TooManyObjectsException

oracle.jbo.TooManyObjectsException: JBO-25013: Too many objects match the primary key oracle.jbo.Key[Key null ]. Ok so for you it may be trying to insert a duplicate record this should explain your problem (also check trigger they could be the cause.) NOTE: You can also try to create a new duplicate EO if you have a page with two VO's using the same EO. This could sort your problems. For me I needed to add a launch listener on my LOV and clear the cache of my vo. LOV <af:inputListOfValues id="NameId" popupTitle="#{bindings.Name.hints.label}" value="#{bindings.RolName1.inputValue}" label="#{bindings.RolName1.hints.label}" model="#{bindings.RolName1.listOfValuesModel}" required="#{bindings.RolName1.hints.mandatory}" columns="#{bindings.RolName1.hints.displayWidth}" shortDesc="#{bindings.RolName1.hints.tooltip}" launchPopupListener="#{backingBeanScope.backingBean.launchPop

MANIFEST.MF merge JDeveloper for an executable jar

Goto your project > properties. Then click on deployment in the menu. Edit or add a jar deployment profile. Fill in the details under jar options (select Include manifest and give it a main class name) Also remember that the merge functionality only works with a BLANK line at the end of the merge file. REALLY this caught me. My merge file contents: Class-Path: commons-codec-1.3.jar [...empty line here CRLF...]