About
Subscribe
  • Home
  • /
  • TechForum
  • /
  • CIO series: Managing software complexity in business application environment

CIO series: Managing software complexity in business application environment

 

Johannesburg, 23 Mar 2011

The increased rate of change and innovation experienced in the last decade have been both enabling and limiting for software development. New technologies provide opportunities and solutions to business problems that could never have been addressed a few years back; however, dealing with the complexity of multiple technologies, different platforms, diverse skills requirements, limited budget, a skills shortage, balancing investment in existing systems and board pressure on IT to perform has presented a rather large double-edged sword, not to mention sleepless nights for CIOs.

As we grapple with these and other software development challenges, Alacrity again brings you our CIO series, a selection of articles created to help CIOs make the right decisions.

In this article, we discuss software complexity as a result of change; based on two factors, the technology itself and the competitiveness of the business.

Although many new technologies promise simplicity, and newer technologies often are simple, it is seldom that the introduction of a new technology coincides with the termination of an equivalent portion of `old` technology.

`In with the new and out with the old` is not as easy as it sounds. In reality, the new technology, simple or not, just compounds the complexity issue as it also requires support, integration and management.

Rapid change in the business environment, globalisation and changing economics are putting pressure on businesses to improve competitiveness by introducing new products and services to markets quicker, among many other things, while at the same time still having to support existing products and services running on legacy systems.

As the new products and services are often designed with higher levels of automation, the requirements to support these vary greatly from their predecessors.

These factors create opposing forces for the CIO and IT department. On the one hand, IT needs to enable businesses to change more rapidly, while on the other hand, the increasing complexity of IT prevents it from doing so. It is becoming even more clear that IT departments that can better manage complexity will be in a stronger position to support their businesses than those that allow complexity to grow unchallenged.

As an IT company and solution provider to many IT departments, we`ve come face-to-face with this challenge over the past few years, and have found that by adopting a broad-based principle approach to solving problems or improving output that we`re better able to manage technical complexity.

Here`s what we suggest:

* Understand the basic causes of complexity in any given situation. These could range from complex business requirements, complex integration requirements, new technology or architecture implementations, and so forth. Bear in mind that complexity often results from the relationships between these factors, rather than any one factor on its own.

* Review these causes critically from a complexity standpoint - asking why they need to be complex. Is it possible to simplify the business requirements or use a simpler technology solution? Can we balance the complexity of the solution with the complexity required by the business?

* Consciously manage accidental complexity out of your environment. Inherent complexity is that minimum complexity to make any specific solution viable. Accidental complexity is that complexity which exists in the solution, but could have been avoided with proper planning, design and forethought.

* Use development and architecture practices, which make software simpler to maintain. For example, a Domain Driven Design approach strives to create a shared understanding of the business domain. A Test Driven Design approach creates software that is appropriately "sized" for the problem at hand (with a nice safety net of tests to support it). An SOA architecture attempts to abstract complexity to a level at which it can be more easily managed, and to reduce the level of coupling between different components. It is becoming more important to focus on good software development principles and practices as the rates of change and complexity continue to increase.

* Remove clutter. For example, it`s generally possible to put much of the complexity into the infrastructure. This may require careful upfront planning and a commitment to investment in infrastructure, but when done properly, can result in substantial re-use and simplification opportunities.

* Improve quality. It is no longer a given that you can control the environment in which your software will execute and from where it could be called. Today`s poor quality reduces the possibility of future re-use by increasing complexity. It also pushes up the cost of support dramatically over time.

In conclusion, we would recommend that CIOs invest energy into increasing awareness of the issue of complexity. Paying attention to managing complexity and its underlying causes can assist IT to become significantly more responsive in today`s world of rapid change.

"Everything should be made as simple as possible, but not one bit simpler." - Albert Einstein

Share

Alacrity

Alacrity is a privately held and empowered software development company that crafts custom software to fit a specific business and technology domain. Our 90+ passionate people provide software development services, software support services and software consulting services to leading South African companies and software entrepreneurs across a broad range of industry sectors.  For more information, please visit www.alacrity.co.za.

Editorial contacts

Kerryn-Leigh Anderson Eksteen
Zenkai Communications
+27 82 457 7236
kerryn@zenkai.co.za