Real World Software Architecture

Real World Software Architecture is dedicated to providing information and experiences from the field of Software Architecture.



Subscribe with RSS or ATOM Add to Google

Links

  • Home Page
  • Real World Software Process Engineering
  • Suggested Reading
  • .NET Dev and Arch Collection
  • SEI Essays on SA
  • Software Architecture
  • Bredemeyer
  • wwisa
  • Product Line Engineering
  • PLEES
  • Software Product Lines
  • MSDN Architecture Center
  • patterns & practices






Tuesday, October 30, 2012

Windows Phone 8 SDK what a Big Time Flop


So this evening I had the pleasure of installing the Windows 8 Phone SDK, and 1/2 an hour later uninstalling it.  Microsoft has made my life easier by making me run the Windows 8 Phone SDK on Windows 8 and also requiring Hyper-V to be able to run.

I have my instances of Windows 8 running in Parallels and VMWare which don't support running Hyper-V.  At least not now, and I don't care if they ever do.  I should not have to run Hyper-V in order to run a simple emulator.  What clown came up with that brilliant idea?

A machine running Windows 8 with SLAT enabled is required to be able to run these emulators.

Well, at least I don't have to worry about build a Windows 8 Phone client for the app I am building.  Man Microsoft has become such an unorganized mess it is almost unbelievable. 

Back to Xcode...

UPDATE:
This is what I got back from Parallels.

I am sorry to inform you Tad. As of now Hyper v is not supported by Parallels. May be in upcoming version Hyper V will be supported by Parallels Desktop application.

Time to move to VMWare Fusion

On VMWare site:

Hyper-V

Hyper-V has been added to the Workstation 9 guest operating system list. This enables customers to run Windows 8 with Hyper-V enabled, or install Hyper-V Server. This can be used for educational purposes or for building prototype Hybrid Clouds. This feature is NOT SUPPORTED and probably never will be. Microsoft does not support nesting of their hypervisor which makes it extremely difficult - if not impossible for VMware to fix issues that may occur in this configuration. For this reason, this capability has been implemented purely to see if we could do it!
CAUTION: DO NOT ATTEMPT TO RUN HYPER-V ON A VIRTUAL MACHINE IN PRODUCTION.

UPDATE 2:

I asked Parallels if there are any plans to support this.  They responded with:

With respect to your previous correspondence I would like to let you know that as of now we do not have any ETA to get Hyper V feature implemented on Parallels Virtual Machine. However we would suggest you to keep update with our upcoming builds and version of Parallels you will come to know once this feature gets implemented.
 
My Thoughts:
I personally do not think Parallels is lacking, I thing Microsoft architected a stupid solution for running a simple emulator. Though the sad truth is, we have no choice but to develop in their new sadly architected environment, so we need the feature.

 Update 3

I now have the Phone SDK running in VMware's unsupported environment.  I still think is was a bad architectural decision to make Hyper-V a requirement.  Some companies don't want Windows 8 on their desktops but do want us to develop Windows 8 Phone and Tablet apps.

Update 4:
Read this post on SLAT.

posted by tadanderson at 5:29 PM 9 comments

Friday, October 26, 2012

Model-Based Engineering with AADL: An Introduction to the SAE Architecture Analysis & Design Language Book Review

I have attempted to learn AADL and how to use OSATE several times over the years. I would read a good article on it and think to myself I can figure it out this time.

A day or two into the adventure I would get frustrated with the toolset and getting it configured correctly, and the scattered and confusing details of AADL would put the nail in the coffin of my past attempts.

I was hoping this book would not have me repeating history. I am glad to report it didn't. Finally a resource that puts AADL information into a learnable format.

The book starts off with a nice introduction to model-based software systems engineering and does a good job of putting a AADL into context by comparing it to SysML, VHDL, and UML.

The book is broken down into two main parts and then has some appendixes. I have listed the parts along with the chapters they contain below.

