 Today I was analyzing Java code for a refactoring effort.  Before our team could refactor the code, we need to write unit tests to be sure we didn't break any functionality in the software.  Unfortunately after looking at the code and asking other team members, I realized that the Java code was poorly designed.  What does it mean that the Java code was poorly designed?  Does that mean that the code didn't meet the software requirements or pass QA?  No, it means that it will take alot of work to introduce new functionality into poorly designed Java code.  The code is brittle, tightly coupled, not very reusable.  It is always beneficial to design all software before it is developed because during the design process the requirements and the initial design could be analyzed for potential bottlenecks, brittleness, tight coupling, etc., etc.  If  the software is developed without any design then it is a linear process.  The developer will write the code to meet the initial requirements however he or she does not take a step back to assess the developed code's resusablity and flexibility.
Today I was analyzing Java code for a refactoring effort.  Before our team could refactor the code, we need to write unit tests to be sure we didn't break any functionality in the software.  Unfortunately after looking at the code and asking other team members, I realized that the Java code was poorly designed.  What does it mean that the Java code was poorly designed?  Does that mean that the code didn't meet the software requirements or pass QA?  No, it means that it will take alot of work to introduce new functionality into poorly designed Java code.  The code is brittle, tightly coupled, not very reusable.  It is always beneficial to design all software before it is developed because during the design process the requirements and the initial design could be analyzed for potential bottlenecks, brittleness, tight coupling, etc., etc.  If  the software is developed without any design then it is a linear process.  The developer will write the code to meet the initial requirements however he or she does not take a step back to assess the developed code's resusablity and flexibility.This is also true in writing documents. In high school and college, students are taught that they need to create an outline of their paper, then a draft and then the final copy of the paper. The paper meets the instructor's requirement like:
- Write an essay about the Civil War
- Write a technical paper on how to build a Lawn mover
- Write a paper why Roe Vs. Wade is beneficial for the United States.
In the information age, every major organization is trying to mine data to give themselves an edge over their competitors. Companies like Google, Autonomy, Fast, Vivisimo, etc, etc offer products which offer search capabilities for unstructured data which is linearly, brittle and tightly coupled (just like this blog entry).
Yesterday I came across an XML standard which identifies the issue of linear writting and describes how to write reusable content. It is quite fascinating. The XML standard is called Darwin Information Typing Architecture (DITA). It uses ideas of inheritance and specialization. I don't know if DITA is the answer but it asks the right questions and it identifies the issues. Hope you enjoy the white paper (be warned that it is quite technical). If the white paper is too complicated then check out this power point presentation. Enjoy!
 
 
No comments:
Post a Comment