Complexity in software applications, there is a limit

publicado a la‎(s)‎ 21 oct 2013, 7:10 por Marcel Guzmán de Rojas Wesner   [ actualizado el 27 feb 2014, 17:43 ]
There is a limit in the complexity of software applications that organizations can handle. Software application complexity is proportional to lines of code of the product.

Only a few companies can develop software projects that require over 1 million lines of code. Most companies have difficulties handling over 200,000 lines of code per application. The difficulties are evident in multiple and recurrent bugs, a software that is never fully operational without "developer team babysitting". The user never reaches a smooth operation, without requiring constant help of IT staff. The deadlines are never reached and the actual cost and time of the project is often duplicated.

These symptoms are showing that complexity is not being realistically managed.

However there are thousands of complex applications that run smoothly. Some of them are developed by companies that have the capability of handling millions of lines of code. But most of them are successful because they developed or chose an application development framework that reduces by at least 80% the lines of code required by 80% of the operations required by the software. Most applications have operations that are repetitive and require lots of code. 

For example, typically forms management is an operation that requires a lot of code, even by using most UI frameworks. Producing a simple user registration form may require thousands of line of code when this form has about 100 fields, e.g. an insurance registration form. Producing a set of forms for user registration requires many thousands of lines of code.

If you use an adequate forms registration framework the application code should require only several hundred lines of code to handle the complex relations between fields and the multiple forms in the registration procedure. Complexity at the application level has been significantly reduced with this approach.

Of course part of the complexity has shifted to the registration framework. This should be a separate project again limiting complexity. A generalized forms solution means it can be used in many projects.

Continuing on the forms management example, there are several important features that the framework should have:
  1. It must be very easy to define a form, and a IT professional must be able to smoothly make definitions with less than 4 hours training.
  2. The definition "language" must be intuitive.
  3. It must be very easy to change the definition, adding and removing fields and characteristics to the form.
  4. The definition should be also used to create and update the corresponding database objects' definition.
  5. The framework should immediately produce a working prototype, for the designer and user teams to evaluate and test.
A common pitfall of failed and never successful software projects is that many governments and companies engage in sophisticated software solution development projects without carefully assessing the complexity challenges the project will face. Complexity is a constraint of a software development organization. Being unrealistic about the complexity management capabilities of a software development team implies being unrealistic on time, budget and quality of the product. Most of these products are never released, and some of them face the problems of