Part I. Model-Based Engineering and the AADL
Chapter 1. Model-Based Software Systems Engineering
Chapter 2. Working with the SAE AADL
Chapter 3. Modeling and Analysis with the AADL: The Basics
Chapter 4. Applying AADL Capabilities

Part II. Elements of the AADL
Chapter 5. Defining AADL Components
Chapter 6. Software Components
Chapter 7. Execution Platform Components
Chapter 8. Composite and Generic Components
Chapter 9. Static and Dynamic Architecture
Chapter 10. Component Interactions
Chapter 11. System Flows and Software Deployment
Chapter 12. Organizing Models
Chapter 13. Annotating Models
Chapter 14. Extending the Language
Chapter 15. Creating and Validating Models

Appendixes
Appendix A. Syntax and Property Summary
Appendix B. Additional Resources
Appendix C. References

The book is broken down into a nice logical flow that starts with simple models and as it continues the authors grow the models complexity.

In Part I the authors use a sample system that builds a powerboat autopilot architecture. By the end of Part I you have a detailed understanding of the AADL capabilities.

In Part II the authors take you on a detailed tour of all the critical elements in AADL. After a describing the different categories the AADL components fall into the authors spend several chapters going into great detail on how to use them.

The book includes a big appendix that summarizes AADL syntax and grammar rules, lists the component type and implementation elements, lists the basic property types and type constructors, lists the AADL reserved words, and the AADL properties.

The authors have a really good writing style which makes the content not only easier read but also easy to understand.

There were only two things that would have made life easier while learning AADL using the book. The authors should make the samples used throughout the book available online for download. There is a lot of typing to do to get the examples working.

The second thing is better coverage of configuring the Open Source AADL Tool Environment (OSATE) used to create the models in the book. The best thing to do is to download TOPCASED (do yourself a favor and download and run the RCP downloads), then install OSATE2, Xtext, and ADELE using the Eclipse Install New Software feature on the Help menu, and uninstall OSATE1 which comes with TOPCASED using the Installation Details button on the About Eclipse dialog.

These two dings don't take anything away from the book, and they probably made me use the tool more and therefore learn more about the tool than had they spoon fed me.

This book is literally the only book on the market available for learning AADL. Luckily it's a great resource and by reading it cover to cover, working through the exercises, and building the models you will definitely learn the AADL language.

I highly recommend the book to anyone who wants to learn AADL!!!

Model-Based Engineering with AADL: An Introduction to the SAE Architecture Analysis & Design Language


For more book recommendations check out my .NET, iOS, and Java Architecture and Development Book Recommendations for 2013

posted by tadanderson at 7:54 PM 0 comments

Thursday, October 18, 2012

Software Architecture in Practice Book Review

It was hard to imagine this book getter any better than it already was. I guess that was because I never expected so many changes. This is the most I have ever seen a new edition of a book change. If you own the second edition, you will definitely want this new one. It is almost like another book.

The big case studies are gone. They have been replaced with a ton of new material. If you don't own the first and second editions of the book, you can get the case studies on the publisher's web site.

Below are the chapters in this third edition.

Part One. Introduction
1. What Is Software Architecture?
2. Why Is Software Architecture Important?
3. The Many Contexts of Software Architecture

Part Two. Quality Attributes
4. Understanding Quality Attributes
5. Availability
6. Interoperability
7. Modifiability
8. Performance
9. Security
10. Testability
11. Usability
12. Other Quality Attributes
13. Architectural Tactics and Patterns
14. Quality Attribute Modeling and Analysis

Part Three. Architecture in the Life Cycle
15. Architecture in Agile Projects
16. Architecture and Requirements
17. Designing an Architecture
18. Documenting Software Architectures
19. Architecture, Implementation, and Testing
20. Architecture Reconstruction and Conformance
21. Architecture Evaluation
22. Management and Governance

