Becoming A Software Architect
Becoming A Software Architect
Becoming A Software Architect
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 Sys
Session 1
Introduction to
Software
Architecture
Software Architect
is
Someone Who Can
Make
Sub-optimal Decision
in
Total Darkness
Copyright Maveo Sys
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
Definition of Software
Architecture
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.
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.
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 Sys
10
11
Example of Software
Architecture
Tech View
12
Example of Software
Architecture Tech View
13
Example of Software
Architecture
Tech View
14
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
xsl
JSP
JSP
Mapping
struts taglibs
maveo
taglibs
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
15
Example of Software
Architecture
Business/Function
Supplier: Company
EligibilityCriteria
Debtor
RealEstate
Equipment
OutStanding: double
RealEstateT ype: int
+1
OweBy
AvailabilityCalculation
+0..n
RealEstateType
AR
PhysicalStaticCollateral
-
TimeBasedRule:
PurchaseCost: double
PurchaseDate: date
CurrentMarketValue: double
appraisedby: company
AppraisedDate: date
DynamicCollateral
Ow ner
Owned By
AdjForInventory: double = 0
OwnerType:
Located At
Is a type of
Address
Appraised by
Inv entory
Colaterral
Company
#
#
#
Ev aluateationFreq
currency:
AdvanceRatio: float
Value: double
IntellectualProperties
ReportFreq: ReportFreqType
GrossMargin: float
ReportFreqType
WIP
StaticCollateral
#
-
Priv atePublicCoShare
Location: address*
NextEvaluationDate: date
FinishedGoods
AdvanceRatio: float
Raw Material
-
AdvanceRatio: float
-
AdvanceRatio: float
CashDeposite
StandByLOC
-
DateExpire: date
BankGuaranties
-
DateExpire: date
Bank: char
DateDeposited: date
DateExpire: date
Amount: double
Currency: int
16
Components of Software
Architecture
Business model
Platform
Layer/Network Model
Domain Framework
Technical Framework
Deployment Model
17
Components of Software
Architecture
Logical
View
Develop
ment
View
Process
View
18
Principles of Good
Architecture
Scalable
Flexible
Extensible
Reusable
Open
Common semantics
Secure
19
20
Software Architecture
Business High
Level Req High Level Architecture
Processes
Decision
21
Whats Next
Pattern
Product line Architecture
Documenting Software
Architecture
Evaluate Software Architecture
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 Sys
23
Q&A
Q&A
&
Break
Copyright Maveo Sys
24
Session 2
What it takes to
become a Software
Architect
25
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.
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
Copyright
Maveo
Sys provides deep
28
for a specific project.
This
position
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.
Copyright Maveo Sys
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.
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/e-commerce technologies and their impact on Berbee's
customers.
Copyright Maveo Sys
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
Copyright
Maveoand
Sysindependently 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
33
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 Sys
35
Conclusion 2
Technical Ability
alone
is never enough
Copyright Maveo Sys
36
Q&A
Q&A
37
38