Sunday, August 14, 2011

Keep Design by the Minute

By: Sohair Ali
 Software products go through several stages as they mature from initial concept to finished product. After the purpose and specifications of software are determined, software developers will design to develop a plan for software. It is important to design and document software in an organized way so that it can be easily understood and maintained after the initial release. 


While designing software a lot of concepts and practices are the tools of software designers like abstraction, patterns, modularity, cohesion , separation of responsibilities, modularization and OO design principles

After accomplishing the task of design, this work needs to be maintained, reviewed and modified if needed while implementation and we are facing the question of How to write a code that preserves the initial architecture design, make sure of preserving and recovering the design of software in its implementation phase and avoid losing design in code?



Yet the code is all that exists at run time and it is all what we have

"The source code is often the only accurate description of the software. On many projects, the only documentation available to programmers is the code itself. Requirements specifications and design documents can go out of date, but the source code is always up to date. Consequently, it's imperative that the code be of the highest possible quality. “ - Steve C McConnell, Code Complete: A Practical Handbook of Software Construction 


Problems to Track Design within Implementation Phase

  1.   A lot of mapping and assumption require
  2.  Relies on well structured and named code, which could be accomplished by defined Naming conventions within source code.
  3. Design validation
  4. Real measurement of design metrics items e.g. Cyclomatic complexity and dependency.

Design Information 
 Many possible types of design information but two broad groups: static and dynamic


Static information
Dynamic information
  • Static information is used to define what a system is.
  • Describes structures visible at design time.
  • Including class diagram, domain model, context diagram
  • Dependencies between components



  • Dynamic information  define what a system does
  • Most business analysts are more used to working with dynamic (behavioral) models
  • Describes structures visible at runtime(invocation ,dataflow ,sequencing)
  • Size and speed(how many times of calls)
  • Design validation
  • Does it really do what the design says it should?


By Using combination of tools to maintain check and retrieve design information from code it could be easier to overcome the previous problems.

Static Design Information Tools


Currently there exist a lot of tools which provide the following features:
  1. Collecting metrics about the code
  2.  Analyze code structure
  3. Specify design rules

Examples:


References



Steve C McConnell, Code Complete2: A Practical Handbook of Software Construction



About Sohair Ali:


 Software engineer at Symbyo Technologies Egypt.Contact with Sohair at:http://eg.linkedin.com/pub/sohair-ali/20/464/bb4.

No comments:

Post a Comment