Becoming a Software Architect

advertisement
Becoming a Good Software Architect
Session 1: Introduction to Software Architecture
Session 2: What it takes to become Software Architect
By
Terry Cheng (郑书玄)
terrycheng@maveosystems.com
Chief Technology Officer
万域系统软件(上海)有限公司
http://www.maveosystems.com
Copyright Maveo Systems Shanghai
1
Session 1
Introduction to
Software Architecture
Copyright Maveo Systems Shanghai
2
Software Architect
is
Someone Who Can
Make
Sub-optimal Decision
in
Total Darkness
Copyright Maveo Systems Shanghai
3
Objectives of this talk
• Give a sense of what is Software architecture
• Example of Software Architecture
• Principle of good Software Architecture
• How to prepare to become a good Software Architect
• Do not have to make Sub-optimal Decision anymore
Copyright Maveo Systems Shanghai
4
Intro. to Software Architecture
• Definition of Software Architecture
• History/evolution of Software Architecture
• Overview of System Architecture
• How Software Architecture fit into System Architecture
• A Typical Software architecture
• Components of a typical Software architecture
• What to consider -- internal/external constrains
Copyright Maveo Systems Shanghai
5
Definition of Software Architecture
Francis Anderson (Chief Object Architect,
ClearSystems): A set of solution frameworks to which all
aspects of the problem domain are mapped.
Brahim Djoudi (Software developer, GIAT Industries,
Toulouse, France): The software architecture is the set of
all the concepts (software components, frameworks, DB,
paradigm, programming language, ...) used to "view" an
entire software before it's designed.
SEI:A software architecture is an abstract view of a
software system distinct from the details of
implementation, algorithms, and data representation.
Architecture is, increasingly, a crucial part of a software
organization's business strategy
Copyright Maveo Systems Shanghai
6
Definition of Software Architecture
Software Architecture for Product Families
Software architecture is a set of concepts and design
decisions about the structure and texture of software
that must be made prior to concurrent engineering to
enable effective satisfaction of architecturally
significant explicit functional and quality
requirements and implicit requirements of the
product family, the problem, and the solution
domains.
Copyright Maveo Systems Shanghai
7
Definition of Software Architecture
UML 1.3:
Architecture is the organizational structure of a system. An
architecture can be recursively decomposed into parts
that interact through interfaces, relationships that connect
parts, and constraints for assembling parts. Parts that
interact through interfaces include classes, components
and subsystems.
Copyright Maveo Systems Shanghai
8
History/Evolution
• Driven by business need
• Cost cutting
• Increase Revenue
• Strategic Advantage
• Driven by new technology
• Main Frame/Batch
• PC/interactive Real time
• LAN/WAN
• Internet
• Driven by Software Engineering principle, methodology
• Functional decomposition, sub routines
• Information Engineering
• Object Oriented Methodology
Copyright Maveo Systems Shanghai
9
Over View of System Architecture
Enterprise Architecture
Business Architecture
Application Architecture
Technical Architecture
Product Architecture
Copyright Maveo Systems Shanghai
10
How Software Architecture fit in
Enterprise Architecture
• Software Architecture transforms Business Architecture
into an set of designs and guidelines to realize business
process in an information systems
• Software Architecture relays on Technical Architecture
to provide an efficient/scalable/secure environment to
Copyright Maveo Systems Shanghai
11
Example of Software Architecture
Tech View
Copyright Maveo Systems Shanghai
12
Example of Software Architecture
Tech View
Copyright Maveo Systems Shanghai
13
Example of Software Architecture
Tech View
Copyright Maveo Systems Shanghai
14
Example of Software Architecture
Tech
Client Side
Server Side
xml (from Asynchronous Information Request)
xml (from Servlet Request)
ActionServlet
(struts-config.xml)
Browser
ActionForm
Asynchronous
Information Request
Agnt
Applet
struts
framework
Servlet Controller
Servlet Request
(Form Submission)
getter/
setter
Parameter
Validation
xml
Action
Servlet
Actions
EJB
ActionMapping
URL Request
html
Content
Display
XSLT
Processor
(Microsoft DOM)
xsl
JSP
JSP
Mapping
struts taglibs
maveo
taglibs
xsl
HTML / XSL /
css / js /
images etc.
Content
Caching
(JavaScript
Object Pool)
utility classes
com.maveo.util
package
Database
MAVEO UI Framework
Diagram By: Patrick Lai
Last Updated: 2 July 2002
Version: 2.0
Copyright Maveo Systems Shanghai
15
3.
50
EA
StandByLOC
DateExpire: date
50
3.
3.
50
-U
nr
EA
50
3.
3.
50
-U
nr
EA
Company
3.
50
-U
nr
EA
EA
50
3.
EA
3.
50
EA
PhysicalStaticCollateral
PurchaseCost: double
PurchaseDate: date
CurrentMarketValue: double
appraisedby: company
AppraisedDate: date
3.
50
EA
3.
50
Appraised by
DateExpire: date
-
50
3.
IntellectualProperties
-U
nr
3.
50
EA
3.
50
-U
nr
EA
Is a type of
CashDeposite
Bank: char
DateDeposited: date
DateExpire: date
Amount: double
Currency: int
Priv atePublicCoShare
50
3.
EA
3.
50
EA
3.
50
EA
3.
50
EA
3.
50
EA
Copyright Maveo Systems Shanghai
50
3.
3.
50
-U
nr
EA
3.
50
-U
nr
EA
EA
50
3.
EA
3.
50
EA
3.
50
EA
3.
50
AR
-
OweBy
16
-U
nr
nr
e
-U
nr
50
3.
-U
nr
50
3.
AdvanceRatio: float
3.
50
3.
50
EA
3.
50
-U
nr
3.
50
-U
nr
50
3.
3.
50
-U
nr
EA
3.
50
-U
nr
EA
EA
50
3.
EA
3.
50
EA
3.
50
EA
3.
50
EA
3.
50
-U
-U
-U
-U
-U
-U
nr
nr
nr
nr
nr
nr
eg
eg
eg
eg
eg
eg
eg
eg
eg
eg
eg
eg
eg
eg
gi
is
is
is
is
is
is
is
is
is
is
is
is
is
is
st
t
t
t
t
t
t
t
t
t
t
t
t
t
te
er
er
er
er
er
er
er
er
er
er
er
er
er
er
re
e
e
e
e
e
e
e
e
e
e
e
e
e
e
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
-U
nr
3.
50
AdvanceRatio: float
3.
50
Raw Material
WIP
50
-
-
EA
ReportFreq: ReportFreqType
GrossMargin: float
EA
Inv entory
EA
AdjForInventory: double = 0
EA
+0..n
EA
-
TimeBasedRule:
EA
-
3.
nr
e
-U
nr
EA
EligibilityCriteria
-U
-U
-U
-U
-U
-U
nr
nr
nr
nr
nr
nr
eg
eg
eg
eg
eg
eg
eg
eg
eg
eg
eg
eg
eg
eg
gi
is
is
is
is
is
is
is
is
is
is
is
is
is
is
st
te
te
te
te
te
te
te
te
te
te
te
te
te
te
er
re
re
re
re
re
re
re
re
re
re
re
re
re
re
e
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
TR
TR
TR
TR
TR
TR
TR
TR
TR
TR
TR
TR
TR
TR
TR
TR
IA
IA
IA
IA
IA
IA
IA
IA
IA
IA
IA
IA
IA
IA
IA
IA
L
L
L
L
L
L
L
L
L
L
L
L
L
L
L
L
Ve
Ve
Ve
Ve
Ve
Ve
Ve
Ve
Ve
Ve
Ve
Ve
Ve
Ve
Ve
Ve
Ve
rs
rs
rs
rs
rs
rs
rs
rs
rs
rs
rs
rs
rs
rs
rs
rs
io
io
io
io
io
io
io
io
io
io
io
io
io
io
io
io
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
-U
nr
EA
FinishedGoods
-U
nr
50
AdvanceRatio: float
3.
ReportFreqType
-U
nr
EA
AvailabilityCalculation
-U
nr
50
3.
+1
-U
nr
EA
DynamicCollateral
50
3.
50
-
EA
currency:
AdvanceRatio: float
Value: double
3.
50
Colaterral
EA
#
#
#
Debtor
3.
nr
e
-U
nr
EA
RealEstateType
-U
-U
-U
-U
-U
-U
nr
nr
nr
nr
nr
nr
eg
eg
eg
eg
eg
eg
eg
eg
eg
eg
eg
eg
eg
eg
gi
is
is
is
is
is
is
is
is
is
is
is
is
is
is
st
te
te
te
te
te
te
te
te
te
te
te
te
te
te
er
r
r
r
r
r
r
r
r
r
r
r
r
r
re
ed
ed
ed
ed
ed
ed
ed
ed
ed
ed
ed
ed
ed
ed
d
d
TR
TR
TR
TR
TR
TR
TR
TR
TR
TR
TR
TR
TR
TR
TR
TR
IA
IA
IA
IA
IA
IA
IA
IA
IA
IA
IA
IA
IA
IA
IA
IA
L
L
L
L
L
L
L
L
L
L
L
L
L
L
L
L
Ve
Ve
Ve
Ve
Ve
Ve
Ve
Ve
Ve
Ve
Ve
Ve
Ve
Ve
Ve
Ve
Ve
rs
rs
rs
rs
rs
rs
rs
rs
rs
rs
rs
rs
rs
rs
rs
rs
io
io
io
io
io
io
io
io
io
io
io
io
io
io
io
io
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
-U
nr
EA
Ev aluateationFreq
-U
nr
3.
50
Address
-U
nr
50
EA
OwnerType:
-U
nr
50
3.
Ow ner
-U
nr
BankGuaranties
EA
Location: address*
NextEvaluationDate: date
3.
StaticCollateral
EA
Located At
3.
50
OutStanding: double
RealEstateType: int
50
-
-
EA
#
-
Owned By
3.
50
-U
nr
EA
-
EA
-U
nr
EA
Supplier: Company
RealEstate
3.
nr
e
-U
nr
50
3.
Equipment
-U
-U
-U
-U
-U
-U
nr
nr
nr
nr
nr
nr
eg
eg
eg
eg
eg
eg
eg
eg
eg
eg
eg
eg
eg
eg
gi
is
is
is
is
is
is
is
is
is
is
is
is
is
is
st
te
te
te
te
te
te
te
te
te
te
te
te
te
te
er
r
r
r
r
r
r
r
r
r
r
r
r
r
re
ed
ed
ed
ed
ed
ed
ed
ed
ed
ed
ed
ed
ed
ed
d
d
TR
TR
TR
TR
TR
TR
TR
TR
TR
TR
TR
TR
TR
TR
TR
TR
IA
IA
IA
IA
IA
IA
IA
IA
IA
IA
IA
IA
IA
IA
IA
IA
L
L
L
L
L
L
L
L
L
L
L
L
L
L
L
L
Ve
Ve
Ve
Ve
Ve
Ve
Ve
Ve
Ve
Ve
Ve
Ve
Ve
Ve
Ve
Ve
Ve
rs
rs
rs
rs
rs
rs
rs
rs
rs
rs
rs
rs
rs
rs
rs
rs
io
io
io
io
io
io
io
io
io
io
io
io
io
io
io
io
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n
-U
nr
EA
-
-U
nr
3.
50
-
50
EA
-
3.
Example of Software Architecture
Business/Function
Components of Software
Architecture
• Business model
• Platform
• Layer/Network Model
• Domain Framework
• Technical Framework
• Deployment Model
Copyright Maveo Systems Shanghai
17
Components of Software
Architecture
Logical
View
Allocates classes and responsibilities to packages and
subsystems.
Develop
ment
View
Allocates packages and subsystems to layers and
components. Also defines the development structure.
Process
View
Allocates components to processes.
Physical Allocates processes to processors, nodes, networks.
View
Use
Case
View
(The Plus One) Captures requirements used to develop and
validate each of the other views.
Copyright Maveo Systems Shanghai
18
Principles of Good Architecture
• Scalable
• Flexible
• Extensible
• Reusable
• Open
• Common semantics
• Secure
Copyright Maveo Systems Shanghai
19
What others to consider
• Business objectives
• Skill of development team and local market of team
• Cost to build and Maintain
• Materiality of Technology
• Current System constrain
• Migration, migration, migration
Copyright Maveo Systems Shanghai
20
Software Architecture Processes
• Business High Level Req  High Level Architecture Decision
• Market/Technical Consideration  Network Model/Platform Decision
• Business Modeling  Class/Data modeling  Data architecture
decision
• Use case, process/flow modeling  UI decision
• Domain Framework from above two
• Implementation analysis  Technical implementation decision
Technical Framework
• Implementation Language Tool decision
• Platform specific implementation architecture
• Sample/framework development
http://www.bredemeyer.com/
Copyright Maveo Systems Shanghai
21
What’s Next
• Pattern
• Product line Architecture
• Documenting Software Architecture
• Evaluate Software Architecture
Copyright Maveo Systems Shanghai
22
Summary
• Software Architecture need to consider from both
technical point of view as well as business point of view
• There are different ways to communicate architecture
design
• There is no THE best architecture for any one software
system
• Always need consider
• external constrain, such cost, infrastructure,…
• Maturity of IT organization, not only development,
but also operations
• Architecture is a live entity, therefore, ability to grow,
migrate is very important
Copyright Maveo Systems Shanghai
23
Q&A
Q&A
&
Break
Copyright Maveo Systems Shanghai
24
Session 2
What it takes to become
a Software Architect
Copyright Maveo Systems Shanghai
25
What it takes to become Software Architect
• What an Software Architect do
• How to become a Software Architect
• Technical skill
• Non-Technical Skill
• Conclusion
• Q&A
Copyright Maveo Systems Shanghai
26
What is Software Architect
The Software Architect operates nearly as a peer to
the project manager. While the project manager
deals with budgets, plans, resources and tracking
progress, the architect sets the technical vision for
the project, mentors the technical staff, and
monitors design and implementation artifacts for
quality and compliance to standards.
Copyright Maveo Systems Shanghai
27
Job Description
This position will be part of a team responsible for
improving the quality of internally developed Mutual Fund
Customer Service applications. Specific assignments may
include large projects as well as small enhancements
with both prioritized by business needs. Development
takes place in a highly collaborative environment that
places value on effective communication skills. Under
minimal supervision, the position plans, coordinates and
analyses new and existing application designs/techniques
to meet current and future needs. The position works with
users and developers to analyze, design, and implement
application systems and/or enhancements to existing
systems and may include leading a team for a specific
project. This position provides deep technology expertise
in a variety of areas.
Copyright Maveo Systems Shanghai
28
Job Requirements
 Advanced knowledge of programming language(s), software
