software architecture training at sei my recollection and comments l.
Skip this Video
Loading SlideShow in 5 Seconds..
PowerPoint Presentation
Download Presentation

Loading in 2 Seconds...

play fullscreen
1 / 28

- PowerPoint PPT Presentation

  • Uploaded on

Software Architecture Training at SEI – my recollection and comments Ning Chen, Ph.D. Professor Department of Computer Science California State University, Fullerton SEI (Software Engineering Institute) at Carnegie Mellon University source:

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
Download Presentation

PowerPoint Slideshow about '' - Mercy

Download Now An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
software architecture training at sei my recollection and comments

Software Architecture Training at SEI – my recollection and comments

Ning Chen, Ph.D.


Department of Computer Science

California State University, Fullerton

sei training materials
SEI Training Materials
  • The materials used in training are copyrighted by SEI and distribution is limited to attendees only.
  • Book from which the training is based– Available to everyone if you buy one.
what is software architecture
What is Software Architecture?
  • My understanding of the SEI’s approach: Before one defines Software Architecture, one needs to define two additional terms - Enterprise Architecture and System Architecture.
  • My comments: I like this idea that Software Architecture is a subset of System Architecture and System Architecture is a subset of Enterprise Architecture.
what is software architecture continued
What is Software Architecture? (continued)
  • One of the SEI’s definitions: “The software architecture of a program or computing system is the structure or structures of the system, which comprise the software elements, the externally visible properties of those elements, and the relationships among them.” (source: Software Architecture in Practice second edition)
why is software architecture important
Why is Software Architecture Important?
  • SEI: “1. It provides a vehicle for communication among stakeholders. 2. It is the manifestation of the earliest designs about a system. 3. It is transferable, reusable abstraction of a system.”
  • My comments: There are disputes on how one defines the term “Software Architecture.” Not many people dispute the usage of a software architecture.
vehicle for communication
Vehicle for Communication
  • SEI: “1. Negotiating with users. 2. Keeping the customer informed of progress. 3. Implementing management decisions and allocations. 4. Architects and implementers use the architecture to guide development.”
  • My comments: The word “Software Architect” is gaining popularity. It is important to realize that a software architect involves more than just software.
early design decisions
Early Design Decisions
  • SEI: “Architecture allows predicting system qualities without waiting until the system is developed or deployed.”
  • My comments: SEI actually comes up with a lot of good arguments for early design decisions.
transferable reusable abstraction
Transferable, Reusable Abstraction
  • SEI: “1. Architecture supports building systems using large, independently developed components. 2. Architecture enables template-based development.”
  • My comments: This is easier said than done. Nevertheless, everyone agrees that this is the thing to come. By the way, in my opinion, J2EE is a good starting point.
architecture structure
Architecture Structure
  • SEI: “Architecture structure can be divided into three types: 1. module structures, 2.component-connector structures, 3. allocation structures.”
  • My comments: This probably is one of the most important concepts you want to know.
architecture structure12
Architecture Structure
  • Modules: uses, decomposition, layers, class/generalization, etc.
  • Component-and-Connector: client-server, concurrency, process, share-data, etc.
  • Allocation: work assignment, deployment, implementation, etc.
architecture business cycle abc source software architecture in practice second edition
Architecture Business Cycle (ABC)source: Software Architecture in Practice second edition
  • SEI:
i think i have learned enough can i design a software architecture now
I think I have learned enough. Can I design a software architecture now?

Q. My stakeholders handed me the requirements already and I have a pretty good understanding of the system. Can I start designing my software architecture now?

A. SEI’s answer: Not yet. You need to know two more things before you can start: Quality Attributes and Patterns/tactics.

quality attribute this is one of the sei s babies you may want to pay great attention to it
Quality Attribute(this is one of the SEI’s babies. You may want to pay great attention to it)
  • Some general quality attributes: availability, modifiability, performance, security, testability, usability, etc.
  • SEI: ”Architecture is critical to the realization of quality attributes.”
  • My interpretation: if, for example, the availability is the must-have quality attribute of your system, then you had better to come up with an architecture that “shoots” for that quality. In other words, the architectural design is driven by the desired quality attributes.
