b fn as
TRANSCRIPT
Applications Simultaneously
Ko sang [email protected] / funkcode.tistory.com
High Performance Computing and Object Technology Lab.Hanyang University
- 프레임웍과 어플리케이션 동시에 구축하기
http://hillside.net/conferences/plop.htm: Pattern Languages of Programs
“Building Frameworks and Applications Simultaneously”
- Andreas Ruping’’
App
App
App
Framework
Why make
the Framework ?
TEAM BApplication
TEAM AApplication
TEAM CApplication
Framework ?
Framework ?
Framework ?
Application Framework
I’m sorry I am late
…
roblem
The Framework
mustmust be built in parallel to applications that are going to use it
Overview of the Pattern Language
A Pattern Languagehelps the framework developer
uggestion
• A German insurance company• A large number of old legacy applications
unning Example
To build
The interface to the application program
To manage the versioningof logical entities
To store and retrieve objectsin database
Application don’t yet exist- Competing interests
‘Rule of Three’
A first version of the framework
- A framelet is a small framework that defines an abstract architecture
- To keep the framework simple, focus on a small number of core concepts. Avoid too much abstraction.
- Three expected uses is a must, even for a small framework
Requirement
Requirement
Requirement
Restrict the mapping of logical entities onto physical tables
Only simple mappings are possible
“THREE EXAMPLES”- Evolving frameworks
“TWO PILOT APPLICATIONS”
“BUDGET FACTOR 2.5”
- Finding the right abstractions isn’t easy
- The framework team offer coaching
= 30 person months12 person months x 2.5
5 people(2 people - full time)
Maintaining the just released versionPreparing a new versioncoaching
delay
“SIZE THE ORGANISATION”“SIZE THE SCHEDULE”
- A Generative Development-Process Pattern Language
“RULE OF THREE” and “BUDGET FACTOR 2.5”
framework development = 2.5 * application development
3 * application development = framework development + 3 * framework instantiation
framework instantiation = 1/6 * application development
Some functionality, but use it in different ways.There is a common abstraction
None of these applications have been built so far
Have to find the right abstractions for your framework
- The pilot applications must be fairly typical
should be rather important
must be applications that being built early
The health insurance system is a very typical one
“Two-dimensional versioning”
“USER INVOLVEMENT”• Collaborating with the pilot users
• The importance of feedback from users
“ENGAGE CUSTOMERS”- A Generative Development-Process Pattern Language
“IT’S A RELATIONSHIP NOT A SALE”- Customer Interaction Patterns
“TESTS BASED ON PILOT APPLICATIONS”
A Framework with a relatively
is more easily understood
A smaller number of more powerful functions
A larger number of less powerful functions
?
- The functions the framework offers will be better understood
- Smaller functions have a better chance of meeting the user’s needs
- A larger number of smaller, somewhat atomic, functions allow
for more combinations
The data access layer keeps track of which objects have been changed
A session applications can commit all or some of changes to the database
Two functions :
• Lists all changed objects
• Saves individual object to the database
“FINE-GRAINED OBJECTS”- Evolving frameworks
The risk of architectural mismatch
?
Application Developer
Framework
Run common workshops
Provide tools and demonstrate how to use these tools
Offer tests of how an application and your framework collaborate
Show the users how to optimize the applications
Make tutorials and documentation
• A two-week workshop together with the health insurance system team
• Learned that the commission system had special efficiency requirement
• Provided a script that generates a concrete access layer from application’s meta information
“TWO PILOT APPLICATIONS”
“BUILD TRUST”- Customer Interaction Patterns
“BUDGET FACTOR 2.5”
Your framework is a framelet, - cannot be tested alone
Test case coverage is much harder to achieve
Can be difficult to find realistic test scenarios
Framework
Need applications that use the framework to act as test drivers
- Indentify core components from the pilot applications, and use these components as test drivers
- Find typical use cases from pilot applications and maintain them as a test suite
- Shape these test cases into regression tests
- Have to include some exotic scenarios
- Need test cases that test the time performance and stability
• The health insurance system• The party system
Two pilot systems
“TWO PILOT APPLICATIONS”
“USER INVOLVEMENT”
Application Development Teams
Framework Development Team
“I have to keep the
framework
simple”
- Be active
- Allow users of the framework to add application-specific functions
The printing system
The workflow systemAn additional function
Several requests for extending the two-dimensional
“FRAMELETS FOR MULTIPLE USE”..at least three times
[email protected]://funkcode.tistory.com
- Thank you for your attention