Monday, June 12, 2006

Eight Point Checks for Servicing Software -- Servicing Software Part 2

Scenario
You as a part of Software Service Professional have been allocated to service software. User Interface Looks great and it has been meeting the existing business requirements. There has been complains of production problems, production down time and software slow to new business needs.

Point 1 Architectural Check #: Is there any Architecture in the system?
Observation : None. There is no logical layer or physical layer to separate the UI Layer, Business Layer, Data Layer
Consequence: Software Stays in Software Service Shop for a long time.
Action to be taken:
Step1: Understand the enemy. Just fix and learn the business knowledge and understand the code
Step2. Move the Data Logic and business logic to Middle Layer. No need to domain or CRC analysis at this stage.
Step3: Insert the new Architecture for new development.




Point 2 Automated Testability Check #: Is there factory layer or façade layer between UI and Middle Layer
Observation: None
Action to be taken:
Step 1: Create the factory layer for Middle Layer. Factory Layer provides high level abstraction




Point 3 Automated Tests Existence Check#: Do we have automated tests for factory layer or façade layer.
Observation: None
Step 1: Write the automated unit tests.


Point 4 Middle Tier Design Check#: Does Middle Layer Design maps to problem Domain?
Observation: None
Action to be taken:
Step1. Perform Domain Driven Design or CRC Analysis or Data Driven Design
Step2. Run automated unit tests.
Step3 Perform Continuous Integration (using NANT and CruiseControl or MSBuild)


Point 5 Logging Check#: Some behavior can be observed only during execution in production environment. Does system enable logging for that?
Observation: None.
Acton to be taken:
Step1: Writing your own logging routines
Or
User Microsoft Application Blocks
Or
User Log4net



Point 6 Exception Check#: Exceptions raised during production time are being logged
Observation: None
Action to be taken
Step1: Write your own Exception Mechanism
Or
Use Exception Application Block




Advance Checks#
All or None scenario creating problem in production. Are components using transaction?
Observation: None
Action to be taken
Step 1: Implement Enterprise Service or ADO Transactions


Point 8 Design Patterns Checks#
Will Design Patterns’ injection make the maintenance easier?
Observation: Yes
Action to be taken
Step 1: Implement Design Patterns
Step 2: Run automated unit tests
Step 3: Run the daily build


Good Reads

Survic has written a nice post

1 comment:

survic said...

>>>Step1: Understand the enemy. Just fix and learn the business knowledge and understand the code

----Very well put. A lot of times, I also put in database logging at this point, to help me to learn and to understand. It is almost a life saver. Also, be prepared that this step will can be long and arduous ;-)