Part Four. Architecture and Business
23. Economic Analysis of Architectures
24. Architecture Competence
25. Architecture and Software Product Lines

Part Five. The Brave New World
26. Architecture in the Cloud
27. Architectures for the Edge
28. Epilogue

To show you just how much the book has changed I have included the table of contents to the second edition below.

Pt. One. Envisioning Architecture
Ch. 1. The Architecture Business Cycle
Ch. 2. What Is Software Architecture?
Ch. 3. A-7E Avionics System: A Case Study in Utilizing Architectural Structures

Pt. Two. Creating an Architecture
Ch. 4. Understanding Quality Attributes
Ch. 5. Achieving Qualities
Ch. 6. Air Traffic Control: A Case Study in Designing for High Availability
Ch. 7. Designing the Architecture
Ch. 8. Flight Simulation: A Case Study in an Architecture for Integrability
Ch. 9. Documenting Software Architectures
Ch. 10. Reconstructing Software Architectures

Pt. Three. Analyzing Architectures
Ch. 11. The ATAM: A Comprehensive Method for Architecture Evaluation
Ch. 12. The CBAM: A Quantitative Approach to Architecture Design Decision Making
Ch. 13. The World Wide Web: A Case Study in Interoperability

Pt. Four. Moving From One System to Many
Ch. 14. Software Product Lines: Re-using Architectural Assets
Ch. 15. CelsiusTech: A Case Study in Product Line Development
Ch. 16. J2EE/EJB: A Case Study of an Industry-Standard Computing Infrastructure
Ch. 17. The Luther Architecture: A Case Study in Mobile Applications Using J2EE
Ch. 18. Building Systems from Off-the-Shelf Components
Ch. 19. Software Architecture in the Future

This book has been my go to book for most of my software architecture career. It is what taught me about quality attributes, tactics, and scenarios. It provided my first introduction to the Architecture Tradeoff Analysis Method (ATAM), the Quality Attribute Workshop (QAW), the Cost Benefit Analysis Method (CBAM), Active Reviews for Intermediate Designs (ARID), and the Attribute-Driven Design (ADD) method. In this new edition of the book they introduce the lightweight architecture evaluation. It is a slimmed-down version of ATAM. It is intended to be used on lower ceremony projects.

This new version has a ton of new material. One of the biggest changes is that the quality attributes covered now have their own chapter. There is a new chapter for Availability, Interoperability, Modifiability, Performance, Security, Testability, and Usability.

There is a new chapter dedicated to the technical, project, business, and professional contexts of software architecture. This chapter shows how architecture supports and is informed by other forces and activities in the different contexts.

Part four, Architecture and Business, contains three chapters dedicated to showing the relationships between the architecture and the business.

There is a new chapter on architecturally significant requirements and how to solicit those requirements from the goals set down by the business. This chapter introduces a new method for eliciting and documenting business goals in order to discover architecturally significant requirements. The new method is called Pedigreed Attribute eLicitation Method or PALM for short.

There is a new chapter on individual and organizational architectural competence. The chapter covers the technical duties of a software architect, the non-technical duties of a software architect, and the knowledge areas of the software architect. It also provides a framework for organizational architectural competence.

Part three, Architecture in the Life Cycle, shows how architecture relates to agile projects, shows how to elicit architecturally significant requirements, shows how to design the architecture and document the architecture, also how to test the architecture. Part three also covers how to reconstruct an architecture and evaluate an architecture.

One of my favorite new additions was chapter 27, Architectures for the Edge. An Edge dominant system is one that depends on the input of their users for success. Edge architectures that exist today are Wikipedia, YouTube, Facebook, and Twitter. It was just a really interesting read.

I could go on and on about the value of the content in this book. The bottom line is that if you are a software architect, or want to be one, this is mandatory reading, period.

Software Architecture in Practice (3rd Edition)


For more book recommendations check out my .NET, iOS, and Java Architecture and Development Book Recommendations for 2013

