28
1 Software Architecture Software Architecture Training at SEI – my Training at SEI – my recollection and comments recollection and comments Ning Chen, Ph.D. Ning Chen, Ph.D. Professor Professor Department of Computer Science Department of Computer Science California State University, Fullerton California State University, Fullerton

Software Architecture Training at SEI - My recollection and

  • Upload
    aamir97

  • View
    1.033

  • Download
    2

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Software Architecture Training at SEI - My recollection and

1

Software Architecture Training at Software Architecture Training at SEI – my recollection and SEI – my recollection and commentscomments

Ning Chen, Ph.D.Ning Chen, Ph.D.ProfessorProfessorDepartment of Computer ScienceDepartment of Computer ScienceCalifornia State University, FullertonCalifornia State University, Fullerton

Page 2: Software Architecture Training at SEI - My recollection and

2

SEI (Software Engineering Institute) at SEI (Software Engineering Institute) at Carnegie Mellon University Carnegie Mellon University source: www.sei.cmu.edusource: www.sei.cmu.edu

Page 3: Software Architecture Training at SEI - My recollection and

3

Cathedral of Learning Cathedral of Learning at University of at University of

Pittsburgh (source: www.umc.pitt.edu)Pittsburgh (source: www.umc.pitt.edu)

Page 4: Software Architecture Training at SEI - My recollection and

4

SEI Training MaterialsSEI Training Materials

The materials used in training The materials used in training are copyrighted by SEI and are copyrighted by SEI and distribution is limited to distribution is limited to attendees only. attendees only.

Book from which the training is Book from which the training is based– Available to everyone if based– Available to everyone if you buy one. you buy one.

Page 5: Software Architecture Training at SEI - My recollection and

5

What is Software Architecture?What is Software Architecture?

My understanding of the SEI’s My understanding of the SEI’s approach: Before one defines approach: Before one defines Software Architecture, one needs to Software Architecture, one needs to define two additional terms - define two additional terms - Enterprise Architecture and System Enterprise Architecture and System Architecture.Architecture.

My comments: I like this idea that My comments: I like this idea that Software Architecture is a subset of Software Architecture is a subset of System Architecture and System System Architecture and System Architecture is a subset of Enterprise Architecture is a subset of Enterprise Architecture. Architecture.

Page 6: Software Architecture Training at SEI - My recollection and

6

What is Software Architecture? (continued)What is Software Architecture? (continued)

One of the SEI’s definitions: One of the SEI’s definitions: “The software architecture of a “The software architecture of a program or computing system is program or computing system is the structure or structures of the structure or structures of the system, which comprise the the system, which comprise the software elements, the software elements, the externally visible properties of externally visible properties of those elements, and the those elements, and the relationships among them.” relationships among them.” (source: (source:

Software Architecture in Practice second edition)Software Architecture in Practice second edition)

Page 7: Software Architecture Training at SEI - My recollection and

7

Why is Software Architecture Why is Software Architecture Important?Important?

SEI: “1. It provides a vehicle for SEI: “1. It provides a vehicle for communication among stakeholders. communication among stakeholders. 2. It is the manifestation of the 2. It is the manifestation of the earliest designs about a system. 3. It earliest designs about a system. 3. It is transferable, reusable abstraction is transferable, reusable abstraction of a system.”of a system.”

My comments: There are disputes on My comments: There are disputes on how one defines the term “Software how one defines the term “Software Architecture.” Not many people Architecture.” Not many people dispute the usage of a software dispute the usage of a software architecture. architecture.

Page 8: Software Architecture Training at SEI - My recollection and

8

Vehicle for CommunicationVehicle for Communication

SEI: “1. Negotiating with users. 2. SEI: “1. Negotiating with users. 2. Keeping the customer informed of Keeping the customer informed of progress. 3. Implementing progress. 3. Implementing management decisions and management decisions and allocations. 4. Architects and allocations. 4. Architects and implementers use the architecture to implementers use the architecture to guide development.” guide development.”

