There must be hundreds of books on the software developmental process, but I have yet to see a book that covers the business, technical marketing, sales cycle, deployment cycle, release cycle, licensing, installation, upgrade cycle, and everything in the middle all in one compact book. This book TRULY covers the life of a software application and everyone involved in it.
For us techies, this book starts with what we are familiar with: "Why software architecture matters?" The author starts with a general overview of the topic, but it goes much further into the non-technical details software architecture, such as the Social Structure aspect:
"A good architecture works for the team that created it. It leverages strengths and can, at times, minimize their weaknesses. ... Once created, the architecture in turn exhibits a strong influence on the team. No matter what language you've chosen, you have to mold the development team around it because it affects such as things as your hiring and training policies."
New comers to the architect world don't really think about such aspects, or at least it's not really high on priority on many people's lists. The author puts such things right next to profitability, stability of the architecture, and defining the technical boundaries. Granted that Social Structure aspect of the architecture is as important as the others, you can't really find many books out there that treat it as such. Personal experience teaches us that, but there are cases, many cases, that one doesn't have the luxury of "trial and error". The author takes great pride in his experience and has written this book like a personal assistance to a newbie to the job, and to the expert architect with topics such as branding issues, licensing affects on the overall architecture and more...
Tarchitecture and Markitecture are two words/concepts that are used frequently throughout this book. The author starts with the inception of software applications and explains the important rule that Market Architecture (Markitecture) and Product Management have in the overall picture of a software lifecycle. Why Business plan is important and how it should be written, how to release version 1.0 and subsequent versions, how customer input and interaction with the markitects play the most important rule in the subsequent releases of your software, and other such important questions are covered in chapters 2 and 3.
The chapter Software License and Licensing models is probably one of the most valuable chapter (chapter 4) in the entire book. The author describes the concept of licensing and how it fits into the overall architecture and how it affects the architecture very elegantly. Various licensing models and their pros and cons are described:
· Time based
· Transaction based
· OEM bases
· Metering style
· Hardware based
· Services based
· Revenue Obtained/Costs saved.
The author explains why it is important to select the right licensing model, and how and why it could have a negative effect on your architecture if the wrong one is chosen. Various options for choosing a model are then explained such as the Honor System, the homegrown license managers, and the third party tools available.
Another important aspect of software architecture - the-after-development-has-been-done-now-what aspect, is covered throughout the rest of the book. Deployment, installation, configuration and upgrades are the key topics. Other topics such as extensions to the current architecture, logging and branding are also covered in detail.
The chapter on installation is another well-covered chapter that talks about a topic not covered at all or well in other books out there. Various deployment architectures are covered; Customer site installation, ASP, Managed Service Provider, and Web services models make up the topics for this chapter. This chapter, just like all the other chapters, relates the topic at hand to the overall system architecture, and why and how it can have an effect on the overall architecture of the system.
Throughout the book, one theme screams out to the reader: "How every decision an architect makes affects the rest of the software life cycle, and what the architects need to think about and consider before coming up with their design?" The cycle - software life cycle, and how it is affected by the end user/customer, why it's the job of the market architects and business managers to gather the key points from their customers, what are some of the concerns that are common with any architecture (deployment issues, upgrade concerns, installation difficulties, logging and error reporting, security concerns), and tone of the most important aspect of all: Social aspects and how they have an important affect on the tarchitects, markitects and the overall application. I think the author says it best in the preface of the book:
"You need to move beyond software architecture and move toward understanding and embracing the business issues that must be resolved in order to create a winning solution"