1 Software Architect – A Long- Term Job/Strategy in IT Ning Chen, Ph.D. Professor Department of...

33
© 2005 N. Chen 1 Software Architect – A Long- Software Architect – A Long- Term Job/Strategy in IT Term Job/Strategy in IT 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 E-mail: [email protected] E-mail: [email protected]
  • date post

    22-Dec-2015
  • Category

    Documents

  • view

    215
  • download

    0

Transcript of 1 Software Architect – A Long- Term Job/Strategy in IT Ning Chen, Ph.D. Professor Department of...

© 2005 N. Chen 1

Software Architect – A Long-Software Architect – A Long-Term Job/Strategy in ITTerm Job/Strategy in ITNing Chen, Ph.D.Ning Chen, Ph.D.ProfessorProfessorDepartment of Computer ScienceDepartment of Computer ScienceCalifornia State University, FullertonCalifornia State University, FullertonE-mail: [email protected]: [email protected]

© BusinessWeek 2

Source: BusinessWeek March 1, 2004Source: BusinessWeek March 1, 2004

© BusinessWeek 3

Source: BusinessWeek March 1, 2004Source: BusinessWeek March 1, 2004

© 2005 N. Chen 4

My Personal View: Two Software My Personal View: Two Software Business ModelsBusiness Models

One-segment approach– One-segment approach– “Developing Software” (design “Developing Software” (design and implementation done by and implementation done by one party)one party)

Two-segment Two-segment approach-”Manufacturing approach-”Manufacturing Software” (design and Software” (design and implementation are done implementation are done separately by two or more separately by two or more parties) parties)

© 2005 N. Chen 5

My Personal View: Advantages of My Personal View: Advantages of two-segment modeltwo-segment model

Fewer conflicts of interest Fewer conflicts of interest Easier to outsourceEasier to outsource Cheaper to implement (cost of Cheaper to implement (cost of

implementation can be implementation can be determined by determined by market/competition)market/competition)

Better software quality (quality Better software quality (quality attribute driven design)attribute driven design)

© 2005 N. Chen 6

My Personal View: Is the two-My Personal View: Is the two-segment model here already?segment model here already?

Not yet. But there are strong driving forces Not yet. But there are strong driving forces behind it. Some significant signs are showing up.behind it. Some significant signs are showing up.

The two-segment model has the following driving The two-segment model has the following driving forces:forces:

1.1. Technology in software engineering Technology in software engineering (Patterns/Tactics, Components, Model Driven (Patterns/Tactics, Components, Model Driven Architectures, Attribute Driven Design)Architectures, Attribute Driven Design)

2.2. Market force (better, cheaper software)Market force (better, cheaper software)3.3. Internet (calling China now is cheaper than calling Internet (calling China now is cheaper than calling

Ventura County)Ventura County)4.4. Organizations that promote software engineering Organizations that promote software engineering

(SEI, etc.)(SEI, etc.)

© 2005 N. Chen 7

Jobs exist in the two-segment Jobs exist in the two-segment marketmarket

Upper segment – Upper segment –

“ “Software Architects” – may Software Architects” – may include project managers and include project managers and business analysts with software business analysts with software backgroundbackground

Lower segment – Lower segment –

“ “Software Implementers/labors” Software Implementers/labors” – those who do “repetitive – those who do “repetitive labor” worklabor” work

© 2005 N. Chen 8

My Personal Observation: “Work/life My Personal Observation: “Work/life Styles” in upper and lower segmentsStyles” in upper and lower segments

Upper segment – Upper segment – “ “Software Architects” spend more than Software Architects” spend more than

50% their work time in “talking” to 50% their work time in “talking” to customers (stakeholders)customers (stakeholders)

Lower segment – Lower segment – “ “Software Labors” spend most their time, if Software Labors” spend most their time, if

not 100%, doing repetitive work under not 100%, doing repetitive work under ever-increasing ever-increasing machine supervisionmachine supervision. In the . In the name of error prevention, pretty soon name of error prevention, pretty soon software labors won’t be allowed to software labors won’t be allowed to “develop”“develop” things. They will be told to things. They will be told to “manufacture”“manufacture” things to the specifications. things to the specifications.

© 2005 N. Chen 9

Advantages in the upper segmentAdvantages in the upper segment

Since you are so close to the Since you are so close to the customers (i.e., money), you are customers (i.e., money), you are poised to:poised to:

get more pay/profit: The closer you get more pay/profit: The closer you are to the money, the better pay you are to the money, the better pay you can demand.can demand.

accumulate asset (your business accumulate asset (your business contacts and business domain contacts and business domain knowledge are the ONLY* assets you knowledge are the ONLY* assets you can accumulate over time.) can accumulate over time.) *It is almost a general *It is almost a general

consensus that you cannot accumulate your IT knowledge since it becomes obsolete so consensus that you cannot accumulate your IT knowledge since it becomes obsolete so fast. fast.

© 2005 N. Chen 10

What should I do to become a What should I do to become a software architect?software architect?

If you are in a one-segment work If you are in a one-segment work environment, in my opinion, you environment, in my opinion, you should always volunteer for the should always volunteer for the “easier” job.“easier” job.

