As our client request, we are proceeding to change the base of our system. We already have the following structure:
A class has many students. (simple typical one - to - many)
Now we must change it to:
A class has many groups. Each group has many students. (Intermediate Object "Group" is inserted).
That seems to be a "simple" change, but it breaks all of the management interface, from both mobile client to web views. And in database structure also.
Our system is a data-management program where we have about 50 - 60 domain objects which are parts of a hierarchy model of around 5 levels. And the intermediate object is inserted in around the 2nd-stage.
My question includes 2 aspects:
1) How to estimate the efforts needed. I'm making a new code branch, then insert the new domain object, after that break the relation of the class-student to insert the new "group" in. Then look in the error-report of Eclipse to locate the troubled code. However, it makes the whole project red, and I'm having troubles giving accurate time-estimation for the task.
2) How to avoid/prevent this situation to happen in the future. It happens once before, and at that time I have spent a week to write database conversion script, as well as making the changes. But at that time the system is still small. Now it has grown big.