posted by tadanderson at 2:05 PM 0 comments

Monday, October 15, 2012

Managing the Unmanageable: Rules, Tools, and Insights for Managing Software People and Teams Book Review

On any significant size project I am going to have a team of developers reporting to me. Over the years those numbers have varied greatly. I have managed 1 developer and teams of developers. I have the most fun on projects where I have between 4 and 10 developers.

I also prefer to be partnered with a good project manager or none at all. A bad project manager just makes it harder to keep the team motivated and the client happy. I would say less the 5% of the gigs I have been on have provided a good project manager. 25% of them have provided bad ones, and the rest of the gigs the responsibility fell on me, the software architect.

The point of all this is that my job requires me to manage programmers and communicate to stakeholders effectively. Reading books on project management and general management have not been fun, but has been necessary. I was happy to see one come out that targets more of what I have to do, and that is manage programmers.

Below are the chapters in the book.

1. Why Programmers Seem Unmanageable
2. Understanding Programmers
3. Finding and Hiring Great Programmers
4. Getting New Programmers Started Off Right
5. Becoming an Effective Programming Manager: Managing Down
Insert - Rules of Thumb and Nuggets of Wisdom
6. Becoming an Effective Programming Manager: Managing Up, Out, and Yourself
7. Motivating Programmers
8. Establishing a Successful Programming Culture
9. Managing Successful Software Delivery Tools

In the very first chapter the authors hit a nerve. I went to school for electronic engineering and worked in that field before moving into programming. Because of my work in the engineering field I have always been comfortable with the engineering practices that made there way into the programming field. The authors are however correct when they say a majority of programmers today do not have to know anything about software engineering. They are simply programmers because they decided they wanted to be and were lucky enough to get a job with that title.

The point is that you most likely will not have a team of software engineers. Managing and working with engineers is much simpler that working with the self made programmer that was previously an artist, musician, writer, or any other field. This book helps identify different personalities and offers tons of advice on how to work with them in a positive way.

I wish we could put a law in place that in order to hire programmers an organization must follow the guidance offered in the chapter Getting New Programmers Started Off Right. 80% of my starting week have been a complete waste of my time as well as the organization's time. Rarely are they ever ready for you.

One very cool section of the book is the 60 page insert titled Rules of Thumb and Nuggets of Wisdom. It contain short blurbs and quotes from some of the leaders of the programming industry. Cracking open this section you can lose track of time going through them and thinking about them.

The thing I liked most about this book is that it borrowed some of the best processes in the industry, but is absolutely not process centric. Meaning you'll hear some nuggets of Scrum and other processes, but none of them are highlighted in the book. This book is all about understanding the programmer, your environment, and yourself, and how to make the right decisions given your environment.

My belief is that compiled information is knowledge, knowing what to do with the knowledge is wisdom. I see a whole lot of knowledge these days, but very little wisdom. The authors of this book have successfully compiled wisdom. Reading this book will change the way you work with programmers. Every single chapter of this book is a real gem.

This book will become a classic to turn to over time. Every manager interacting with programmers should read this book. That includes CIOs, Software Architects, Enterprise Architects, and Lead Developers. You don't need to have the word manager or director in your title. If in your role you find you are managing a team of developers, you should read this book.

Managing the Unmanageable: Rules, Tools, and Insights for Managing Software People and Teams


For more book recommendations check out my .NET, iOS, and Java Architecture and Development Book Recommendations for 2013

posted by tadanderson at 10:19 AM 0 comments

Photoshop Elements 11: The Missing Manual Book Review

In the past I have had Photoshop loaded on my computer, but I rarely used it unless it was to use the autocorrection features. Each year I have a ton of vacation pictures to clean up every year and since I am a programmer I have the occasional need to create graphics. 85% of the time I used a less complex tool like Paint.net.

