How can the complexity of a complex system be estimated without analysis or modeling?

In this article , I will highlight a very interesting question concerning most of the software engineers who have to put in extra working hours because someone in the business development or the project planning team have misunderstood the complexity of the project and under quoted the time estimates forcing the development teams to work overtime to meet the deadlines.

In my other articles related to systems engineering and modeling we have discussed the following

  1. Software systems are automation systems responsible for automating the complexity of the real world systems using the hardware resources in the most optimal manner so as to give a value to the end user.
  2. Software systems are inherently complex, if there was no complexity then we don't need software systems in the first place.
  3. Analysis is the phase wherein the complexity of any complex system is understood using different kind of modeling techniques.
  4. Modeling is a pre requisite for a human brain to understand anything that is complex.
  5. Without implicit or explicit modeling a human brain cannot understand anything that is complex.
  6. The root cause of complexity of any system lies in the structural complexity of the system.
  7. The number of scenarios that needs to be codified per functionality is directly dependent on the structural complexity wherein the number of scenarios to be codified increases exponentially with every type of structural entity within the system.

So looking at the above mentioned facts I feel even a laymen can understand that proper analysis using modeling is needed for any realistic estimates about the complexity of a complex system.

Unfortunately as mentioned in my other articles, standardized modeling using UML is mostly missing and severely ignored by the software development industry. If the software developments teams are not aware of UML and its usage then it is quite a long ask to expect the project managers and the business development team to know about analysis and modeling.

Today most of the time, the business development team in consultation with the members of the pre sales team (including project manager and an architect) decide on the complexity of the project and the corresponding estimations strictly on the basis of their past experience and they suggest the time and cost estimates to the customer. As the estimation of complexity and the adjoining numbers has been decided upon only on their past personal experience and not by using formal modeling techniques , most of their times their understanding of the system complexity is flawed and hence their estimates go very much off the mark.

I have personally come across a case wherein one of my acquaintance who was working for a software development company was sacked after he misjudged the complexity of a system which was found out late in the development stage. He misunderstood customers request for 10 user interfaces to 10 UI Screens (or web pages) and under quoted the cost and time estimates. Actually the customer was asking for 10 user interfaces for 10 different actors who were supposed to use the system with many functionalities in each of the user interfaces while this business development manager misunderstood it to 10 simple web pages.

Although this way of estimating the system complexity looks flawed and non scientific but has been used prevalently by most of the business development and presales team belonging to most of the companies.

Why didn't any one try correct this style of estimation? The reason is in the past most of the projects were based on time and material model wherein more the time and material invested, more was the revenue for the software development company. So even if the business development team and the presales team had misjudged the complexity of the system , their company only got benefited out of this mistake as increased scope means more revenues for the company.

But as the customers have become more prudent about the "Time and Material Model" and are now pushing for Fixed Cost Pricing, the situation seems to be becoming difficult for the software development companies.

In a Fixed Cost billing model, if the Business Development and the Pre Sales Team makes an error in judging the complexity [which they invariably do] of the system, it is the software development company which stands to loose and the development team that mostly has to bear the maximum brunt. As the business development team misjudges the complexity of the system, they promise a much lesser cost and timeline as compared to their competitors which gets them the project .

During the project execution stage[with analysis and design stage mostly missing] the development team will find out the exact complexity of the system , but it will be too late as their business development team has promised the customer time and cost which is very much off the mark. The customer is not likely to consider their excuse of misunderstanding the complexity and hence revise the cost and time estimates. This invariably creates a situation wherein either there is a lot of bad blood between the customer and the software development company or the software development company is forced to meet the original cost and time estimates by throwing in extra man power or by forcing the development teams to work out of their skin.

In my training programs and workshops a lot of my participants share their experience wherein their business development team misjudged the complexity thereby resulting in either the customer taking back the project or a lot of fire fighting by the development teams to pull it off.

Hence today we have reached a stage wherein the software development companies are feeling this pain.

I am not saying that the business development team and presales team needs to draw all the UML Models for the system for them to estimate the exact complexity as they don't really have the time at that stage to do a complete analysis. But one doesn't need to draw all the UML model to judge the overall complexity of a system , just by drawing a complete structural model using class diagram along with use case diagram the overall complexity can be judged to quite a level of accuracy. Drawing the above mentioned diagrams takes between few hours to 4-5 days which is quite mangeable.

This is again a problem which can be solved very easily provided that the management is sincerely willing to address the same.

Hemant Jha
Founder - VPlanSolutions
Researcher, Trainer