-
Becoming a Good Software ArchitectBy Terry Cheng
()[email protected] Technology
Officerhttp://www.maveosystems.comSession 1: Introduction to
Software ArchitectureSession 2: What it takes to become Software
Architect
Copyright Maveo Systems Shanghai
-
Session 1Introduction to Software Architecture
Copyright Maveo Systems Shanghai
-
Software Architect is Someone Who Can Make Sub-optimal Decision
in Total Darkness
Copyright Maveo Systems Shanghai
-
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
-
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
-
Definition of Software ArchitectureFrancis 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
-
Definition of Software ArchitectureSoftware Architecture for
Product FamiliesSoftware 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
-
Definition of Software ArchitectureUML 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
-
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
-
Over View of System ArchitectureEnterprise ArchitectureBusiness
ArchitectureApplication ArchitectureTechnical ArchitectureProduct
Architecture
Copyright Maveo Systems Shanghai
-
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
-
Example of Software ArchitectureTech View
Copyright Maveo Systems Shanghai
-
Example of Software Architecture Tech View
Copyright Maveo Systems Shanghai
-
Example of Software ArchitectureTech View
Copyright Maveo Systems Shanghai
-
Example of Software Architecture Tech
Copyright Maveo Systems Shanghai
JSP
HTML / XSL / css / js / images etc.
EJB
Database
Servlet Controller
getter/setterParameter Validation
Servlet Actions
JSP Mapping
ContentDisplay
xml (from Asynchronous Information Request)
Browser
AsynchronousInformation Request
URL Request
html
xml (from Servlet Request)
utility classescom.maveo.util package
Client Side
Server Side
xml
AgntApplet
ActionForm
Action
ActionMapping
struts framework
ActionServlet (struts-config.xml)
XSLTProcessor(Microsoft DOM)
struts taglibsmaveo taglibs
Content Caching(JavaScriptObject Pool)
MAVEO UI FrameworkDiagram By: Patrick LaiLast Updated: 2 July
2002Version: 2.0
Servlet Request(Form Submission)
xsl
xsl
-
Example of Software ArchitectureBusiness/Function
Copyright Maveo Systems Shanghai
-
Components of Software Architecture Business model Platform
Layer/Network Model Domain Framework Technical Framework Deployment
Model
Copyright Maveo Systems Shanghai
-
Components of Software Architecture
Copyright Maveo Systems Shanghai
-
Principles of Good Architecture Scalable Flexible Extensible
Reusable Open Common semantics Secure
Copyright Maveo Systems Shanghai
-
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
-
Software Architecture Processeshttp://www.bredemeyer.com/
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
Copyright Maveo Systems Shanghai
-
Whats Next Pattern Product line Architecture Documenting
Software Architecture Evaluate Software Architecture
Copyright Maveo Systems Shanghai
-
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
-
Q&AQ&A&Break
Copyright Maveo Systems Shanghai
-
Session 2What it takes to become a Software Architect
Copyright Maveo Systems Shanghai
-
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
-
What is Software ArchitectThe 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
-
Job DescriptionThis 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
-
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
-
Job DescriptionSenior 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
-
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. Plan, schedule, and conduct I-net
(Inter/intra/extranet) system tests; monitor test results; and take
required corrective action.
Copyright Maveo Systems Shanghai
-
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
-
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
-
None Technical Skills Facilitation
Communication/Presentation/Sales Skill Mentoring Domain Knowledge
of area you working on Leadership Business acumen
Copyright Maveo Systems Shanghai
-
Conclusion 1How 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
-
Conclusion 2Technical Ability alone is never enough
Copyright Maveo Systems Shanghai
-
Q&AQ&A
Copyright Maveo Systems Shanghai
-
Copyright Maveo Systems Shanghai
Sound like a joke, but there is truth in itSo, how do we
overcomeBy understanding more, try to put a process, framework in
creating of software architectureSet expectation, experience of OO,
three steps forward two steps backward, thats perfectly fine.
CopyrightCopyrightWhy not say get understanding of what is software
architectureThere are too many definitions of Software
ArchitectureCopyrightBusiness driver Time to market, flexibility
cost of software Maint. Anywhere any timeTechnology Security issue,
connection issue, distribution computing possible, Batch centric,
c/s B/s. web servicesMethodology -- CopyrightBusiness Architecture
(BA) is the result of defining the business strategies, processes,
and functional requirements. The business already performs Business
Architecture when they redefine processes to support the key
strategic initiatives of the enterprise. An Enterprise Architecture
approach to Business Architecture provides the tools the business
needs to ensure the quality and consistency of business design and
reengineering efforts. One of the key benefits of Business
Architecture from an IT perspective is that it allows the business
to produce deliverables from these efforts that provide the
information, context, and requirements that IT needs to support
those initiatives. Technical Architecture (TA) provides the
foundation that supports the applications, data, and business
processes identified in the other three architectural layers. The
Technical Architecture identifies and plans the computing services
that form the technical infrastructure for the enterprise. These
computing services provide the mechanism for achieving scalability,
reliability, availability, flexibility, security, integrity, and
performance. The computing services are components which
applications/infrastructure developers can utilize in the
development, customization, and/or integration of applications in
support of the business. Product Architecture (PA) is a subset of
Technical Architecture. Product Architecture identifies standards
and configurations for the enabling technologies and products
within the Technical Architecture. Applications and infrastructure
developers utilize these technologies and products for delivering
services to the applications and/or business processes.
CopyrightRequirements, define scope,Analyze requirement to
create modelSoftware engineering basicsKnow the platform, continue
to keep up with the platform and future platformDesign need to be
able to implemented, maint.Need to know network, for performance,
security, everything is connected in toadys worldPerformance,
representation of business objects.Copyright