[Abowd 93] Abowd, G., Bass, L., Howard, L., Northrop, L. "Structured Modeling: An O-O Framework and Development Process for Flight Simulators," CMU/SEI-1993-TR-14. Software Engineering Institute, Carnegie Mellon University, 1993.

[Abowd 96] Abowd, G., Bass, L., Clements, P., Kazman, R., Northrop, L., Zaremski, A. "Recommended Best Industrial Practice for Software Architecture Evaluation," Technical Report CMU/SEI-96-TR-025. Software Engineering Institute, Carnegie Mellon University, 1996.

[Alur 01] Alur, D., Crupi, J., Malks, D. Core J2EE Patterns: Best Practices and Design Strategies. Sun Microsystems Press, 2001.

[Alexander 77] Alexander, C., Ishikawa, S., Silverstein, M., Jacobson, M., Fiksdahl-King, I., Angel, S. A Pattern Language. Oxford University Press, 1977.

[America 00] America, P., Obbink, H., van Ommering, R., van der Linden, F. "CoPAM: A Component-Oriented Platform Architecture Method Family for Product Family Engineering," in Software Product Lines: Experience and Research Directions (P. Donohoe, ed.). Kluwer, 2000.

[Anastasopoulos 00] Anastasopoulos, M., Gacek, C. "Implementing Product Line Variability," IESE report 89.00/E, v. 1.0. Fraunhofer Institut Experimentelles Software Engineering, 2000.

[ASCYW 94] ASCYW. Structural Modeling Handbook. Air Force Aeronautical Systems Command, 1994.

[Asundi 01] Asundi, J., Kazman, R., Klein, M. "Using Economic Considerations to Choose amongst Architecture Design Alternatives, CMU/SEI-2001-TR 035. Software Engineering Institute, Carnegie Mellon University, 2001.

[AT&T 93] AT&T. "Best Current Practices: Software Architecture Validation." Internal report, copyright 1991. AT&T, 1993.

[Bachmann 02] Bachmann, F., Bass, L., Klein, M. "Illuminating the Fundamental Contributors to Software Architecture Quality," SEI/CMU-2002-TR-025. Software Engineering Institute, Carnegie Mellon University, 2002.

[Barfield 01] Barfield, W., Caudell, T. (eds.). Fundamentals of Wearable Computers and Augmented Reality. Lawrence Erlbaum Associates, 2001.

[Bass 00] Bass, L., Clements, P., Donohoe, P., McGregor, J., Northrop, L. "Fourth Product Line Practice Workshop Report," CMU/SEI-2000-TR-002. Software Engineering Institute, Carnegie Mellon University, 2000.

[Bass 01a] Bass, L., John, B., Kates, J. "Achieving Usability through Software Architecture," CMU/SEI-2001-TR-005. Software Engineering Institute, Carnegie Mellon University, 2001.

[Bass 01b] Bass, L., Klein, M., Moreno, G. "Applicability of General Scenarios to the Architecture Tradeoff Analysis Method," CMU/SEI-2001-TR-014. Software Engineering Institute, Carnegie Mellon University, 2001.

[Berners-Lee 1996a] Berners-Lee, T. WWW Journal 3 (, 1996.

[Berners-Lee 1996b] Berners-Lee, T. "WWW: Past, Present, Future," IEEE Computer, October 1996.

[Boehm 76] Boehm, B., Brown, J., Lipow, M. "Quantitative Evaluation of Software Quality," Proceedings of the Second International Conference on Software Engineering. IEEE Computer Society, 1976.

[Boehm 81] Boehm, B. Software Engineering Economics. Prentice Hall, 1981.

[Boehm 95] Boehm, B. "Engineering Context," Proceedings of the First International Workshop on Architectures for Software Systems. Available as CMU-CS-TR-95-151 from the School of Computer Science, Carnegie Mellon University, April 1995.

[Booch 94] Booch, G. Object-Oriented Design with Applications, Second Edition. Benjamin-Cummings, 1994.

[Bosch 00a] Bosch, J. Design and Use of Software Architectures: Adopting and Evolving a Product Line Approach. Addison-Wesley, 2000.

[Bosch 00b] Bosch, J. "Organizing for Software Product Lines," Proceedings of the Third International Workshop on Software Architectures for Product Families. Springer LNCS, 2000.

[Bowman 99] Bowman, T., Holt, R., Brewster, N. "Linux as a Case Study: Its Extracted Software Architecture," Proceedings of the Second International Conference on Software Engineering. ACM Press, 1999.

[Brand 97] van den Brand, M., Sellink, M., Verhoef, C. "Generation of Components for Software Renovation Factories from Context-Free Grammars," Proceedings of the Fourth Working Conference on Reverse Engineering. ACM Press, 1997.

[Briand 99] Briand, L., Daly, J., Wust, J. "A Unified Framework for Coupling Measurements in Object-Oriented Systems," IEEE Transactions of Software Engineering 25(1), 1999.

[Britton 81] Britton, K., Parnas, D. "A-7E Software Module Guide," NRL Memorandum Report 4702, December 1981.

[Brooks 69] Brooks, F., Iverson, K. Automatic Data Processing (System 360 Edition). John Wiley, 1969.

[Brooks 75] Brooks, F. The Mythical Man-Month: Essays on Software Engineering. Addison-Wesley, 1975.

[Brooks 95] Brooks, F. The Mythical Man-Month: Essays on Software Engineering (Anniversary Edition). Addison-Wesley, 1995.

[Brown 95] Brown A., Carney, D., Clements, P. "A Case study in Assessing the Maintainability of a Large, Software-Intensive System," Proceedings of the International Symposium on Software Engineering of Computer-Based Systems. IEEE Computer Society, 1995.

[Brownsword 96] Brownsword, L., Clements, P. "A Case Study in Successful Product Line Development," CMU/SEI-96-TR-016. Software Engineering Institute, Carnegie Mellon University, 1996.

[Buschmann 96] Buschmann, F., Meunier, R., Rohnert, H., Sommerlad, P., Stal, M. Pattern-Oriented Software Architecture: A System of Patterns. John Wiley, 1996.

[Bush 45] Bush, V. "As We May Think," Atlantic Monthly, July 1945.

[CACM 88] Special Issue: HyperText Systems. Communications of the ACM, July 1988.

[Cederling 92] Cederling, U. "Industrial Software Development: A Case Study," thesis. Linkoping University (Linkoping, Sweden), 1992.

[Chastek 96] Chastek, G., Brownsword, L. "A Case Study in Structural Modeling," CMU/SEI-1996-TR-35, ESC-1996-TR-025. Software Engineering Institute, Carnegie Mellon University, 1996.

[Chretienne 95] Chretienne, P., Lenstra, J., Coffman, E. (eds.). Scheduling Theory and Its Applications. John Wiley, 1995.

[Chung 00] Chung, L., Nixon, B., Yu, E., Mylopoulos, J. Non-Functional Requirements in Software Engineering. Kluwer, 2000.

[Clements 02a] Clements, P., Kazman, R., Klein, M. Evaluating Software Architectures: Methods and Case Studies. Addison-Wesley, 2002.

[Clements 02b] Clements, P., Northrop, L. Software Product Lines: Practices and Patterns. Addison-Wesley, 2002.

[Clements 03] Clements, P., Bachmann, F., Bass, L., Garlan, D., Ivers, J., Little, R., Nord, R., Stafford, J. Documenting Software Architectures: Views and Beyond. Addison-Wesley, 2003.

[Conway 68] Conway, M. "How Do Committees Invent?" Datamation 14(4), 1968.

[Cristian 93] Cristian, F. "Understanding Fault-Tolerant Distributed Systems" (, 1993.

[Cusumano 95] Cusumano, R., Selby, R. Microsoft Secrets: How the World's Most Powerful Software Company Creates Technology, Shapes Markets, and Manages People. The Free Press, 1995.

[Dijkstra 68] Dijkstra, E. "The Structure of the 'T.H.E.' Multiprogramming System," Communications of the ACM 18(8), 1968.

[Fielding 96] Fielding, R., Whitehead, E., Anderson, K., Bolcer, G., Oreizy, P., Taylor, R. "Software Engineering and the WWW: The Cobbler's Barefoot Children, Revisited," Technical Report 96-53. Department of Information and Computer Science, University of California, Irvine, November, 1996.

[Fogarty 67] Fogarty, L. "Survey of Flight Simulation Computation Methods," Proceedings of the Third International Simulation and Training Conference. Society for Computer Simulation, 1967.

[Gamma 95] Gamma, E., Helm, R., Johnson, R., Vlissides, J. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1995.

[Garlan 95] Garlan, D., Allen, R., Ockerbloom, J. "Architectural Mismatch: Or Why It's Hard to Build Systems out of Existing Parts," Proceedings of the Seventeenth International Conference on Software Engineering. ACM Press , 1995.

[Gibbs 94] Gibbs, W. "Software's Chronic Crisis," Scientific American, September 1994.

[Glass 98] Glass, R., "Editorial," Journal of Systems and Software (Elsevier Science) 43(3): 161-163, 1998.

[Gram 96] Gram, C., Cockton, G. Design Principles for Interactive Software. Chapman & Hall, 1996.

[Guo 99] Guo, G., Atlee, J., Kazman, R. "A Software Architecture Reconstruction Method," Report No. WICSA1. Proceedings of the First Working IFIP Conference on Software Architecture. Kluwer, 1999.

[Hager 89] Hager, J. "Software Cost Reduction Methods in Practice," IEEE Transaction on Software Engineering 15, 1989.

[Hager 91] Hager, J. "Software Cost Reduction Methods in Practice: A Post-Mortem Analysis," Journal of Systems Software 14, 1991.

[Harris 95] Harris, D., Reubenstein, H., Yeh, A. "Reverse Engineering to the Architectural Level," Proceedings of the Seventeenth International Conference on Software Engineering. ACM Press, 1995.

[Hassan 00] Hassan, A., Holt, R. "A Reference Architecture for Web Servers," Proceedings of the Working Conference on Reverse Engineering. IEEE Computer Society, 2000.

[Hoffman 00] Hoffman, D., Weiss, D. (eds). Software Fundamentals: Collected Papers by David L. Parnas. Addison-Wesley, 2001.

[Hofmeister 00] Hofmeister, C., Nord, R., Soni, D. Applied Software Architecture. Addison-Wesley, 2000.

[IEEE 00] The Institute of Electrical and Electronics Engineers Standards Board. Recommended Practice for Architectural Description of Software-Intensive Systems, IEEE-Std-1471- 2000, September 2000.

[ISO 91] International Standard ISO/IEC 9126. Information Technology: Software Product Evaluation?Quality Characteristics and Guidelines for Their Use. International Organization for Standardization/International Electrotechnical Commission, Geneva, 1991.

[Jacobson 97] Jacobson, I., Griss, M., Jonsson, P. Software Reuse: Architecture, Process, and Organization for Business Success. Addison-Wesley, 1997.

[Jalote 94] Jalote, P. Fault Tolerance in Distributed Systems. Prentice Hall, 1994.

[Jones 99] Jones, T. Capers. Estimating Software Costs. McGraw-Hill, 1999.

[Kazman 94] Kazman, R., Bass, L., Abowd, G., Webb, M. "SAAM: A Method for Analyzing the Properties of Software Architectures," Proceedings of the Sixteenth International Conference on Software Engineering. ACM Press, 1994.

[Kazman 99a] Kazman, R., Carrière, S. "Playing Detective: Reconstructing Software Architecture from Available Evidence," Journal of Automated Software Engineering 6(2), April 1999.

[Kazman 99b] Kazman, R., Barbacci, M., Klein, M., Carrière, S., Woods, S. "Experience with Performing Architecture Tradeoff Analysis," Proceedings of the Twenty-First International Conference on Software Engineering. ACM Press, 1999.

[Kazman 01] Kazman, R., Asundi, J., Klein, M. "Quantifying the Costs and Benefits of Architectural Decisions," Proceedings of the Twenty-Third International Conference on Software Engineering. IEEE Computer Society, 2001.

[Krikhaar 99] Krikhaar, R. Software Architecture Reconstruction. Ph.D. thesis, University of Amsterdam, 1999.

[Kruchten 95] Kruchten, P. "The 4+1 View Model of Architecture," IEEE Software 12(6), 1995.

[Kruchten 00] Kruchten, P. The Rational Unified Process: An Introduction, Second Edition. Addison-Wesley, 2000.

[Laprie 89] Laprie, J. Dependability: A Unifying Concept for Reliable Computing and Fault Tolerance (T. Anderson, ed.). Blackwell Scientific, 1989.

[Lee 88] Lee, K., Rissman, M., D'Ippolito, R., Plinta, C., van Scoy, R. An OOD Paradigm for Flight Simulators, Second Edition, CMU/SEI-1988-TR-30. Software Engineering Institute, Carnegie Mellon University, 1988.

[Marsman 85] Marsman, A. "Flexible and High-Quality Software on a Multi-Processor Computer System Controlling a Research Flight Simulator," AGARD Conference Proceedings No. 408: Flight Simulation 9(1), 1985.

[McCabe 00] McCabe & Associates. "IQ2" (an integrated set of products and processes),, 1996.

[McConnell 96] McConnell, S. Rapid Development: Taming Wild Software Schedules. Microsoft Press, 1996.

[McGregor 01] McGregor, J., Sykes, D. A Practical Guide for Testing Object-Oriented Software. Addison-Wesley, 2001.

[Menasce 00] Menasce, D., Almeida, V. Scaling for E-Business: Technologies, Models, Performance, and Capacity Planning. Prentice Hall, 2000.

[Morris 93] Morris, C., Fergubor, C. "How Architecture Wins Technology Wars," Harvard Business Review, 71(March-April): 86-96, 1993.

[Müller 93] Müller, H., Mehmet, O., Tilley, S., Uhl, J. "A Reverse Engineering Approach to System Identification," Journal of Software Maintenance: Research and Practice 5(4), 1993.

[Parnas 71] Parnas, D. "Information Distribution Aspects of Design Methodology," Proceedings of the 1971 IFIP Congress, North Holland, 1971.

[Parnas 72] Parnas, D. "On the Criteria for Decomposing Systems into Modules," Communications of the ACM 15(12), 1972.

[Parnas 74] Parnas, D. "On a 'Buzzword': Hierarchical Structure," Proceedings of the 1974 IFIP Congress. Kluwer, 1974.

[Parnas 76] Parnas, D. "On the Design and Development of Program Families," IEEE Transactions on Software Engineering, SE-2(1), 1976.

[Parnas 79] Parnas, D. "Designing Software for Ease of Extension and Contraction," IEEE Transactions on Software Engineering SE-5(2), 1979.

[Parnas 85a] Parnas, D., Clements, P., Weiss, D. "The Modular Structure of Complex Systems," Proceedings of the Seventh International Conference on Software Engineering. Reprinted in IEEE Transactions on Software Engineering SE-11, 1985.

[Parnas 85b] Parnas D., Weiss, D. "Active Design Reviews: Principles and Practices," Proceedings of the Eighth International Conference on Software Engineering, 1985.

[Paulish 02] Paulish, D. Architecture-Centric Software Project Management. Addison-Wesley, 2002.

[Perry 66] Perry, D., Warton, L., Welbourn, C. "A Flight Simulator for Research into Aircraft Handling Characteristics," Report No. 3566. Aeronautical Research Council Reports and Memoranda, 1966.

[Pfaff 85] Pfaff, G. (ed.). User Interface Systems. Eurographics Seminars, Springer-Verlag, 1985.

[Ramachandran 02] Ramachandran, J. Designing Security Architecture Solutions. John Wiley, 2002.

[Rissman 90] Rissman, M., D'Ippolito, R., Lee, K., Steward, J. "Definition of Engineering Requirements for AFECO: Lessons from Flight Simulators," CMU/SEI-1990-TR-25. Software Engineering Institute, Carnegie Mellon University, 1990.

[Rumbaugh 99] Rumbaugh, J., Jacobson, I., Booch, G. The Unified Modeling Language Reference Manual. Addison-Wesley, 1999.

[Schmidt 00] Schmidt, D., Stal, M., Rohnert, H., Buschmann, F. Pattern-Oriented Software Architecture, Volume 2: Patterns for Concurrent and Networked Objects. John Wiley, 2000.

[Seacord 99] Seacord, R., Wallnau, K., Robert, J., Comella-Dorda, S., Hissam, S. "Custom vs. Off-the-Shelf Architecture," Proceedings of the Third International Enterprise Distributed Object Computing Conference, 1999.


[Shaw 96] Shaw, M., Garlan, D. Software Architecture: Perspectives on an Emerging Discipline. Prentice Hall, 1996.

[Sneed 98] Sneed, H. "Architecture and Functions of a Commercial Software Reengineering Workbench," Proceedings of the Second Euromicro Conference on Maintenance and Reengineering. IEEE Computer Society, 1998.

[Soni 95] Soni, D., Nord, R., Hofmeister, C. "Software Architecture in Industrial Applications," Proceedings of the Seventeenth International Conference on Software Engineering. ACM Press, 1995.

[Stallings 99] Stallings, W. Cryptography and Network Security: Principles and Practice, Third Edition. Prentice Hall, 1999.

[Stonebraker 90] Stonebraker, M., Rowe, L., Hirohama, M. "The Implementation of POSTGRES," IEEE Transactions on Knowledge and Data Engineering 2(1), 1990.

[Svahnberg 00] Svahnberg, M., Bosch, J. "Issues Concerning Variability in Software Product Lines," Proceedings of the Third International Workshop on Software Architectures for Product Families. Springer LNCS, 2000.

[UIMS 92] UIMS Tool Developers Workshop. "A Metamodel for the Runtime Architecture of an Interactive System," SIGCHI Bulletin 24(1), 1992.

[Wallnau 02] Wallnau, K., Hissam, S., Seacord, R. Building Systems from Commercial Components. Addison-Wesley, 2002.

[Weiss 00] Weiss, D., Lai, C. Software Product Line Engineering: A Family-Based Software Development Process. Addison-Wesley, 2000.

[Witt 94] Witt, B., Baker, F., Merritt, E. Software Architecture and Design. Van Nostrand Reinhold, 1994.

[Wong 94] Wong, K., Tilley, S., Muller, H., Storey, M. "Programmable Reverse Engineering," International Journal of Software Engineering and Knowledge Engineering 4(4), December 1994.

    Part Two: Creating an Architecture
    Part Four: Moving From One System to Many