I' say for the past 2 to 3 years my wife has started making photo albums using online services. She now has the need to do more with the photos than we have in the past. We have been using one software to clean up the images, and then using one of the online services to create the photo books. She also has started making custom cards. Photoshop Elements looked like it may handle all three needs.

I have seen Photoshop Elements in the past, but never really took the time to learn about it. I got this book to see if it can handle our needs before I purchase the software.

Part 1. Introduction to Elements
1. Finding Your Way Around Elements
2. Importing, Managing, and Saving Photos
3. Rotating and Resizing Photos

Part 2. Elemental Elements
4. The Quick Fix
5. Making Selections
6. Layers: The Heart of Elements

Part 3. Retouching
7. Basic Image Retouching
8. Elements for Digital Photographers
9. Retouching: Fine-Tuning Images
10. Removing and Adding Color
11. Photomerge: Creating Panoramas, Group Shots, and More

Part 4. Artistic Elements
12. Drawing with Brushes, Shapes, and Other Tools
13. Filters, Actions, Layer Styles, and Gradients
14. Text in Elements

Part 5. Sharing Images
15. Creating Projects
16. Printing Photos
17. Email and the Web
18. Online Albums and Slideshows

Part 6. Additional Elements
19. Beyond the Basics

Part 7. Appendixes
A. Installation and Troubleshooting

This book definitely accomplished what I needed it to and more. We will be buying the software. I downloaded the trial version to try a bunch of the tools the book covered and they all worked as described.

The author has a great writing style which makes the book easy to read. The book is in color which really helps when describing photo manipulating software. The author makes good use of screenshots without going overboard.

The only thing I would've liked to have seen is more coverage of the scrapbook and greeting card templates. I was able to find information online about the ones that are available so that helped make my decision.

The book goes way beyond what I will be doing 90% of the time, but it was cool learning all the capabilities in Elements 11. I would not have bought the software without reading this book.

Another thing I liked is that the author pointed out differences between Mac and Windows. We will be running it on both, so this information was nice to have.

The book will be staying by my side as I modify our vacation pictures and make graphic for software projects.

All in all I found this to be a great book. If you want to learn about all the features available in Photoshop Elements 11 this is the best way to go.

Photoshop Elements 11: The Missing Manual


For more book recommendations check out my .NET, iOS, and Java Architecture and Development Book Recommendations for 2013

posted by tadanderson at 10:02 AM 0 comments

Wednesday, October 10, 2012

Essential Scrum: A Practical Guide to the Most Popular Agile Process Book Review

This book's title Essentials Scrum: A Practical Guide to the Most Popular Agile Process, is a perfect description of what this book is. It covers every essential that you need to know about the scrum process, and the book is written to every role in the scrum process.

After a nice introductory chapter to Scrum, which includes the history of how Scrum came to be, the book breaks down into four parts. They include Core Concepts, Roles, Planning, and Sprinting. I have listed each part below along with the chapters found in each one.

Chapter 1. Introduction

Part I. Core Concepts
Chapter 2. Scrum Framework
Chapter 3. Agile Principles
Chapter 4. Sprints
Chapter 5. Requirements and User Stories
Chapter 6. Product Backlog
Chapter 7. Estimation and Velocity
Chapter 8. Technical Debt

Part II. Roles
Chapter 9. Product Owner
Chapter 10. ScrumMaster
Chapter 11. Development Team
Chapter 12. Scrum Team Structures
Chapter 13. Managers

Part III. Planning
Chapter 14. Scrum Planning Principles
Chapter 15. Multilevel Planning
Chapter 16. Portfolio Planning
Chapter 17. Envisioning (Product Planning)
Chapter 18. Release Planning (Longer-Term Planning)

Part IV. Sprinting
Chapter 19. Sprint Planning
Chapter 20. Sprint Execution
Chapter 21. Sprint Review
Chapter 22. Sprint Retrospective
Chapter 23. The Path Forward