““easier job” – easier job” – talking, organizing, documenting, talking, organizing, documenting,

voicing your view, idea at the voicing your view, idea at the meeting…meeting…

““hard job” – bury yourself in your hard job” – bury yourself in your cubicle working really hard in cubicle working really hard in coding/debugging and expect coding/debugging and expect market’s appreciation. market’s appreciation.

© 2005 N. Chen 11

Seriously, what should I do?Seriously, what should I do?

In addition to your general IT In addition to your general IT skills, you need to acquire skills, you need to acquire Software Engineering (SE) Software Engineering (SE) knowledge and training.knowledge and training.

Improve your communication Improve your communication and people skills (it CAN be and people skills (it CAN be done).done).

© 2005 N. Chen 12

How do I acquire SE knowledge?How do I acquire SE knowledge?

Take courses or get a degree in SETake courses or get a degree in SE (Oh no! I need to get yet another (Oh no! I need to get yet another

degree!)degree!) Learn yourself Learn yourself (As a professor I joke with my fellow (As a professor I joke with my fellow

faculty by saying “SE is a subject faculty by saying “SE is a subject that is good to teach but difficult to that is good to teach but difficult to teach good.”)teach good.”)

What I really want to point out is that What I really want to point out is that learning the SE knowledge is not learning the SE knowledge is not hard and you can do it yourself. hard and you can do it yourself. (Applying SE knowledge is a real (Applying SE knowledge is a real challenge though!) challenge though!)

© 2005 N. Chen 13

Major sources of SE knowledgeMajor sources of SE knowledge

© 2005 N. Chen 14

SEI training classesSEI training classes

© 2005 N. Chen 15

Software Architecture – an SEI Software Architecture – an SEI approachapproach

© 2005 N. Chen 16

If you want to get a MS degree in SE If you want to get a MS degree in SE (http://mse.ecs.fullerton.edu)(http://mse.ecs.fullerton.edu)

A 22-month totally online programA 22-month totally online program

© 2005 N. Chen 17

It’s time to learn some Software Architecture It’s time to learn some Software Architecture knowledge so that I can start claiming I am a software knowledge so that I can start claiming I am a software architect.architect.

In the next 15 minutes we are In the next 15 minutes we are going to learn the following going to learn the following major concepts regarding major concepts regarding Software Architecture:Software Architecture:

What is software architecture?What is software architecture? Usages of the software Usages of the software

architecturearchitecture Quality attributesQuality attributes PatternsPatterns Attribute Driven Design methodAttribute Driven Design method

© 2005 N. Chen 18

What is Software Architecture?What is Software Architecture?

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)

© 2005 N. Chen 19

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

© 2005 N. Chen 20

Why is Software Architecture Important?Why is Software Architecture Important? (source: Software Architecture in Practice second edition)(source: Software Architecture in Practice second edition)

1. It provides a vehicle for 1. It provides a vehicle for communication among communication among stakeholders. stakeholders.

2. It is the manifestation 2. It is the manifestation (indication of existence) of the (indication of existence) of the earliest designs about a system.earliest designs about a system.

3. It is transferable, reusable 3. It is transferable, reusable abstraction of a system.abstraction of a system.

© 2005 N. Chen 21

Vehicle for CommunicationVehicle for Communication

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

© 2005 N. Chen 22

Early Design DecisionsEarly Design Decisions

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

© 2005 N. Chen 23

Transferable, Reusable Transferable, Reusable AbstractionAbstraction

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

© 2005 N. Chen 24

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.”

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

© 2005 N. Chen 25

Quality AttributeQuality Attribute

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)

© 2005 N. Chen 26

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.

© 2005 N. Chen 27

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

© 2005 N. Chen 28

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.”

© 2005 N. Chen 29

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. architecture goes the following way. First break (decompose) the system First break (decompose) the system to small workable parts. Get quality to small workable parts. Get quality attributes from your stakeholders. attributes from your stakeholders. Find some suitable patterns/tactics Find some suitable patterns/tactics from your pattern catalog (just from your pattern catalog (just consider this is a pattern yellow consider this is a pattern yellow book). Repeat the process if book). Repeat the process if necessary. necessary.

© 2005 N. Chen 30

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.” By the way, it is “Software Engineer.” By the way, it is not that unusually now to find a not that unusually now to find a Software Architecture Department in Software Architecture Department in a mid-size organization. a mid-size organization.

© 2005 N. Chen 31

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 one of the SEI workshops. Half one of the SEI workshops. Half of them said they belonged to of them said they belonged to the Software Architecture the Software Architecture Department in their 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.

© 2005 N. Chen 32

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-related skill alone is not technology-related skill alone is not enough. You had better be good at the enough. You had better be good at the people skill too. people skill too.

© 2005 N. Chen 33

More infoMore info

Software Architecture Training Software Architecture Training at SEI – my recollection and at SEI – my recollection and comments (an 80-minute online comments (an 80-minute online presentation available at and at presentation available at and at http://nchen.ecs.fullerton.eduhttp://nchen.ecs.fullerton.edu http://mse.ecs.fullerton.eduhttp://mse.ecs.fullerton.edu))