Dr. J. Fernando Naveda is the chair of the department of Software Engineering at the Rochester Institute of Technology, Rochester NY. In 1979 he earned a bachelor’s degree in Computing Systems Engineering from "Instituto Teconólogico y de Estudios Superiores de Monterrey," Monterrey, NL México. In 1986 he earned a doctoral degree in Computer and Information Sciences from the department of Computer Science at the University of Minnesota, Twin Cities. From 1986 through 1987 he was a faculty member with the department of Computer Science at the University of Kansas, Lawrence. Later in 1987 he joined the department of Computing Sciences at the university of Scranton, Scranton PA where he developed and directed that university’s Masters program in Software Engineering. He was a visiting scientist with the Software Engineering Institute in 1990. Between 1991 and 1993 he was a visiting scientist with the department of Computer Science at the Naval Postgraduate School, Monterey, California where he worked in the Computer Aided Prototyping System. He joined RIT’s department of Computer Science in 1993 where he was instrumental in developing the Institute’s baccalaureate program in Software Engineering, the first program of its kind in The United States. Dr. Naveda’s interests are in software engineering education, software architectures, software design, and software process. He is currently conducting joint research with XEROX Corp. on document abstraction and representation.
Over the last 25 years, the software industry has experienced a shift in focus from programming-in-the-small to programming-in-the-large. Indeed, the 1970s were characterized by attention to program-level details. Programming methodologies and languages were invented that captured our interest and understanding of (by today's standards) relatively small programs.
During the 1980s and early 1990s our attention shifted from the very concrete to the more abstract and, again, programming languages and methodologies were developed to capture that interest. Thus Object-Oriented methodologies and languages became fashionable. It is largely due to the popularity of OO languages that design patterns were finally documented and catalogued. Although these patterns had been in use for many years and in contexts other than OO technology, it was object-oriented programming languages what made it possible to capture their properties in a concrete-enough format so as to make them easier to communicate to and be digested by software professionals.
During the 1990s we shifted our interest once more and focused on architectural styles. Unlike design patterns, architectural styles are even more abstract and it is not practical to capture their properties in a specific programming language. In fact, there is not even an agreement on a language for documenting architectural designs, let alone styles.
The software engineer is constantly challenged by non-trivial design decisions as she tries to balance between different architectural attributes of the system well before the fist line of code is written.
As it turns out, some of these attributes can be studied while the architect is still thinking about the software system, even before she starts thinking in more tangible terms like objects, or even design patterns. Other attributes however, cannot be discerned at design time but rather at later stages in the development process.
In this talk we will discuss software architectural design as it relates to quality attributes. We will identify attributes that are discernible at the architectural stage as well as at later stages of the software development process.