The author's advice on when to use Scrum is a refreshing one. He is not one of the many Scrum zealots, mindlessly regurgitating Scrum mantras. He gives a nice overview of where Scrum works and where it doesn't in the introduction of the book. He also presents a realistic view on how difficult Scrum is. Scrum is not easy and the author makes that very clear.

One of the coolest parts of this book is the visual icon language used to create the diagrams. The diagrams in this book are some of the best I've ever seen. They really help to put the topic being covered with words into a visual context for better understanding.

The author's writing style is great, which makes the book an enjoyable read. Along with the visual icon language I would have to say this is the most descriptive book about Scrum I have read. Meaning the ideas were really drilled home in a very clear way.

The chapter on agile principles is great. The author really does a great job of comparing agile practice to plan driven practices and highlighting the difference. By the end of this chapter you have a great understand of the "why" agile practices are done and how Scrum implements them.

I was also glad to see the chapters on Multilevel Planning , Portfolio Planning, Envisioning, and Release Planning. When it comes to explaining how Scrum fits into the rest of the enterprise, many of the Scrum books I have read have a short blurb on Scrum of Scrums, and then move on back into topics only suited for small team development. These chapters take Scrum beyond small team development.

I like that the book has a really nice glossary for quick look ups of buzz words that may be new to you.

If you have to pick just one Scrum book, make this one your pick. If you are looking to learn Scrum, definitely start here. If you are a Scrum Master, this is the book to take your team through during training.


Essential Scrum: A Practical Guide to the Most Popular Agile Process


For more book recommendations check out my .NET, iOS, and Java Architecture and Development Book Recommendations for 2013

posted by tadanderson at 4:36 PM 0 comments

Friday, October 05, 2012

Mastering the Requirements Process: Getting Requirements Right Book Review

Today we have a lot of different software development processes to choose from. We have Scrum, XP, the Unified Process, the Rational Unified Process, the Open Unified Process, the Enterprise Unified Process, Lean Processes, DSDM, TDD, Cleanroom, RAD, Spiral, and Waterfall. I am sure there are plenty more. Those are just the ones I can think of sitting here waiting on the train.

All the different processes out there have one thing in common, not getting requirements right is their Achilles' heel. Wrong requirements mean a lot of rework at best, and complete project failure in the worst scenarios.

The Volere Requirement Process described in this book can be used with any of the processes listed above. Every process needs to gather requirements.

After starting with some fundamental truths about requirements gathering and an introduction to the Volere Requirement Process the author digs into the detail of the process's activities and resulting artifacts. I have listed the chapters below. The titles give you an idea of the variety of topics covered.

1. Some Fundamental Truths
2. The Requirements Process
3. Scoping the Business Problem
4. Business Use Cases
5. Investigating the Work
6. Scenarios
7. Understanding the Real Problem
8. Starting the Solution
9. Strategies for Today’s Business Analyst
10. Functional Requirements
11. Non-functional Requirements
12. Fit Criteria and Rationale
13. The Quality Gateway
14. Requirements and Iterative Development
15. Reusing Requirements
16. Communicating the Requirements
17. Requirements Completeness
A. Volere Requirements Specification Template
B. Stakeholder Management Templates
C. Function Point Counting: A Simplified Introduction
D. Volere Requirements Knowledge Model
Volere: Requirements Resources

The authors really give a lot of great advice on techniques for eliciting (they refer to it as trawling) requirements. They have outlined some great ways to interact with the project stakeholders that will get them thinking about the requirements that need to be met. It is clear the authors understand how difficult it can be working with stakeholders. The elicitation techniques account for stakeholders who have no idea what they are looking, to those that think they know what they want but need convinced otherwise, because they don't have a full picture of the context yet.

The attention given to non-functional requirements was great. I have seen some requirements books that mention them but stay within the context of functional requirements. This book has a full chapter on them and treats them throughout the rest of the book as first class citizens. The reason I mention this is, that as a software architect, the non-functional (quality attributes) are what I am interested in during the architecture phase.

