Present and Future of
Software Transformation Tools
Dr. Carlos Araya
CEO ArtinSoft
Feb, 2003
About ArtinSoft
 Founded in 1993
 HQ in San José, CR; operations in US, MX, EU
 R&D in automatic source code transformation
 150 employees
 Customers include Microsoft, Borland, ICLFujitsu, Intel, AT&T
 Strategic investors include Intel and Microsoft
Presentation
Contents
 General transformation process
 Current transformation processes
 Next generation of transformation tools
 What is needed to get there...
 Study case: ArtinSoft´s technologies
Source code
transformation
Meaning
Abstract
representation
Abstract target
source code
Term by Term
transformation
Source code
Semantic level
Target source
code
Abstract syntax
Concrete syntax
Some semantics
formalisms

Denotational

Operational

Axiomatic semantic

General linguistic representations
 Value based (what expressions denote) explained in functional
calculus
 Evaluation based
 Explains execution
 Axiomatic semantics
 Introduced by Tony Hoare and others
 Defining programming language semantics independently of syntax
and any particular implementation of language
 Similar to XML
 Other formalisms separate from human understanding
 Used by ArtinSoft
Current
transformation
tools/services
 Based on term-byterm transformation
 With manual
adjustments
(Services)
 Mostly for
Migrations
 Un-maintainable
result code
 High risk of human
error
 Increased testing
cost
Next generation of
transformation tools
 Semantics representation
formalisms and
standards
 Linguistic reasoning &
transformation
technology
 Automatic programming
assistance
 Total human
maintainable code
 Transparent manipulation
 Risk free and low cost
software maintainable
processes
 Independence of
concrete languages
 Software & knowledge as
assets
 Automatic programming
 Independence of market
shifts
What is needed
 Semantic representation languages
 Automatic deduction and reasoning
 Equivalence preserving re-writing tools
 Strong search and matching capabilities
 Broad range of applicability
What can be done
Tools that might derive from a languages:
Scanner/Parsers
Pretty-printers
Syntax-directed editors
Type-checkers
Interpreters
Dataflow analyzers
Call graph extractors
Partial evaluators
Optimizers
Program slicers
Origin trackers
Debuggers
Code generators
Compilers
Profilers
Test case generators
Test coverage analyzers
Impact analyzers
Complexity analyzers
Documentation generators
Systematic program modification tools
Component descriptions
….and more…
… and what we are
really looking for
 Software automation
 Language and platform migration
 Re-architecture transformations
 Aspect-oriented manipulation
 Self-correcting software
 Model-based and constrained systems
 Immobots (immobile robots)
 Autonomic computing
Model-based and
constrained
systems
 Coming from engineering design
 Variety of formal and informal tools
{representation formalisms, component manipulation,
properties from the modeled artifact}
 Critical, essential, static and dynamic
component properties
 Ex: Finite state machine models of software
 Ex: XIML interface model markup language
Immobots
 “Inward-focused, self-reconfiguring machines”
 Hard to anticipate all possible contingencies:
how vs what
 Models of their own inner workings
 Safest, fastest and most cost-effective way to
deal with instructions, simulations, corrections,
and emergencies
 Mars Polar Lander vs Deep Space One
IBM’s autonomic
computing
"Civilization advances by extending the number of
important operations which we can perform without
thinking about them." - Alfred Whitehead
… "know itself" - its components must also possess a system identity


… configure and reconfigure itself under varying (and in the future, even
unpredictable) conditions


… always looks for ways to optimize its workings
… be able to recover from routine and extraordinary events


… must be an expert in self-protection
… know its environment and the context surrounding its activity, and act
accordingly
… function in a heterogeneous world and implement open standards


… marshal I/T resources to shrink the gap between the business or
personal goals of the user and the necessary implementation
Káblök technology
(from Bribrí: agreement, matching)
A programming language for linguistic reasoning
‘Positivism’, if it exists, then it can be described
New general purpose programming paradigm
Algebraic optimizations and simplifications
Highest-level pattern detection and re-write
Top-down design patterns, bottom-up concept mapping
100% semantic equivalence
‘Natural’ mathematical deduction
+ OO grammar representation
Káblök advantages
 Highest automatic manipulation of code (95-99%)
 Generated code is for human consumption
 Applicable to aspect-oriented manipulation
(security, substitution, performance, simplification, re-architecture, etc.)
 Consistency: several languages and problems
 Integrates/generates other re-architecture/componentization tools
 Add-in to Interactive Development Environments
 Code understanding & business logic abstraction
 Linearly correlated efficiency
 Binding resolution and type inference
Example tools for n-tiering
 Knowledge-based analysis facilitates
keeping related pieces of code together
BL
DB
IF
IF
DB
BL
IF
DB
DB
BL
IF
IF
BL
IF
BL
DB
DB
BL
Where should each
piece of code go?
Methodology
advantages
 Decomposable, fully controllable processes
 Safe and predictable
 Minimum testing, downtime, and re-training
 Quicker, easier and cheaper
 Bridges backward compatibility
 Results will use latest technologies
Software
transformation
promise
 Quicker, low-risk corporate evolution
 Support the growing complexity
 Minimal organizational disruptions
 Reinforce knowledge capital
 Facilitate platform unification and lower costs
 Simplify technology decisions
 Better returns on investments
 Transform software economics
Thank you very much!
Descargar

Document