The Process of Software Architecting
A good software architecture is the foundation of any successful software system. Effective architecting requires a clear understanding of organizational roles, artifacts, activities performed, and the optimal sequence for performing those activities.
With The Process of Software Architecting, Peter Eeles and Peter Cripps provide guidance on these challenges by covering all aspects of architecting a software system, introducing best-practice techniques that apply in every environment, whether based on Java EE, Microsoft .NET, or other technologies. Eeles and Cripps first illuminate concepts related to software architecture, including architecture documentation and reusable assets. Next, they present an accessible, task-focused guided tour through a typical project, focusing on the architect’s role, with common issues illuminated and addressed throughout. Finally, they conclude with a set of best practices that can be applied to today’s most complex systems.
Review By: Siva Krishnajee
03/29/2010The job of an IT architect is different from other technical people in the software industry. An IT architect should have sound knowledge of most of software's technologies, platforms, development methodologies, processes, hardware, and management of technical people. The job also varies from organization to organization and from project to project. It is believed that only a few people can perform this job.
Authors Peter Eeles and Peter Cripps provide a complete reference for architects explaining the process of architecting software. This book would really help both practicing and aspiring architects to do their job properly. Nowadays, the role of software architect is becoming prominent and visible in enterprises as they are involved in the strategic direction for IT in every enterprise.
The first chapter of the book clearly defines the scope of the software architecture and the roles that the architects are expected to play. Architects are expected to provide technical competency to the enterprise and also play the role of decision maker, negotiator, and contribute to organizational politics. Particularly, these skills matter when organizations are merged or acquired by one another. During those times, organizations rely on architects to explain the pros and cons of the software and technology that they choose to go forward with.
A synopsis of the different methods of process architecting fundamentals is provided in chapter 3. This chapter deals with the fundamentals of rational unified process (RUP), unified method framework (UMP), OpenUP, eXtreme programming (XP), Scrum, feature-driven development (FDD) and Lean. The authors also discuss software development processes such as waterfall, iterative, and agile.
The authors describe concisely the reusable architecture assets (chapter 5). I, having worked in the service-oriented architecture (SOA) world for many years, can say that the authors' focus on the subject veers to making it required for the architects to know. The core principle of SOA is to reuse the software assets that the enterprises have procured and/or have developed already. It also elaborates on how the software architects should make use of the existing software in new developments. This chapter also refers SOA and SaaS style architectures.
The core process of software architecting through defining requirements and creating the logical and physical architecture (chapter 7-9) are well explained by the authors. The steps in the process have been discussed clearly with adequate details. One who masters these steps will really be capable of managing the process of architecting.
Overall this is really good book about the software architecting. This is a must read for current and aspiring software architects.