Tuesday, December 11, 2007

Software Architecture as Critical Success Criterion

Basically, architecture is a must and a success criterion for software and system development, especially when we are talking about complex and distributed systems. We may argue about details, different types of definitions, description and realization. But if we question software architecture in general, we are not doing serious business. Architecture must be a fixed part of building systems, because software development is about computer SCIENCE and should be based on ENGINEERING principles. Nobody would argue about having architecture in the process of building houses, bridges, etc. We must attain the same level of maturity in software and system development, especially when we take in account that writing software is still a heuristic process. I concede it is still a rough and bumpy road.
My definition is pretty simple: Software Architecture is the main interface between requirement management and development. Software Architecture defines the basic components (or services), their main interfaces, their interaction, communication and distribution within the system. It reflects non-functional requirements like performance, robustness and stability (just to name three) in particular. In addition, software architecture is essential to tame complexity, the worst enemy of stable, secure and lasting systems. And, a decent description of the architecture is the best tool to explain a system to all stakeholders – customers, developers, testers, marketing folks and managers. This might sound simple but it is definitely not. Let’s discuss the reasons in the next posting.

2 comments:

paultpreiss said...

Good comments. Check out www.iasahome.org if you're interested in architect communities.

You might want to look a little beyond software architecture and connect it with other forms (infrastructure, information or business). What are the similarities? What common amongst all of them?

Maik G. Seewald said...

Commonalities are manifold; especially when we talking about infrastructure and information. Just one example. Effective dealing with informations needs an architecture: I call it information architecture. I's mandatory for huge web sites in order to navigate and present information in a smart way (to keep user browsing...)