Sei Software Architecture Fundamentals Presentation
Sei Software Architecture Fundamentals Presentation
Todays Speaker
Rob Wojcik is a member of the technical staff in the Research, Technology, and System Solutions Program at the SEI, a position he has held since 2004. In his current position, he performs training and consulting in software architecture technology and software architecture evaluations. Prior to his position at the SEI, over twenty five years of his career were dedicated to developing software systems that utilize traditional as well as artificial intelligence and object oriented technologies.
Page 2
Polling Question #1
How did you hear about this webinar?
1.Email 2.SEI
Member Bulletin
7/8/2010
3Page 3
Page 4
Mission
Page 5
Architecture-Centric Engineering System of Systems Practice System of Systems Software Assurance Product Line Practice
Cross-Cutting Efforts
Page 6
Todays Topics
What is Software Architecture? Why is Software Architecture Important? Which Requirements Are Most Important To Architectural Design? What Else Influences Software Architecture?
Page 7
I know a whole lot about software architecture I know enough about software architecture to get by I know very little about software architecture What the heck is software architecture?
Page 8
Todays Topics
What is Software Architecture? Why is Software Architecture Important? Which Requirements Are Most Important To Architectural Design? What Else Influences Software Architecture?
Page 9
Ramanujam: an iterative framework between software components required to meet the stated objectives of the business, in terms of cost to develop/maintain the software components, time to market, and life expectancy of the components
Software Engineering Institute: the structure or structures of the system, which comprise the software elements, the externally visible properties of those elements, and the relationships among them
Riemenschneider: the mapping from the problem space to the solution space, where the problem space is devoid of implementation concerns and the solution space is the sum total of all implementation concerns
Mulvaney: a set of implementation elements together with the mechanisms through which they collaborate to provide the system's required functionality
ANSI/IEEE: the fundamental organization of a system, embodied in its components, their relationships to each other and the environment, and the principles governing its design and evolution
Ahmed: a coherent set of abstract patterns, or principles, guiding the design of each aspect of a large software system
Matthaeus: A configurable skeleton of any kind of software beast on which you hang implementation specific muscle to make it live
Page 10
is an abstraction that describes software elements addresses the roles, responsibilities, behaviors and properties of software elements addresses the relationships between software elements
shows what software elements provide to and require from each other
shows the relationship to non-software elements is described from many different perspectives
Page 11
Page 12
Todays Topics
What is Software Architecture? Why is Software Architecture Important? Which Requirements Are Most Important To Architectural Design? What Else Influences Software Architecture?
Page 13
Page 14
Todays Topics
What is Software Architecture? Why is Software Architecture Important? Which Requirements Are Most Important To Architectural Design? What Else Influences Software Architecture?
Page 15
Which requirements are the most important when it comes to structuring an architecture?
Page 16
Something to Consider
Whats wrong with designing a system that has one big source module, one big object module, and one big executable as long as it functions properly?
buildability
modifiability testability complexity maintainability Others?
portability
Module
1 2 3 : : : . . . 1,999,999 : 2,000,000 :
Page 17
Page 18
Requirements Elicitation
Yet these are critical to architectural design! Eliciting Eliciting functional requirements quality attribute and design constraints requirements
Good Job
Bad Job
Page 19
The system must be easy to use. The system must have high performance. The system must be portable.
Vocabulary variations
Page 20
Todays Topics
What is Software Architecture? Why is Software Architecture Important? Which Requirements Are Most Important To Architectural Design? What Else Influences Software Architecture?
Page 21
Software Architecture
Page 22
Development organization
Technical environment
object oriented, WWW, intelligent agents, EJB, service oriented, J2EE, thin client, .NET, etc.
Page 23
Software Architecture
influences
Page 24
Stakeholder requirements
Technical environment
promote approaches that have been successful reject approaches that have failed
Page 25
Software Architecture
influences
Understanding this cycle of influences helps us to plan for and manage change throughout the lifetime of a system.
Page 26
Conclusion
Software architecture is important!
Quality attribute requirements are critical! Requirements arent the only things that influence software architectures!
Page 27
Software Architecture in Practice, 2nd edition written by Len Bass, Paul Clements, & Rick Kazman and published by Addison-Wesley as part of the SEI Series in Software Engineering
Page 28
Page 29
Page 30
Page 31
Page 32
Page 33
NO
WARRANTY
THIS
MATERIAL OF CARNEGIE MELLON UNIVERSITY AND ITS SOFTWARE ENGINEERING INSTITUTE IS FURNISHED ON AN AS-IS" BASIS. CARNEGIE MELLON UNIVERSITY MAKES NO WARRANTIES OF ANY KIND, EITHER EXPRESSED OR IMPLIED, AS TO ANY MATTER INCLUDING, BUT NOT LIMITED TO, WARRANTY OF FITNESS FOR PURPOSE OR MERCHANTABILITY, EXCLUSIVITY, OR RESULTS OBTAINED FROM USE OF THE MATERIAL. CARNEGIE MELLON UNIVERSITY DOES NOT MAKE ANY WARRANTY OF ANY KIND WITH RESPECT TO FREEDOM FROM PATENT, TRADEMARK, OR COPYRIGHT INFRINGEMENT.
Use
of any trademarks in this presentation is not intended in any way to infringe on the rights of the trademark holder.
This
Presentation may be reproduced in its entirety, without modification, and freely distributed in written or electronic form without requesting formal permission. Permission is required for any other use. Requests for permission should be directed to the Software Engineering Institute at [email protected].
This
work was created in the performance of Federal Government Contract Number FA8721-05C-0003 with Carnegie Mellon University for the operation of the Software Engineering Institute, a federally funded research and development center. The Government of the United States has a royalty-free government-purpose license to use, duplicate, or disclose the work, in whole or in part and in any manner, and to have or permit others to do so, for government purposes pursuant to the copyright license under the clause at 252.227-7013.
Page 34