quality attribute this is one of the sei s babies you may want to pay great attention to it16
Quality Attribute(this is one of the SEI’s babies. You may want to pay great attention to it)
  • SEI: “In a traditional system development quality attributes are rarely captured in requirements specifications. They are often vaguely understood and weakly articulated.”
  • What should we do?
  • SEI’s answer: QAW (SEI Quality Attribute Workshop)
sei qaw steps
SEI QAW steps
  • 1. QAW presentation and introductions
  • 2. Business/Mission presentation
  • 3. Architectural plan presentation
  • 4. Identification of architectural drivers
  • 5. Scenario* brainstorming
  • 6. Scenario consolidation
  • 7. Scenario prioritization
  • 8. Scenario refinement

(Iterate above as necessary with broader stakeholder community)

*SEI came up with a quality scenario consisting six parts: 1. Source, 2. Stimulus, 3 Artifact, 4. Environment, 5. Response, 6. Response Measure.

my comments on sei qaw
My comments on SEI QAW
  • Don’t ever underestimate this one-page QAW description. Based on what I heard, QAW is a big money-making machine for SEI. If you ask SEI to do a QAW for you, it will cost you a-leg-and-an-arm.
  • My analogy: high-cost marriage counseling: almost everyone knows what is the source of difficulty in marriage and you just can’t fix them by yourself.
  • SEI: “An architectural pattern 1. is found repeatedly in practice, 2. is package of design decisions, 3. has known properties that permit reuse, 4. describes a class of architectures.”
  • My comments: don’t mix the concept of patterns and the usage of patterns. Sometimes dealing with one thing at a time will make things much easier.
  • Example: pipe-and-filter
  • SEI: “Tactics are the building blocks of design from which architectural patterns are created.”
  • Pattern tactics relationship: Any pattern implements several different tactics, often to promote various quality attributes. Each implementation of a given pattern involves unique choices of tactics.
tactics continued
Tactics (continued)
  • SEI: “Tactics example for availability: ping/echo”
  • My explanation: If the system you are designing requires high availability, then you may want to use the ping/echo tactic/pattern as one of the building blocks of your software architecture.
tactics continued source software architecture in practice second edition
Tactics (continued) source: Software Architecture in Practice second edition
  • SEI came up with a mapping between the well-known tactics and the quality attributes.
i guess finally i can start designing an architecture for my system right
I guess, finally I can start designing an architecture for my system. Right?
  • SEI: Not quite yet. You need to learn one more buzzword – SEI’s ADD
  • What is ADD?
  • ADD stands for Attribute-Driven Design
sei s attribute driven design
SEI’s Attribute-Driven Design
  • SEI: “The Attribute-Driven Design (ADD) method, developed by the SEI, is an approach to define a software architecture that bases the decomposition process on the quality attributes the software must fill. ADD follows a recursive decomposition process where, at each stage in the decomposition, tactics and architectural patterns are chosen to satisfy a set of quality attribute scenarios.”
sei s attribute driven design continued
SEI’s Attribute-Driven Design (continued)
  • My interpretation: The idea is quite interesting. The attribute-driven architecture goes the following way. First break (decompose) the system to small workable parts. Get quality attributes from your boss. Find some suitable patterns/tactics from your pattern catalog (just consider this is a pattern yellow book). Repeat the process if necessary.
  • My thoughts: Unfortunately My SEI instructor for some reason “flew through” this portion without working out a detailed example. It is highly possible that applying ADD to a non-trivial real-world problem is not that straightforward.
conclusion want to become a software architect
Conclusion: Want to become a Software Architect?
  • My informal survey: about 30 people from industry attended this workshop. Half of them said they belonged to the Software Architecture Department in their organizations. About 20% of them actually have the job title of Software Architect.
conclusion want to become a software architect27
Conclusion: Want to become a Software Architect?
  • Will the job title of “Software Architect” become abundant?
  • My thoughts: No one has a crystal ball and it is still hard to say whether industry will seek lots of Software Architects in the near future. Nonetheless, I have seen the transition from “programmer” to “Software Engineer.” It is not that unusually now to find a Software Architecture Department in a mid-size organization.
conclusion want to become a software architect28
Conclusion: Want to become a Software Architect?
  • What should I do to prepare myself?
  • You may want to play “follow the leader” game. SEI apparently is one of the major mover-and-shakers. You many want to “ride the SEI train.”
  • You may want to improve your people/communication skills – Software Architecture involves lots people-related activities. Your technology skill alone is not enough. You had better be good at the people skill too.