Software Architecture
and Design Illuminated
Kai Qian
Southern Polytechnic
State University
Chong-wei Xu
Kennesaw State
University
Xiang Fu
Hofstra
University
Jorge L. Daz-Herrera
Rochester Institute
of Technology
Lixin Tao
Pace
University
JONES AND BARTLETT PUBLISHERS
Sudbury, Massachusetts
BOSTON TORONTO LONDON SINGAPORE
World Headquarters
Jones and Bartlett Publishers
40 Tall Pine Drive
Sudbury, MA 01776
978-443-5000
www.jbpub.com
Jones and Bartlett Publishers Canada
6339 Ormindale Way
Mississauga, Ontario L5V 1J2
Canada
Jones and Bartlett Publishers International
Barb House, Barb Mews
London W6 7PA
United Kingdom
Jones and Bartlett's books and products are available through most bookstores and online booksellers. To contact Jones and Bartlett Publishers directly, call 800-832-0034, fax 978-443-8000, or visit our website www.jbpub.com.
Substantial discounts on bulk quantities of Jones and Bartlett's publications are available to corporations, professional associations, and other qualified organizations. For details and specific discount information, contact the special sales department at Jones and Bartlett via the above contact information or send an email to .
Copyright 2010 by Jones and Bartlett Publishers, LLC
All rights reserved. No part of the material protected by this copyright may be reproduced or utilized in any form, electronic or mechanical, including photocopying, recording, or by any information storage and retrieval system, without written permission from the copyright owner.
Production Credits
Acquisitions Editor: Timothy Anderson
Editorial Assistant: Melissa Potter
Production Director: Amy Rose
Associate Production Editor: Melissa Elmore
Senior Marketing Manager: Andrea DeFronzo
V.P., Manufacturing and Inventory Control: Therese Connell
Composition: Northeast Compositors, Inc.
Cover Design: Kristin E. Parker
Cover Image: Eyewire, Inc.
Interior Images: Java logo courtesy of Sun Microsystems.
Printing and Binding: Malloy, Inc.
Cover Printing: Malloy, Inc.
Library of Congress Cataloging-in-Publication Data
Software architecture and design illuminated / Kai Qian[et al.].
p. cm.
Includes bibliographical references and index.
ISBN-13: 978-0-7637-5420-4 (pbk.)
ISBN-10: 0-7637-5420-X (pbk.)
1. Software architecture. I. Qian, Kai.
QA76.754.S64434 2008
005.1'2dc22
2008027309
6048
Printed in the United States of America
13 12 11 10 09 10 9 8 7 6 5 4 3 2 1
Contents
Preface
For decades, software architecture has received primary focus in the field of software engineering. With the growth of the software industry, it has become clear that an early and careful architectural design can greatly reduce the failure rates of software projects. A good architectural design partitions the functional requirements of a software system into a manageable set of interacting elements. Quality attributes such as efficiency, usability, modifiability, reliability, and security can be verified and estimated with respect to the design before any code is produced. As the blueprint of a software system, the architectural design allows system analysts and software architects to communicate effectively with one another and with other stakeholders. It also sets the foundation for the subsequent design and development processes. The detailed design process furnishes the specifics of each architectural element, which can then be implemented via coding, followed by debugging, testing, and maintenance. All of these software development activities greatly benefit from an architectural design that clearly depicts the structure of the software being built.
The new standards for baccalaureate Software Engineering (SwE) education require that software architecture and design be taught as part of the core curriculum. For example, the Software Engineering Volume (SE 2004 recommends software design (which includes architecture) as one of its ten essential areas. Software design ranks as the second highest concentration for software engineering majors and the fourth highest for computer science (CS) majors. Other computing degree programs, such as computer engineering and information technology, also offer software architecture classes.
Approach
Software Architecture and Design Illuminated provides a coherent and integrated approach to the discipline of software architectural design. It is based on rich practical examples and case studies. The book covers a complete set of important software design methodologies, architectural styles, design guidelines, and design tools. Java is used throughout the book to explain design principles and present case studies. All of the authors have taught these topics in related undergraduate and graduate courses, and have practiced software architectural design in many research and industry projects in the past. Self-review questions with answers, exercises, design exercises, and challenge exercises appear at the end of most chapters.
Audience
This text is intended for software architecture and design courses for upper-level undergraduate or graduate students. It can also be used as a reference book for software engineering courses. Students majoring in any of the computing disciplines, who have completed the introductory programming course sequence (CS1, CS2), can read and work through this book without difficulty. Professionals in the software industry who desire a coherent introduction to software architecture and design will also benefit from this book.
Organization
The book is organized into four parts. Part 1 includes and serves as an introduction to software architecture design. This part covers general software architecture concepts and guidelines, including software system structure decomposition, subsystems, software attributes, taxonomy of software architectural styles, the Unified Modeling Language (UML), and Architecture Description Languages (ADL).
Part 2 consists of a single chapter () and is dedicated to the object-oriented software design methodology. The OO methodology can be applied to all architecture styles. It can be used in detailed design and is well-supported by UML tools.
Part 3 contains . This part covers all architectural styles in detail, including but not limited to: data flow architectures (e.g., batch sequential, pipe and filter, and process control), data-centered architectures (e.g., data repository and blackboard), hierarchical architectures (e.g., main- subroutine, master-slaves, layered, and virtual machine), implicit asynchronous communication architectures (e.g., event-based and buffered message-based), interaction architectures (e.g., model-view-controller), distributed architectures (e.g., client-server and service-oriented architecture), and component-based architectures.
Part 4 contains three chapters. was prepared by Jorge L. Diaz-Herrera, Dean of B. Thomas Golisano College of Computing and Information Sciences at Rochester Institute of Technology. This chapter discusses Product Line Architectures (PLA) and large scale software domain analysis and design.
Student and Instructor Resources
The PowerPoint lecture slides, test items, and solutions to odd exercises are available at http://www.jbpub.com/catalog/9780763754204/. The supplemental materials for instructors can also be downloaded from the instructor's website.
Next page