Webservices. CBDI Service Oriented Architecture Practice Portal. Characteristics of a software architect. 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. The role of the architect is arguably the most challenging within any software development project. The architect is the technical lead on the project and, from a technical perspective, ultimately carries the responsibility for the success or failure of the project. Here's how the IEEE defines the term "architect": Software Architecture Management - define software architecture, control architectural complexity. The influence of non-functional requirements. 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.
Software architecture. Software architecture is the high level structure of a software system, the discipline of creating such structures, and the documentation of these structures.
It is the set of structures needed to reason about the software system, and comprises the software elements, the relations between them, and the properties of both elements and relations. The architecture of a software system is a metaphor, analogous to the architecture of a building. Software architecture choices include specific structural options from possibilities in the design of software.
For example, the systems that controlled the space shuttle launch vehicle have the requirement of being very fast, and very reliable, in principle. Therefore an appropriate real-time computing language would be chosen. Similarly, multiple redundant independently produced copies of a program running on independent hardware and cross-checking results would be a software system architecture choice to satisfy the need for reliability. Implementing REST Web Services: Best Practices and Guidelines.