Software Architect Bootcamp Raphael Malveau Thomas J
Total Page:16
File Type:pdf, Size:1020Kb
Software Architect Bootcamp Raphael Malveau Thomas J. Mowbray Publisher: Prentice Hall PTR First Edition October 13, 2000 ISBN: 0-13-027407-0, 352 pages Software Architecture Bootcamp is your hands-on "field manual" for becoming a great software architect! This hands-on "field manual" gives developers the essential skills they need to survive and thrive as software architects! You’ll find insightful, real-world coverage of everything from design patterns to prototyping, business case development to leadership. Leading software architects Raphael Malveau and Thomas Mowbray share profound insights and practical solutions for all the key challenges of architectures using objects, components, and distributed Internet computing, showing how to avoid time-consuming pitfalls and costly errors. You’ll master proven methods for: Identifying the best architectural model for any project Executing heavyweight or lightweight approaches to software architecture Addressing scalability and long-term business flexibility Making the most of abstraction, refactoring, and architectural prototyping Leveraging superior design patterns to improve your implementations With hands-on exercises, real-life war stories, and a take- no-prisoners attitude, Software Architect Bootcamp won’t just help you become a great software architect: it’ll help you become a true technical leader of your organization. web Distribution $ $ Yes Good book? Downloading Reading buy No Fast Yes Network? Library of Congress Cataloging-in-Publication Data Malveau, Raphael C. Software architect bootcamp/Raphael Malveau, Thomas J. Mowbray. p.cm. Includes bibliographical references and index. ISBN 0-13-027407-0 1. Software engineering. 2. Computer architecture. I. Mowbray, Thomas J. II. Title. QA76.758 .M27 2001 005.1--dc21 2001021243 © 2001 Prentice Hall PTR Prentice-Hall, Inc. Upper Saddle River, NJ 07458 Prentice Hall books are widely used by corporations and government agencies for training, marketing, and resale. The publisher offers discounts on this book when ordered in bulk quantities. For more information, contact Corporate Sales Department, phone: 800-382-3419; fax: 201-236-7141; e-mail: [email protected] Or write: Prentice Hall PTR, Corporate Sales Department, One Lake Street, Upper Saddle River, NJ 07458 All rights reserved. No part of this book may be reproduced, in any form or by any means, without permission in writing from the publisher. All product names mentioned herein are the trademarks or registered trademarks of their respective owners. Printed in the United States of America 10 9 8 7 6 5 4 3 Prentice-Hall International (UK) Limited, London Prentice-Hall of Australia Pty. Limited, Sydney Prentice-Hall Canada Inc., Toronto Prentice-Hall Hispanoamericana, S.A., Mexico Prentice-Hall of India Private Limited, New Delhi Prentice-Hall of Japan, Inc., Tokyo IT-SC 1 Credits Editorial/Production Supervision: Faye Gemmellaro Acquisitions Editor: Paul Petralia Marketing Manager: Bryan Gambrel Editorial Assistant: Justin Somma Cover Design: Alamini Design Cover Design Director: Jerry Votta Buyer: Maura Zaldivar INSPIRATION "All we know is only a handful of what we don't know." —Hindu Proverb This book is dedicated to our families: Carrie Malveau and Kate Mowbray, CPA IT-SC 2 Preface Acknowledgments one Introduction 1.1 Advice for Software Architects 1.2 Software Architecture as a Discipline 1.3 Design Patterns and Software Architecture 1.4 Conclusions 1.5 Exercises two Software Architecture: Basic Training 2.1 Software Paradigms 2.2 Open Systems Technology 2.3 Client Server Technology 2.4 Software Application Experience 2.5 Technology and Application Architecture 2.6 Applying Standards to Application Systems 2.7 Distributed Infrastructures 2.8 Conclusions 2.9 Exercises three Software Architecture: Going to War 3.1 Software Architecture Paradigm Shift 3.2 Doing Software Wrong 3.3 Doing Software Right: Enterprise Architecture Development 3.4 Bottom Line: Time, People, and Money 3.5 Conclusions 3.6 Exercises four Software Architecture: Drill School 4.1 Architecture versus Programming 4.2 Managing Complexity Using Architecture 4.3 Systems Integration 4.4 Making the Business Case 4.5 Architecture Linkage to Software Development 4.6 Architectural Software Notation 4.7 Conclusions 4.8 Exercises five Leadership Training 5.1 Leadership Is a Necessary, Learnable Skill 5.2 The Architect as Team Builder 5.3 Always Insist on Excellence in Deliverables 5.4 Architect's Walkthrough 5.5 Conclusions 5.6 Exercises six Software Architecture: Jump School 6.1 Process 6.2 Creating New Processes 6.3 Teamwork 6.4 Conclusions 6.5 Exercises IT-SC 3 seven Communications Training 7.1 Communications Challenges 7.2 Responsibility–Driven Development 7.3 Communication Responsibilities 7.4 Handling Feedback 7.5 Exercises eight Software Architecture: Intelligence Operations 8.1 Architecture Mining 8.2 Architecture Iteration 8.3 Architecture Judgment 8.4 Conclusions 8.5 Exercises nine Software Architecture: Psychological Warfare 9.1 Alternative Learning 9.2 Internal Control 9.3 Expectation Management 9.4 Psychology of Truth 9.5 Perception Is Not Reality 9.6 Exploiting Human Weaknesses 9.7 Example: Reference Selling 9.8 Psychology of Ownership 9.9 Psychological Akido 9.10 Intellectual Akido 9.11 Conclusions 9.12 Exercises A. Architecture Example: Test Results Reporting System A.1 Introduction A.2 Component Interoperability Challenge A.3 Target Architecture for the TRRS A.4 Target Enterprise Viewpoint A.5 Target Information Viewpoint A.6 Target Technology Viewpoint A.7 Prototype Implementation A.8 Prototype Computational Viewpoint A.9 TRRS Terminology A.10 Use Case Definitions A.11 Core Workflows A.12 Information Model A.13 Conclusions B. Design Templates and Examples B.1 Conceptual Design B.2 Relationship Service Conceptual Design B.3 High-Level Design B.4 Relationship Service High-Level Design C. Glossary of Software Architecture Terminology Glossary IT-SC 4 D. Acronyms E. Bibliography Bibliography IT-SC 5 Preface Software architecture is an emerging discipline and an exciting career path for software professionals. We encourage both new and experienced practitioners to read this book as an aid to becoming better software architects. You may have noticed that most software books today do not say much about software architecture. Here, in this volume, we've concentrated the knowledge that you need to be the most effective architect possible. As co-authors, we have lived through the experience of graduating from "member of technical staff" developers to becoming practicing software architects at the most senior levels of our respective companies. We are technical people, not managers, and we enjoy the technical nature of our work. We enjoy parity of salary and benefits with the senior managers at our respective firms. In other words, we are none-the-worse-for-wear as a consequence of choosing a software architecture career. We think that many of our readers would like to gain from our experience. Hence this book. This is more than a book about software architecture. It is a field manual that can train you. We choose the pseudomilitary style, because it embodies an essential attitude. As a software architect, you need many survival skills— some technical, some political, some personal. While neither author has mili- tary experience, we have seen software architecture become a battleground in many ways. It is a battleground of ideas, as developers compete to forward their own concepts. It is a battleground for control of key design decisions that may be overruled by managers or developers, perhaps covertly. It is a battleground with many risks, since architects are responsible for a much wider range of technical and process risks than most managers or individual developers. If you are a practicing software architect, we know that you are a busy professional. After buying this book, we would suggest that you peruse the table of contents and the index for topics that are new to you. Focus on those sections first. When you have time, we suggest that you attempt a cover-to-cover read-through, to familiarize yourself with all of the covered topics and terminology. If you are new to architecture and want to become a software architect, we suggest that you do a cover-to-cover read-through beginning with the first chapter. Work the exercises provided, which will add an experiential learning element to your experience base. Raphael Malveau Thomas J. Mowbray, Ph.D. McLean, Virginia, U.S.A. IT-SC 6 Acknowledgments We would like to express our thanks for all of the generous support of our friends and the technical contributions of our fellow software architects. In particular, we wish to recognize: Jan Putman, Kirstie Bellman, Liz Zeisler, Thad Scheer, Marc Sewell, Laura Sewell, Hernan Astudillo, Theresa Smith, Roger Hebden, Chip Schwartz, Jack and Gillian Hassall, John Eaton, Dr. Amjad Farooq, John Holmes, John Weiler, Kevin Tyson, Kendall White, Chibuike Nwaeze, Dave Dikel, David Kane, John Williams, Bhavani Thuraisingham, Jim Baldo, Eric Stein, John Hetrick, Dave Gregory, John Bentley, Nigel Pates, Richard Taylor-Carr, Dan Lam, Garrett Fuller, David Broudy, Mike Baba, Burt Ellis, Matthew Presley, Robert Davis, Peter Lee, Linda Kemby, Georgene Murray, Alfredo Aunon, Jim Gray, and Woody Lewis. IT-SC 7 Chapter one Introduction So you want to become a software architect? Or perhaps you are already a software architect, and you want to expand your knowledge of the discipline? This is a book about achieving and maintaining success in your software career. It is also about an important new software discipline and technology, software architecture. It is not a book about getting rich in the software business; our advice helps you to achieve professional fulfillment. Although the monetary rewards are substantial, often what motivates many people in software architecture is being a continuous technical contributor throughout their career. In other words, most software architects want to do technically interesting work, no matter how successful and experienced they become. So the goal of this book is to help you achieve career success as a software architect and then maintain your success.