development tools and environment(s) and systems analysis and
functional design is required.
 In addition, thorough knowledge of database concepts, database
design, data modeling and system architectures is also required.
• Expert knowledge of application design principles, practices, system
development methodologies, (preferably OO), and software life cycles is
required.
• The ideal candidate possesses expert knowledge in one or more highly
specialized areas of application development.
• Experience in application development with the design and
programming of multi-tier applications utilizing J2EE technology coupled
with strong server programming abilities including Servlets, EJBs, and
JSPs is required.
• Experience with programming in Smalltalk is highly desired.
• Experience with Envy,Rational Rose, .NET, and/or HTML is helpful.
Copyright Maveo Systems Shanghai
29
Job Description
Senior position with a heavy emphasis on .NET
technologies. This position has sales support as well as
hands-on responsibilities. Collaborates with customers,
designers, and database programmers to construct an
optimal web solution using Microsoft tools.
Understands the aims of development customers and
works with business analysts to ensure those needs
are met with the software.
Copyright Maveo Systems Shanghai
30
Responsibilities
• Participate in complete software development lifecycle, including
analysis, design, code and unit test, for applications based on Microsoft
.NET technologies.
• Act as "subject matter expert" in assigned area of responsibility.
• Work with customers to formulate and define application scope and
objectives.
• Build relationships with customers to determine business requirements
• Build relationships with business partners.
• Provide technical consultation in new systems development, new
package evaluations, and enhancement of existing systems; participate
in structured walkthrough and technical reviews.
• Prepare functional specifications from which programs will be written;
design, code, test, debug, and document programs.
• Keep technical, communications, and business skills current with an
emphasis on understanding emerging Microsoft-based web/ecommerce technologies and their impact on Berbee's customers.
• Plan, schedule, and conduct I-net (Inter/intra/extranet) system tests;
monitor test results; and take required corrective action.
Copyright Maveo Systems Shanghai
31
Job Requirements
• Broad awareness of basic Internet, intranet, and WWW
technologies, including: Inter/intra/extranet tools; Web installation,
configuration and performance management; Web navigation,
content, linking, and browser tuning; Web security and encryption
• Experience with .NET servers and tools required
• Web site design and development experience in a Microsoft
environment
• Working knowledge and skills in ASP, JavaScript, VBScript, and
XML as well as upcoming .NET technologies such as ASP.NET
and Visual Studio.NET
• Experience with the Microsoft family of .NET servers including
Content Management Server, BizTalk Server, Application Center
Server, Sharepoint Portal Server, etc.
• Working knowledge of SQL Server 2000 with database/Web
connectivity familiarity, plus database management and file
access methods
• Strong communications and interpersonal skills
• Strong problem solving/analysis skills
• Ability to work well both in teams and independently
Copyright Maveo Systems Shanghai
32
Technical Skills
• Requirement gathering/Management
• Modeling and analysis methodology
• Full Software Development Life Cycle
• Modern architectural technologies, such as J2EE and
.NET
• In depth knowledge of programming languages
• Network, Security, hardware platforms
• Database
Copyright Maveo Systems Shanghai
33
None Technical Skills
• Facilitation
• Communication/Presentation/Sales Skill
• Mentoring
• Domain Knowledge of area you working on
• Leadership
• Business acumen
Copyright Maveo Systems Shanghai
34
Conclusion 1
How do I start
• Become an excellent developer who knows why
not just how
• Understand the relationship of underline
technical architecture and software systems
• Understand current platform specific
architecture, J2EE and .NET
• Know the domain you are working on, become
an expert
• Read, read, read, think think think
Copyright Maveo Systems Shanghai
35
Conclusion 2
Technical Ability
alone
is never enough
Copyright Maveo Systems Shanghai
36
Q&A
Q&A
Copyright Maveo Systems Shanghai
37
Copyright Maveo Systems Shanghai
38
Download