One of the things I really like about the book is that it includes the entire Volere Requirements Specification in one the appendices. My one gripe with the book is that you have to pay $55 to download the electronic version of the template from the author's web site.

The authors do a really great job of covering the full requirements gathering process using a case study. They cover a ton of deliverables and they cover them in depth.

One of the other things I found really cool was the Requirements Knowledge Model. It shows the collected knowledge you gain throughout the requirements process It also provides a common language to use for managing and communicating requirements.

The reason I found this to be so cool is that the number one thing documenting a system does for me is give me the detailed knowledge I need to understand it. More problems are usually found trying to communicate a system to different stakeholders than are found just running it.

Overall I found this book easy to read and understand. The authors have a great writing style.

If you have anything to do with requirements, no matter the process, this book belongs on your shelf.

Mastering the Requirements Process: Getting Requirements Right


For more book recommendations check out my .NET, iOS, and Java Architecture and Development Book Recommendations for 2013

posted by tadanderson at 12:17 PM 0 comments

Monday, October 01, 2012

SOA Patterns Book Review

I have been waiting for this book for a long time, so the first thing I would like to do is thank Aya, the author's wife. In the acknowledgements the author thanks her for making him man up and finish the book. The second thing I would like to do is thank the author for listening. A project like this had to have been difficult to finish.

The wait was definitely worth it. This is an excellent compilation of rock solid architectural advice. Having it delivered in the format of patterns is icing on the cake.

The book is broken down into two parts. The first part introduces SOA and then covers the patterns. The second part discusses SOA in the real world. I have listed the chapters and the patterns they include below. At the end of each chapter there is also a Summary and Further reading section which I do not show below.

Part 1 SOA patterns

Chapter 1 Solving SOA pains with patterns
Defining software architecture
Service-oriented architecture
Solving SOA challenges with patterns

Chapter 2 Foundation structural patterns
Service Host pattern
Active Service pattern
Transactional Service pattern
Workflodize pattern
Edge Component pattern

Chapter 3 Patterns for performance, scalability, and availability
Decoupled Invocation pattern
Parallel Pipelines pattern
Gridable Service pattern
Service Instance pattern
Virtual Endpoint pattern
Service Watchdog pattern

Chapter 4 Security and manageability patterns
Secured Message pattern
Secured Infrastructure pattern
Service Firewall pattern
Identity Provider pattern
Service Monitor pattern

Chapter 5 Message exchange patterns
Request/Reply pattern
Request/Reaction pattern
Inversion of Communications pattern
Saga pattern

Chapter 6 Service consumer patterns
Reservation pattern
Composite Front End (Portal) pattern
Client/Server/Service pattern

Chapter 7 Service integration patterns
Service Bus pattern
Orchestration pattern
Aggregated Reporting pattern

Part 2 SOA in the real world

Chapter 8 Service antipatterns
Knot antipattern
Nanoservice antipattern
Transactional Integration antipattern
Same Old Way antipattern

Chapter 9 Putting it all together—a case study
Problem
Solution

Chapter 10 SOA vs. the world
REST vs. SOA
SOA and the cloud
SOA and big data

So what makes this book different from other SOA Pattern books? My take on that is that this one is written by a software architect who is writing to software architects. Yes the book is also appropriate for developers, CIOs, project managers, and testers, but it really speaks to the software architect.

The last section of every pattern description contains a quality attributes section. The author calls the patterns a solution and the quality attributes the requirements. Software architecture is all about the quality attributes. They are what help define the scenarios and the trade-offs that need to be made during architectural design. The quality attributes section maps the quality attribute to concrete attributes to a sample scenario. It really helps to highlight the architectural importance of the pattern.

If you have never read any of the author's published material, you should also take the time to check that out. His material on software architecture is great. He put together the SPAMMED architecture framework (SAF) which is a set activities that an architect can follow when they design an architecture. If you are not experienced with quality attributes, the author's SAF is a great place to start.

