(c) Michael Stal, Keynote for OOP 2003 6/3/2015 slide 1 Power of Powerpoint:
-
date post
19-Dec-2015 -
Category
Documents
-
view
213 -
download
0
Transcript of (c) Michael Stal, Keynote for OOP 2003 6/3/2015 slide 1 Power of Powerpoint:
04/1
8/23
sl
ide
1
(c) Michael Stal, Keynote for OOP 2003
Power of Powerpoint:
Living in an Agile World- Überleben auf der ÜberholspurKeynote, OOP 2003
Michael Stal
04/1
8/23
sl
ide
3
(c) Michael Stal, Keynote for OOP 2003
Agenda
Goal of this talk: To illustrate agility from different perspectives:
Definition of Agility Motivation behind Agility Agile Architecture Agile Technology Agile Organization Summary
04/1
8/23
sl
ide
4
(c) Michael Stal, Keynote for OOP 2003
What the Hell is Agility?
According to my search engine agility is about Dog Training or Older People
According to many software engineers it is about eXtreme Programming and competing software
engineering methodologies So, what is the right answer, anyway?
04/1
8/23
sl
ide
5
(c) Michael Stal, Keynote for OOP 2003
One View of Agility
"Agility is a core competency - it is the capability to respond in a satisfactory manner to change, uncertainty and unpredictability in the wider business environment.“
"Agility is a next generation manufacturing concept. It belongs in the 21st century and does not fully exist in any company today. The challenge for the future is to create agile companies using technologies, organisational forms and people to develop a new form of manufacturing that transcends existing mind sets that are becoming increasingly dominated by the dogma of lean production."
"If agility does not scare you, then you have not fully understood what it is about.“
All quotations taken from Paul T. Kidd, next generation manufacturing expert
04/1
8/23
sl
ide
6
(c) Michael Stal, Keynote for OOP 2003
Agility and Software Development
If we follow this definition, agility is an important issue in our business: Software developers are definitely facing
change, uncertainty, and unpredictability! We all work in companies that are driven by
competition, increasing market requirements and higher speed of technology and product innovation.
Thus, we are driven by agility. As an example, let us take a look at software
development in the industry.
04/1
8/23
sl
ide
7
(c) Michael Stal, Keynote for OOP 2003
Industry and Business -A Look into the Crystal Ball
Smart Traffic: Smart cooperation of vehicles, goods, infrastructures to enable fast and seamless transportation.
E-Government: Administration on the Web. Ubiquitous Services: Smart services that
can be consumed from anywhere using any device.
Intelligent Home.
04/1
8/23
sl
ide
8
(c) Michael Stal, Keynote for OOP 2003
Forces
Web- and Net-based Integration of Applications, Services, and Systems
Quality of Service issues such as availability, resource and time constraints, ...
Deployment of Automated and Autonomous Systems
Smart, ubiquitious Services that share and distribute context
Heterogeneous Data Software as Service
04/1
8/23
sl
ide
9
(c) Michael Stal, Keynote for OOP 2003
... And Consequences
Developers should not make too many assumptions about usage contexts and environments a priori.
Developers don‘t live on an island and must integrate legacy code and other peer systems.
Programmers need to develop and deploy their software on different heterogeneous machines and devices.
Running applications are reconfigured instead of recompiled. Software Engineering must cope with change requests in
Internet time.
04/1
8/23
sl
ide
10
(c) Michael Stal, Keynote for OOP 2003
Multiple Aspects increase complexity of Software Engineering
Today‘s Forces: Global markets lead to strong competition Time-to-market and costs must be reduced Quality is a conditio-sine-qua-non Cyle times are extremely fast Software as Service and Software as (Web-based)
Integration Platform To meet these requirements multiple aspects have to be
considered that are strongly interdependent: Efficient organizations to steer software development
effectively Appropriate, stable but extensible software architecture
to meet today‘s and tomorrow‘s requirements Right technologies to implement the software
architecture
04/1
8/23
sl
ide
11
(c) Michael Stal, Keynote for OOP 2003
Agile Architecture
"I conclude that there are two ways of constructing a software design: One way is to make it so simple there are obviously no deficiencies and the other way is to make it so complicated that there are no obvious deficiencies."
--- Tony Hoare, Turing Award Lecture, 1980
04/1
8/23
sl
ide
12
(c) Michael Stal, Keynote for OOP 2003
Architecture Does Matter
„Software entropy“ should be maximized, i.e., loosely coupling between peers, decentralized information access, reflective approaches („Just-in-Time Integration“).
Software should be partitioned into composable services that can be spontaneously connected and orchestrated by business/technical processes (component-based software).
Software means to connect people and devices.
Legacy code must be integrated in order to protect investments.
It is important to leverage architectural concepts.
04/1
8/23
sl
ide
13
(c) Michael Stal, Keynote for OOP 2003
Flavors of Architecture
Today‘s and even more tomorrow‘s Software Architecture is Multi-Tier, to logically and physically allow to distribute functionality,
and to separate concerns; Component-based, to enable integration, easy usage of vertical
services (persistence, transactions, security), scalability, and re-use; service-oriented, to support arbitrary devices (pervasive computing), to
enable the deployment of value-addes services; aspect-oriented, to ease separation of cross-cutting concerns from
business logic and to increase manageability and flexibility; (at least partially) decentral, to assure fault tolerance and allow to
integrate autonomous devices and services; open (and web-based), because heterogeneity is predominant
everywhere so that integration aspects will become one of the most important issues.
04/1
8/23
sl
ide
14
(c) Michael Stal, Keynote for OOP 2003
Architect‘s Toolset to reach these Goals
Processes, such as the Unified Software Development Process or MDA.
Notations, such as UML. Technologies, such as frameworks and
distributed object computing. Enabling techniques like separation of
concerns; and programming paradigms, such as object technology.
Each approach addresses a specific aspect in the process of constructing high-quality software architectures.
04/1
8/23
sl
ide
15
(c) Michael Stal, Keynote for OOP 2003
Is this sufficient?
However, all these concepts do not tell how to solve a very specific problem that arises during the construction of a particular software system.
For example, how to keep two cooperating components consistent to each other, or how to organize the event handling in a distributed system?
Solving such problems is still left to developer’s intuition and experience in software construction.
04/1
8/23
sl
ide
16
(c) Michael Stal, Keynote for OOP 2003
Patterns
Experts mostly do not invent solutions. When experts work on a particular
problem it is unusual for them to tackle it by inventing a new solution that is completely distinct from existing ones.
Confronted with a ‘new’ problem they often remember a similar one they once solved successfully and adapt the ‘old’ solution to the new context.
Experts think in Problem/Solution pairs. Reusing ideas keeps development smart
and agile, wasting time does not!
04/1
8/23
sl
ide
17
(c) Michael Stal, Keynote for OOP 2003
Let’s take a lookat a well-knownpattern
04/1
8/23
sl
ide
18
(c) Michael Stal, Keynote for OOP 2003
Observer (1)
Observer (GoF)
ProblemChanging the internal state of a
component may cause inconsistencies to the state of
other components.
How can we restore consistency effectively in a way that:
the information provider must not depend on information consumers;
and the information consumers that depend on the information provider must not be known a
priori.
House1 Door_A; Window_1a Window_1b ...
is presented as
depends ondepends on
04/1
8/23
sl
ide
19
(c) Michael Stal, Keynote for OOP 2003
Observer (2)
Solution-StructureImplement a change propagation
mechanism between the information provider, the subject, and the information consumers, the observers.
The Subject maintains a registry of observers and notifies all registered observers about changes to its state.
An Observer declares an update function to be called by the subject’s change propagation mechanism.
Concrete Observers implement the update function in a system-specific manner.
Subject
attachdetachnotifysetDatagetData
s->getData()
Observer
update
ConcreteObserver
updatedoSomething
state = X;
notify();
stateobserverList
for all observersin observerList do notify();
*
04/1
8/23
sl
ide
20
(c) Michael Stal, Keynote for OOP 2003
Observer (3)
Solution-Dynamics
The Observers register with the subject’s change propagation mechanism.
A Client modifies the subject’s data.
The Subject starts its change propagation mechanism.
The Subject calls the update function of every registered observer.
The Observers retrieve the changed data from the subject and update themselves.
Subject Observer 1 Observer 2
attach(this)
attach(this)
setDatanotify
update
getData
update
getData
04/1
8/23
sl
ide
21
(c) Michael Stal, Keynote for OOP 2003
Observer (4)
Benefits Defined handling of dependencies between
otherwise strongly coupled components Support for dynamic configuration of
a subject with observers Adding new observers does not affect the
subject or the change propagation mechanism
Liabilities Indirection Unnecessary updates Update cascades
04/1
8/23
sl
ide
22
(c) Michael Stal, Keynote for OOP 2003
Properties of Patterns
A Pattern presents a concrete solution schema
for recurring design problems; documents proven design
experience; specifies concepts above the level of
individual classes and objects; describes structure and behavior of
cooperating objects; provides a common vocabulary and
concept understanding; and addresses specific quality properties
of the problem’s solution. Thus patterns are a perfect means
for agile software development.
ObserverProblem
Solution
House1 Door_A; Window_1a Window_1b ...
is presented asdepends ondepends on
Subject
attachdetachnotifysetDatagetData
s->getData()
Observer
update
ConcreteObserver
updatedoSomething
state = X;notify();
stateobserverList
for all observersin observerList do notify();
*Subject Observer 1 Observer 2
attach(this)
attach(this)
setDatanotify
update
getData
update
getData
04/1
8/23
sl
ide
23
(c) Michael Stal, Keynote for OOP 2003
Best Practice Patterns
No patterns is an island. Using whole pattern systems that cover best practices in a
given domain such as Core J2EE Patterns helps to minimize integration and implementation efforts (thus increasing architectural agility):
Delegate
ServiceLocator
Session Facade
TransferObject
DataAccessObject
04/1
8/23
sl
ide
24
(c) Michael Stal, Keynote for OOP 2003
Patterns for Architectural Analysis
It is often forgotten that patterns do not only help to build new software architectures, but
Patterns are also an appropriate means to understand exising software architectures.
Take a look at your favourite platform (Java, .NET) and reverse engineer it by mining its underlying principles.
In practice, software architects need to do both: They leverage patterns to design new functionality and they reverse engineer the patterns behind legacy code
for integration purposes
04/1
8/23
sl
ide
25
(c) Michael Stal, Keynote for OOP 2003
Quality is a First Class Object
We cannot sacrifice quality for agility. For software projects it is surprisingly difficult to achieve quality. Quality is nothing others take care for after you finished your project! There are two important aspects:
Does the architecture meet the functional requirements? Does it also meet its non-functional requirements such as
performance, security, scalability? Quality Assurance starts before the project starts and it never ends.
Programmer's Drinking Song (sung to the tune of ``100 Bottles of Beer'‘): 99 little bugs in the code, 99 bugs in the code, fix one bug, compile it again, 101 little bugs in the code. 101 little bugs in the code....(Repeat until BUGS = 0) -- Anonymous
04/1
8/23
sl
ide
26
(c) Michael Stal, Keynote for OOP 2003
Aspect-Oriented Software Architecture
How can we keep our systems flexible and easily reconfigurable? We can reach this goal by taking separation of concerns to an even higher level
Non-functional properties are typical candidates for the emergence of cross-cutting concerns
Cross-cutting concerns define aspects of a software system that are not localizable and therefore spread across the system such as security aspects
While OO helps to decompose functionality (separation of concerns), it doesn‘t help to factor out cross-cutting concerns
Generative techniques and Aspect-oriented Programming are potential candidates that come to our rescue
04/1
8/23
sl
ide
27
(c) Michael Stal, Keynote for OOP 2003
The Need for Integration
Software Users often use systems that consist of
heterogeneous islands. need fast RoI for IT investments.
Smart integration helps reducing the costs. Integration solutions require:
Architecture with strong separation of concerns (component-based, multiple Tiers).
Appropriate technologies that offer maturity, acceptance, support, and productivity.
04/1
8/23
sl
ide
28
(c) Michael Stal, Keynote for OOP 2003
Levels of Integration
Unfortunately, there are different layers of integration.
We must cope with almost all of them.
Platform Integration
Interoperability of Data & Communication
Service Integration
Persistence Integration
Workflow Integration
Web Integration
Client Integration
04/1
8/23
sl
ide
29
(c) Michael Stal, Keynote for OOP 2003
Integration Pyramid
Until now for each integration layer software engineers tried to follow the best-of-breed approach. However this approach might lead to heterogeneity and even increase complexity .
A uniform and cross-cutting techical solution leads to a much better integration solution because this approach spans all layers.
Today‘s platform such as Java and .NET are already targeting this multi-layer integrating problem. They hide heterogeneity by a homogeneous stack of APIs.
Integration between Java and .NET through Web technologies/XML.
Client
Business and Web Layer
System-Level Protocol Layer
Middle Layer
04/1
8/23
sl
ide
30
(c) Michael Stal, Keynote for OOP 2003
Agile Technology
“The most likely way for the world to be destroyed, most experts agree, is by accident. That’s where we come in. We’re computer professionals. We cause accidents."
--- Nathaniel Borenstein, Programming as if People Mattered
04/1
8/23
sl
ide
31
(c) Michael Stal, Keynote for OOP 2003
Technology does also matter
Necessary to choose the right software technologies: IDEs, CASE-Tools, CM-Tools, Test-Tools, Middleware.
The best architecture and the best process will not help if you choose the wrong technologies. Some technologies are more like shooting youself in the foot.
Take integration as an example. You‘ve got a choice of integration platforms:
Microsoft .NET J2EE Web + XML CORBA EAI
Think „Service-based“ not just „Web-based“!
04/1
8/23
sl
ide
32
(c) Michael Stal, Keynote for OOP 2003
Case Study: Selecting the right Middleware
For integration and communication, middleware solutions are essential
There are different kinds of communication middleware: Object-oriented Middleware (e.g., CORBA, COM, RMI) Message-Oriented Middleware (e.g., JMS, MSMQ) Transaction Monitors (e.g., Tuxedo)
Middleware decisions depend on the concrete requirements of your application domain. If different approaches are appropriate, you may
Choose the best-of-breed approach, or use Hybrid solutions (e.g., EJB, .NET+MSMQ+COM+)
04/1
8/23
sl
ide
33
(c) Michael Stal, Keynote for OOP 2003
The Web reveals Limitations
Lacking interoperability between middleware solutions. Insufficient Web integration. No programmatic access.
HTTP TUNNELFRONTEND BACKEND
Web Server
04/1
8/23
sl
ide
34
(c) Michael Stal, Keynote for OOP 2003
Future Vision: Service-Oriented Approach
User E-Shop
login
displayItems
selectItem
CustomerObjcreate
checkPreferences
Inventory
checkAvailability
updatePage
paycheckCredit
Credit Cart Company
checkCreditdisplayOrderInfo
accept
handleOrder
Web XpressTransport Co
sendOrder
logoff
fini
www.e-shop.com www.credit.com www.transport.comBrowser @ Home
04/1
8/23
sl
ide
35
(c) Michael Stal, Keynote for OOP 2003
The Web is an excellent integration platform since it relies on open standards.
Using the Web we can establish an architecture that supports web-based inter-application communication
paradigms, provides location transparency, allows to add, exchange, or remove services
dynamically, hides system details from the developer.
The Web is the Computer
04/1
8/23
sl
ide
36
(c) Michael Stal, Keynote for OOP 2003
Solution Architecture: The Web as a global middleware
marshal
unmarshal
receive_result
service(proxy)
Client-side Proxy
marshal
unmarshal
dispatch
receive_request
Server-side Proxy
start_up
main_loop
service(impl.)
Service
call_service_p
start_task
Client
calls*
1
calls
*
1
Message exchange*
Message exchange *1
register_server
find_server
establish_communication
Broker1
04/1
8/23
sl
ide
37
(c) Michael Stal, Keynote for OOP 2003
Step 1 – Providing a Transport Protocol
A protocol defines syntax, semantics and order of messages exchanged between peers. SOAP is the right protocol.
<soap:Envelope><soap:Header>
<transaction><soap:mustUnderstandstand=„true“
xmlns=„http://tx.com“><id> 12345678 </id>
</transaction><soap:Header><soap:Body>
<m:getPhoneNumber><theName> Bill Gates </theName>
<m:/getPhoneNumber></soap:Body>
</soap:Envelope>
04/1
8/23
sl
ide
38
(c) Michael Stal, Keynote for OOP 2003
Step 2: Defining a Service Description Language
A description language must be available to define Web service interfaces and how to invoke them.
We can use XML to specify deployment information and structural information.
That is what the Web Service Description Language (WSDL) is all about.
WSDL addresses syntax, not semantics!
04/1
8/23
sl
ide
39
(c) Michael Stal, Keynote for OOP 2003
Step 3: Defining a global Service Broker
Client
Web Service
Descriptionof Web Service
(WSDL)
UDDI
1. search for web service
2. return service URL
4. send request using SOAP over HTTP
5. forward request to service
6. return result7. send result using
SOAP over HTTP
Web Server
3. read service description
UDDI is a global registry
Registration possible at any node
Registrations replicated at daily basis
Common SOAP protocol used
Publisher API
Inquiry API
04/1
8/23
sl
ide
40
(c) Michael Stal, Keynote for OOP 2003
Step 4: All you need are Generators
Introduce tools that generate glue for connecting you with the Web ORB, i.e.,
Client Proxies for connecting the client with services. Server Proxies for seamless service deployment.
WSDL
ClientProxy
ServerProxy
04/1
8/23
sl
ide
41
(c) Michael Stal, Keynote for OOP 2003
Web-based Service Frameworks
Workflow Engine
Web-based and -related Protocols (HTTP, XML, SMTP, ...)
Service Description, Discovery, Integration (UDDI)
Service Description (WSDL)
Service Context (Who, Where, When, Why, ....)
Virtual Machine
Micro/Macro Services
IntegrationLayer
Legacy
Backend Server
MainframeFrontend
Layer(Web Server)
Web Service User/Provider
Core Services (Calendar, Preferences, Transactions, ...)
Core Elements of Web Frameworks
04/1
8/23
sl
ide
42
(c) Michael Stal, Keynote for OOP 2003
The Problem with Web-based Service Frameworks
Andrew Tanenbaum: „The best thing about standards is that there are so many to choose from“
04/1
8/23
sl
ide
43
(c) Michael Stal, Keynote for OOP 2003
Agile Technologies
Although there are many technologies to choose from, there are technologies that support agility and some that do not.
Examples for agile technologies: Java and .NET Web Services Web and XML Standards Peer to Peer Pervasive Computing Ad Hoc Technologies (Plug‘n Play) CORBA Extensible and scriptable IDEs
04/1
8/23
sl
ide
44
(c) Michael Stal, Keynote for OOP 2003
Agile Organization
“In any great organization it is far, far safer to be wrong with the majority than to be right alone.”
John Kenneth Galbraith
04/1
8/23
sl
ide
45
(c) Michael Stal, Keynote for OOP 2003
Organizational Aspects
Experience and research have shown that organizational issues have a fundamental impact on software architectures and development processes.
Thus, it is important to optimize your organization in order to optimize your products.
Organizations need to be agile, i.e., effective and efficient:
“Efficiency is doing things right, effectiveness is doing the right things.” Peter Drucker
04/1
8/23
sl
ide
46
(c) Michael Stal, Keynote for OOP 2003
Agility and Engineering
To be agile your engineering process should embrace change (Kent Beck) support an incremental approach with each
increment being a small mini project that moves you closer to the final product.
strongly rely on testing involve the users and their requirements without
giving away control:
04/1
8/23
sl
ide
47
(c) Michael Stal, Keynote for OOP 2003
Top 10 Problems in Software Projects
What would you do if you were an agent and had to sabotage your competitors‘s projects?
No clear responsibilities within teams Missing, contradicting, and dynamically changing requirements No communication or too much communication Inadequate processes Wrong technologies Unexperienced developers Underestimation of software architecture activities No or insufficient quality assurance Unrealistic time frames Wrong tool set
In an agile world these issues prove to be even more painful, because they are being turned to Agile Problems
04/1
8/23
sl
ide
48
(c) Michael Stal, Keynote for OOP 2003
Summary
Today‘s businesses are agile. As a consequence, software projects must also be agile.
Hence, Use agile processes Leverage agile architectures Select appropriate technologies Consider Web protocols for integration Don‘t forget to make your organization agile Don‘t believe in Gurus and Jedis (telling us for years how to
ease software development pain) And don‘t always wait for TNT (The Next Technology) to save
your projects! Most of the constituents for agile software development are already invented.
This summary in only one sentence: Agility denotes a Holistic Approach
04/1
8/23
sl
ide
49
(c) Michael Stal, Keynote for OOP 2003
Last but not least : The Art of User Manuals
"If you cannot read this, please ask the flight attendant for assistance."
United Airlines Flight Safety Brochure