My comments: The word “Software My comments: The word “Software Architect” is gaining popularity. It is Architect” is gaining popularity. It is important to realize that a software important to realize that a software architect involves more than just architect involves more than just software. software.

Page 9: Software Architecture Training at SEI - My recollection and

9

Early Design DecisionsEarly Design Decisions

SEI: “Architecture allows SEI: “Architecture allows predicting system qualities predicting system qualities without waiting until the system without waiting until the system is developed or deployed.”is developed or deployed.”

My comments: SEI actually My comments: SEI actually comes up with a lot of good comes up with a lot of good arguments for early design arguments for early design decisions. decisions.

Page 10: Software Architecture Training at SEI - My recollection and

10

Transferable, Reusable Transferable, Reusable AbstractionAbstraction

SEI: “1. Architecture supports SEI: “1. Architecture supports building systems using large, building systems using large, independently developed independently developed components. 2. Architecture enables components. 2. Architecture enables template-based development.”template-based development.”

My comments: This is easier said My comments: This is easier said than done. Nevertheless, everyone than done. Nevertheless, everyone agrees that this is the thing to come. agrees that this is the thing to come. By the way, in my opinion, J2EE is a By the way, in my opinion, J2EE is a good starting point.good starting point.

Page 11: Software Architecture Training at SEI - My recollection and

11

Architecture StructureArchitecture Structure

SEI: “Architecture structure can SEI: “Architecture structure can be divided into three types: 1. be divided into three types: 1. module structures, module structures, 2.component-connector 2.component-connector structures, 3. allocation structures, 3. allocation structures.”structures.”

My comments: This probably is My comments: This probably is one of the most important one of the most important concepts you want to know. concepts you want to know.

Page 12: Software Architecture Training at SEI - My recollection and

12

Architecture StructureArchitecture Structure

Modules: uses, decomposition, Modules: uses, decomposition, layers, class/generalization, etc.layers, class/generalization, etc.

Component-and-Connector: Component-and-Connector: client-server, concurrency, client-server, concurrency, process, share-data, etc.process, share-data, etc.

Allocation: work assignment, Allocation: work assignment, deployment, implementation, deployment, implementation, etc.etc.

Page 13: Software Architecture Training at SEI - My recollection and

13

Architecture Business Cycle (ABC)Architecture Business Cycle (ABC)source: Software Architecture in Practice second editionsource: Software Architecture in Practice second edition

SEI:SEI:

Page 14: Software Architecture Training at SEI - My recollection and

14

I think I have learned enough. Can I I think I have learned enough. Can I design a software architecture now?design a software architecture now?

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

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

Page 15: Software Architecture Training at SEI - My recollection and

15

Quality AttributeQuality Attribute (this is one of the SEI’s babies. You may want (this is one of the SEI’s babies. You may want

to pay great attention to it)to pay great attention to it)

Some general quality attributes: Some general quality attributes: availability, modifiability, availability, modifiability, performance, security, testability, performance, security, testability, usability, etc.usability, etc.

SEI: ”Architecture is critical to the SEI: ”Architecture is critical to the realization of quality attributes.”realization of quality attributes.”

My interpretation: if, for example, the My interpretation: if, for example, the availability is the must-have quality availability is the must-have quality attribute of your system, then you attribute of your system, then you had better to come up with an had better to come up with an architecture that “shoots” for that architecture that “shoots” for that quality. In other words, the quality. In other words, the architectural design is driven by the architectural design is driven by the desired quality attributes. desired quality attributes.

Page 16: Software Architecture Training at SEI - My recollection and

16

Quality AttributeQuality Attribute (this is one of the SEI’s babies. You may want (this is one of the SEI’s babies. You may want

to pay great attention to it)to pay great attention to it)

SEI: “In a traditional system SEI: “In a traditional system development quality attributes development quality attributes are rarely captured in are rarely captured in requirements specifications. requirements specifications. They are often vaguely They are often vaguely understood and weakly understood and weakly articulated.”articulated.”

What should we do?What should we do? SEI’s answer: QAW (SEI Quality SEI’s answer: QAW (SEI Quality

Attribute Workshop)Attribute Workshop)

Page 17: Software Architecture Training at SEI - My recollection and

17

SEI QAW stepsSEI QAW steps

1. QAW presentation and introductions1. QAW presentation and introductions 2. Business/Mission presentation2. Business/Mission presentation 3. Architectural plan presentation3. Architectural plan presentation 4. Identification of architectural drivers4. Identification of architectural drivers 5. Scenario* brainstorming5. Scenario* brainstorming 6. Scenario consolidation6. Scenario consolidation 7. Scenario prioritization 7. Scenario prioritization 8. Scenario refinement8. Scenario refinement(Iterate above as necessary with broader (Iterate above as necessary with broader

stakeholder community) stakeholder community) *SEI came up with a quality scenario *SEI came up with a quality scenario

consisting six parts: 1. Source, 2. Stimulus, consisting six parts: 1. Source, 2. Stimulus, 3 Artifact, 4. Environment, 5. Response, 6. 3 Artifact, 4. Environment, 5. Response, 6. Response Measure.Response Measure.

Page 18: Software Architecture Training at SEI - My recollection and

18

My comments on SEI QAWMy comments on SEI QAW

Don’t ever underestimate this one-Don’t ever underestimate this one-page QAW description. Based on page QAW description. Based on what I heard, QAW is a big money-what I heard, QAW is a big money-making machine for SEI. If you ask making machine for SEI. If you ask SEI to do a QAW for you, it will cost SEI to do a QAW for you, it will cost you a-leg-and-an-arm. you a-leg-and-an-arm.

My analogy: high-cost marriage My analogy: high-cost marriage counseling: almost everyone knows counseling: almost everyone knows what is the source of difficulty in what is the source of difficulty in marriage and you just can’t fix them marriage and you just can’t fix them by yourself. by yourself.

Page 19: Software Architecture Training at SEI - My recollection and

19

PatternsPatterns

SEI: “An architectural pattern 1. is SEI: “An architectural pattern 1. is found repeatedly in practice, 2. is found repeatedly in practice, 2. is package of design decisions, 3. has package of design decisions, 3. has known properties that permit reuse, known properties that permit reuse, 4. describes a class of architectures.”4. describes a class of architectures.”

My comments: don’t mix the concept My comments: don’t mix the concept of patterns and the usage of of patterns and the usage of patterns. Sometimes dealing with patterns. Sometimes dealing with one thing at a time will make things one thing at a time will make things much easier.much easier.

Example: pipe-and-filterExample: pipe-and-filter

Page 20: Software Architecture Training at SEI - My recollection and

20

TacticsTactics

SEI: “Tactics are the building SEI: “Tactics are the building blocks of design from which blocks of design from which architectural patterns are architectural patterns are created.”created.”

Pattern tactics relationship: Any Pattern tactics relationship: Any pattern implements several pattern implements several different tactics, often to different tactics, often to promote various quality promote various quality attributes. Each implementation attributes. Each implementation of a given pattern involves of a given pattern involves unique choices of tactics. unique choices of tactics.

Page 21: Software Architecture Training at SEI - My recollection and

21

Tactics (continued)Tactics (continued)

SEI: “Tactics example for SEI: “Tactics example for availability: ping/echo”availability: ping/echo”

My explanation: If the system My explanation: If the system you are designing requires high you are designing requires high availability, then you may want availability, then you may want to use the ping/echo to use the ping/echo tactic/pattern as one of the tactic/pattern as one of the building blocks of your software building blocks of your software architecture. architecture.

Page 22: Software Architecture Training at SEI - My recollection and

22

Tactics (continued) Tactics (continued) source: Software source: Software

Architecture in Practice second editionArchitecture in Practice second edition

SEI came up with a mapping SEI came up with a mapping between the well-known tactics between the well-known tactics and the quality attributes.and the quality attributes.

Page 23: Software Architecture Training at SEI - My recollection and

23

I guess, finally I can start designing an I guess, finally I can start designing an architecture for my system. Right?architecture for my system. Right?

