Get flash to fully experience Pearltrees
This is the second article in a four-part series on software architecture. Last month, the first article in this series defined what we mean by architecture. We can now turn our attention to the role that is responsible for the creation of the architecture -- the architect.
As technical people, it's really easy for us to think about software as a purely technical endeavour when we should always remember that software is really about solving business problems or providing some benefit to somebody. Over the past few years, more and more emphasis has been placed on this, evident from concepts such as enhanced customer collaboration, BPMN and SOA . Clearly the functional requirements are important because they ultimately govern what the system does. But as I've said before, the non-functional requirements are equally as important and part of the software architect's role is to balance these often competing forces to come up with a solution that meets the needs. Sometimes, the non-functional requirements will have more of an influence on the solution definition than the functional requirements.
The term software architecture intuitively denotes the high level structures of a software system . It can be defined as the set of structures needed to reason about the software system, which comprise the software elements, the relations between them, and the properties of both elements and relations. [ 1 ] The term software architecture also denotes the set of practices used to select, define or design a software architecture. Finally, the term often denotes the documentation of a system's "software architecture". Documenting software architecture facilitates communication between stakeholders , captures early decisions about the high-level design, and allows reuse of design components between projects. [ 2 ] Concept [ edit ]