Tuesday, October 9, 2007

DITA - That's correct!

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.
After the paper is written, the paper is graded on how well the student expresses his or her thoughts about the requirements of the paper. However if the instructor added another requirement that he plans to write a paper which is only comprised content from his students' papers then the paper writing process would be different. There would be discussions between the instructor and his students on what the instructor's paper is about and he plans to write the paper. This would also alter the students' approach to their papers. They would emphasize ideas and support their idea .This might restrict the flow and readability of the students papers To improve the flow of the paper, the students may choose to organize the information differently.

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: