Let's Teach Architecting High Quality Software

 
Linda Northrop

Quality software is software that is fit for its intended purpose.  High quality software meets business goals and user needs, which means it has the right features and the right attributes.  Building quality software requires using disciplined processes and a carefully designed software architecture. The architecture part of this quality equation has often been ignored in software engineering education.  Too often we teach only low-level code design.  Yet, the software architecture is the first design artifact that addresses key quality attributes such as affordability, reliability, security, modifiability, and performance. The quality of a system emanates in large part from the software architecture.  The software architecture provides the most fundamental basis for communicating design decisions and establishing effective work breakdown structures. The software architecture is the reusable, transferable abstraction that is the basis for software product lines.   Architecture represents an enormous risk in a software development project; the wrong architecture leads to poor quality software and very often to project failure.   

It’s time that all software engineering students know the principles of software architecture and how to use effective architecture practices.  Every facet of our society depends on software.  To ensure high quality software we need to teach our students to architect high quality software.

Linda Northrop is director of the Product Line Systems Program at the Carnegie Mellon University's Software Engineering Institute (SEI), a position she has held since 1995.  She leads the SEI work in software architecture, reengineering, component and product line engineering. She is also the lead of a new research study in ultra-large-scale systems.  She is co-author of the book, "Software Product Lines: Practices and Patterns," has worked directly on successful software product lines, chaired both the first and second international Software Product Line Conference (SPLC1 and SPLC2), and is chair of the SPLC Steering Committee. She has written extensively about software engineering and is a frequently invited speaker at technical and corporate conferences. Before joining the SEI, she was associated with both the United States Air Force Academy and the State University of New York as professor of computer science, and with both Eastman Kodak and IBM as a software engineer. Linda is a recipient of the Carnegie Science Award of Excellence for Information Technology and the New York State Chancellor's Award for Excellence in Teaching.  She is a member of the OOPSLA Steering and the AOSD Steering Committees, the ACM, and the IEEE Computer Society.