08.01.2013 Views

Back Room Front Room 2

Back Room Front Room 2

Back Room Front Room 2

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

MANAGING COMPLEXITY OF<br />

ENTERPRISE INFORMATION SYSTEMS<br />

Leszek A. Maciaszek<br />

Macquarie University, Sydney, Australia<br />

Email: leszek@ics.mq.edu.au<br />

Keywords: Software complexity, software architectures, object dependency management.<br />

Abstract: The complexity of modern software is not that much in the size of systems as it is in the “wires” – in the<br />

linkages and communication paths between system components. The inter-component linkages create<br />

dependencies between distributed components that are difficult to understand and manage. The difficulty is<br />

inflated by the fact that components are frequently developed and managed by separate teams and by<br />

various component providers.<br />

This paper identifies main issues for successful management of complexity in large software projects. It<br />

uses the holon hypothesis to explain that all complex systems of a stable but evolvable character display<br />

hierarchic organization. The paper makes it clear that a complexity-aware architectural design paves the<br />

way for developing supportable systems. It makes it also clear that unless implementation is designconformant<br />

and complexity-assured, the initial good intents may still result in an unsupportable system.<br />

Without rigorous project management, supported by tools able to compute and visualize complexity metrics,<br />

contemporary large software production risks delivering unsupportable systems..<br />

1 INTRODUCTION<br />

Complexity management and dependency<br />

management are two sides of the same coin.<br />

Dependency management is an integral part of<br />

architectural design. Architectural design takes a<br />

proactive approach to managing dependencies in<br />

software. It does so by deciding early in the process<br />

on hierarchical layers of software components and<br />

on dependency firewalls between the layers. This is<br />

a forward-engineering approach – from design to<br />

implementation. The aim is to deliver a software<br />

design that minimizes dependencies by imposing an<br />

architectural solution on programmers.<br />

The outcomes of the proactive approach to<br />

managing dependencies must be monitored by the<br />

reactive approach that aims at measuring<br />

dependencies in implemented software. This is a<br />

reverse-engineering approach – from<br />

implementation to design. The implementation may<br />

or may not conform to the desired architectural<br />

design. If it does not, the aim is to compare the<br />

metric values in the software with the values that the<br />

desired architecture would have delivered. The<br />

troublesome dependencies need to be pinpointed and<br />

addressed.<br />

This paper refers to four fundamental issues in<br />

design of enterprise information systems:<br />

I. Seruca et al. (eds.), Enterprise Information Systems VI,<br />

© 2006 S pringer. Printed in the Netherlands.<br />

30<br />

30–36.<br />

(1) component design that reduces complexity and<br />

makes component dependencies traceable in<br />

program and database structures, (2) dependencyminimizing<br />

design of the architectural layers<br />

housing application components and reaching to<br />

database and web services, (3) round-trip<br />

engineering with metrics to evaluate system<br />

complexity, and (4) identification and specification<br />

of design principles and patterns targeting<br />

minimization of complexity in enterprise<br />

information systems.<br />

Prior to describing our approach for managing<br />

complexity in systems, the paper explains the<br />

background for it – software holons. The concept of<br />

holon (from the Greek word: holos = whole and with<br />

the suffix on suggesting a part, as in neutron or<br />

proton) was introduced by Koestler (1967) and it has<br />

since been used by various branches of science<br />

ranging from biology to communication theory, as<br />

observed by the theory originator in Koestler (1980).

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!