Another thing that I really like is that the author includes a technology mapping section with each pattern. Although an architecture can be designed out the specific technology in mind, I usually find that ignoring the technology often leads to an architecture design that isn't specific enough to actually be used.

It is also rare and unrealistic to think that you're going to be designing an architecture for an unknown technology. I always know what the environment is that I am going to be implementing in, at least that's been my experience. There may be several technologies used in the same environment, like the mobile environment that I am currently architecting. I do know the environment includes C#, Java, Objective-C, and ASP.NET MVC. I am therefore placing constraints on the architecture based on the fact that all these languages will be used for certain parts of it.

One of the coolest parts of the book is the appendix 'From quality attributes to patterns'. The appendix first gives a very nice overview of what quality attributes are. It continues with the section that explains how quality attributes are matched with patterns. There is then a very large table of quality attributes which are mapped to concrete attributes, sample scenarios, relevant pattern, and the chapter but you can be found it.

The author's writing style makes this book very easy to read. Each pattern is very well explained and the author makes great use of UML diagrams and other visualizations.

If you're going to purchase just one SOA patterns book, you should make it this one. Every software architect should have this book on their shelf.

SOA Patterns


For more book recommendations check out my .NET, iOS, and Java Architecture and Development Book Recommendations for 2013

posted by tadanderson at 11:30 AM 0 comments

Previous Posts

  • DevOps: A Software Architect's Perspective Book Re...
  • Scaled Agile Framework (SAFe) LiveLessons Video Se...
  • Bulletproof Android: Practical Advice for Building...
  • Swift for Programmers Book Review
  • Security in Computing (5th Edition) Book Review
  • Swift in 24 Hours, Sams Teach Yourself Book Review
  • Sparx Systems Releases Enterprise Architect 12
  • Learning Swift Programming Book Review
  • Android Security Internals: An In-Depth Guide to A...
  • Adaptive Code via C#: Agile coding with design pat...



Archives

  • December 2005
  • January 2006
  • February 2006
  • March 2006
  • April 2006
  • June 2006
  • August 2006
  • October 2006
  • November 2006
  • December 2006
  • January 2007
  • February 2007
  • March 2007
  • April 2007
  • May 2007
  • June 2007
  • July 2007
  • August 2007
  • September 2007
  • October 2007
  • November 2007
  • December 2007
  • January 2008
  • February 2008
  • March 2008
  • April 2008
  • May 2008
  • June 2008
  • July 2008
  • August 2008
  • September 2008
  • October 2008
  • December 2008
  • January 2009
  • February 2009
  • March 2009
  • April 2009
  • May 2009
  • June 2009
  • July 2009
  • August 2009
  • September 2009
  • October 2009
  • November 2009
  • December 2009
  • January 2010
  • February 2010
  • March 2010
  • April 2010
  • May 2010
  • June 2010
  • August 2010
  • September 2010
  • October 2010
  • November 2010
  • December 2010
  • January 2011
  • February 2011
  • March 2011
  • April 2011
  • May 2011
  • June 2011
  • July 2011
  • August 2011
  • September 2011
  • October 2011
  • November 2011
  • December 2011
  • January 2012
  • February 2012
  • March 2012
  • April 2012
  • May 2012
  • June 2012
  • July 2012
  • August 2012
  • September 2012
  • October 2012
  • November 2012
  • December 2012
  • January 2013
  • February 2013
  • March 2013
  • April 2013
  • May 2013
  • June 2013
  • July 2013
  • August 2013
  • September 2013
  • October 2013
  • November 2013
  • December 2013
  • January 2014
  • February 2014
  • March 2014
  • April 2014
  • May 2014
  • June 2014
  • July 2014
  • August 2014
  • September 2014
  • October 2014
  • December 2014
  • February 2015
  • March 2015
  • April 2015
  • June 2015
  • July 2015
  • September 2015

Powered by Blogger