SEI: Not quite yet. You need to SEI: Not quite yet. You need to learn one more buzzword – SEI’s learn one more buzzword – SEI’s ADDADD

What is ADD?What is ADD? ADD stands for Attribute-Driven ADD stands for Attribute-Driven

DesignDesign

Page 24: Software Architecture Training at SEI - My recollection and

24

SEI’s Attribute-Driven DesignSEI’s Attribute-Driven Design

SEI: “The Attribute-Driven Design SEI: “The Attribute-Driven Design (ADD) method, developed by the SEI, (ADD) method, developed by the SEI, is an approach to define a software is an approach to define a software architecture that bases the architecture that bases the decomposition process on the quality decomposition process on the quality attributes the software must fill. ADD attributes the software must fill. ADD follows a recursive decomposition follows a recursive decomposition process where, at each stage in the process where, at each stage in the decomposition, tactics and decomposition, tactics and architectural patterns are chosen to architectural patterns are chosen to satisfy a set of quality attribute satisfy a set of quality attribute scenarios.”scenarios.”

Page 25: Software Architecture Training at SEI - My recollection and

25

SEI’s Attribute-Driven Design SEI’s Attribute-Driven Design (continued)(continued)

My interpretation: The idea is quite My interpretation: The idea is quite interesting. The attribute-driven interesting. The attribute-driven architecture goes the following way. First architecture goes the following way. First break (decompose) the system to small break (decompose) the system to small workable parts. Get quality attributes from workable parts. Get quality attributes from your boss. Find some suitable your boss. Find some suitable patterns/tactics from your pattern catalog patterns/tactics from your pattern catalog (just consider this is a pattern yellow book). (just consider this is a pattern yellow book). Repeat the process if necessary. Repeat the process if necessary.

My thoughts: Unfortunately My SEI My thoughts: Unfortunately My SEI instructor for some reason “flew through” instructor for some reason “flew through” this portion without working out a detailed this portion without working out a detailed example. It is highly possible that applying example. It is highly possible that applying ADD to a non-trivial real-world problem is ADD to a non-trivial real-world problem is not that straightforward. not that straightforward.

Page 26: Software Architecture Training at SEI - My recollection and

26

Conclusion: Want to become a Conclusion: Want to become a Software Architect?Software Architect?

My informal survey: about 30 My informal survey: about 30 people from industry attended people from industry attended this workshop. Half of them said this workshop. Half of them said they belonged to the Software they belonged to the Software Architecture Department in their Architecture Department in their organizations. About 20% of organizations. About 20% of them actually have the job title them actually have the job title of Software Architect. of Software Architect.

Page 27: Software Architecture Training at SEI - My recollection and

27

Conclusion: Want to become a Conclusion: Want to become a Software Architect?Software Architect?

Will the job title of “Software Will the job title of “Software Architect” become abundant?Architect” become abundant?

My thoughts: No one has a crystal My thoughts: No one has a crystal ball and it is still hard to say whether ball and it is still hard to say whether industry will seek lots of Software industry will seek lots of Software Architects in the near future. Architects in the near future. Nonetheless, I have seen the Nonetheless, I have seen the transition from “programmer” to transition from “programmer” to “Software Engineer.” It is not that “Software Engineer.” It is not that unusually now to find a Software unusually now to find a Software Architecture Department in a mid-Architecture Department in a mid-size organization. size organization.

Page 28: Software Architecture Training at SEI - My recollection and

28

Conclusion: Want to become a Conclusion: Want to become a Software Architect?Software Architect?

What should I do to prepare myself?What should I do to prepare myself? You may want to play “follow the You may want to play “follow the

leader” game. SEI apparently is one of leader” game. SEI apparently is one of the major mover-and-shakers. You the major mover-and-shakers. You many want to “ride the SEI train.”many want to “ride the SEI train.”

You may want to improve your You may want to improve your people/communication skills – people/communication skills – Software Architecture involves lots Software Architecture involves lots people-related activities. Your people-related activities. Your technology skill alone is not enough. technology skill alone is not enough. You had better be good at the people You had better be good at the people skill too. skill too.