Why am I here Development techniques are headed down the wrong path! Our world should be getting simpler – it is not The solutions that will solve the.

Slides:



Advertisements
Similar presentations
January 30, 2014 Copyright Jim Farley Beyond JDBC: Java Object- Relational Mappings Jim Farley e-Commerce Program Manager GE Research and Development
Advertisements

3 Copyright © 2005, Oracle. All rights reserved. Designing J2EE Applications.
Copyright © 2006 Data Access Technologies, Inc. Open Source eGovernment Reference Architecture Approach to Semantic Interoperability Cory Casanave, President.
Database System Concepts and Architecture
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
CHAPTER 1 SOFTWARE DEVELOPMENT. 2 Goals of software development Aspects of software quality Development life cycle models Basic concepts of algorithm.
Framework is l Reusable Code, often domain specific (GUI, Net, Web, etc) l expressed as l a set of classes and l the way objects in those classes collaborate.
Chapter 22 UML Tooks and UML as Blueprint Model-Driven Architecture (MDA) Object-Constraint Language (OCL)
CORBA - Common Object Request Broker Architecture.
Introduction To System Analysis and Design
Next Generation Node (NGN) Technical Overview April 2007.
Page 1 Model Based Software Development - a pragmatic view Mikkel Lauritsen Intentia R&D A/S
Projects March 29, Project Requirements Think Aloud –At least two people OR Difficulty Factors Assessment –Ideally >25 (at least one class), but.
1 Introducing Collaboration to Single User Applications A Survey and Analysis of Recent Work by Brian Cornell For Collaborative Systems Fall 2006.
Chapter 1 Software Development. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 1-2 Chapter Objectives Discuss the goals of software development.
Week 8 Implementation Design Alex Baker. Implementation Design System Design – Describes what the system should do Implementation Design – Describes what.
© M.E. Fayad SJSU -- CmpE Analysis Heuristics Dr. M.E. Fayad, Professor Computer Engineering Department, Room #283I College of Engineering San.
1/25/2000 Active Names: Flexible Location and Transport of Wide-Area Resources Luis Rivera.
Course Instructor: Aisha Azeem
Matthew J Mattia CSC  Cumbersome Code  Consistent/Predictable design (GUEPs #5, CD’s #10)  Display “proper” amount of information  Including.
Web Application Architecture: multi-tier (2-tier, 3-tier) & mvc
Computer Measurement Group, India Reliable and Scalable Data Streaming in Multi-Hop Architecture Sudhir Sangra, BMC Software Lalit.
Introduction To System Analysis and design
1 INTRO TO BUSINESS COMPONENTS FOR JAVA (BC4J) Matt Fierst Computer Resource Team OracleWorld Session
LAYING OUT THE FOUNDATIONS. OUTLINE Analyze the project from a technical point of view Analyze and choose the architecture for your application Decide.
Architecture Of ASP.NET. What is ASP?  Server-side scripting technology.  Files containing HTML and scripting code.  Access via HTTP requests.  Scripting.
1 The Problem Do you have: A legacy ABL system with millions of Lines of ABL Code? Years and years of modifications to your ABL code? System documentation.
Computer Science Victoria University of Wellington Copyright: david streader, Victoria University of Wellington Simple Design COMP
© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1 A Discipline of Software Design.
Enterprise Java Beans Part I Kyungmin Cho 2001/04/10.
Building an Offline Smart Client using Domain-Driven Design Principles Tim McCarthy.
Enterprise JavaBeans. What is EJB? l An EJB is a specialized, non-visual JavaBean that runs on a server. l EJB technology supports application development.
3 April SOA: Services Oriented Architecture MDA: Model Driven Architecture.
Introduction to MDA (Model Driven Architecture) CYT.
Introduction To System Analysis and Design
Vision The ultimate IDE/CASE tool should supports all steps in the software development process. Current tools perform only minimal semantic-level analysis.
Presentation. Recap A multi layer architecture powered by Spring Framework, ExtJS, Spring Security and Hibernate. Taken advantage of Spring’s multi layer.
CSE 219 Computer Science III Program Design Principles.
(Business) Process Centric Exchanges
University of Southern California Center for Systems and Software Engineering Model-Based Software Engineering Supannika Koolmanojwong Spring 2013.
1 Systems Analysis and Design in a Changing World, Thursday, January 18, 2007.
Chapter 38 Persistence Framework with Patterns 1CS6359 Fall 2011 John Cole.
Microsoft Dynamics NAV 2009 and Architecture Overview Name Title Microsoft Corporation.
Distributed Information Systems. Motivation ● To understand the problems that Web services try to solve it is helpful to understand how distributed information.
Enterprise Integration Patterns CS3300 Fall 2015.
Copyrights - Information Frameworks, January 8, Extraprise Information Factory Naeem Hashmi Chief Technology Officer Information Frameworks
Building High Performance, Robust Server Applications with Internet Information Server 5.0 Van Van IIS - Program Manager Microsoft Corporation.
Ch- 8. Class Diagrams Class diagrams are the most common diagram found in modeling object- oriented systems. Class diagrams are important not only for.
Design Reuse Earlier we have covered the re-usable Architectural Styles as design patterns for High-Level Design. At mid-level and low-level, design patterns.
Object Oriented Analysis and Design 1 Chapter 9 From Design to Implementation  Implementation Model  Forward, Reverse, and Round-Trip Engineering  Mapping.
Component Patterns – Architecture and Applications with EJB copyright © 2001, MATHEMA AG Component Patterns Architecture and Applications with EJB Markus.
From Use Cases to Implementation 1. Structural and Behavioral Aspects of Collaborations  Two aspects of Collaborations Structural – specifies the static.
From Use Cases to Implementation 1. Mapping Requirements Directly to Design and Code  For many, if not most, of our requirements it is relatively easy.
Computer Science Victoria University of Wellington Copyright: david streader, Victoria University of Wellington Simple Design COMP
Elaboration: Iteration 2. Elaboration: Iteration 2 Basics Iteration 1 ends with : All the software has been tested: The idea in the UP is to do early,
Databases and DBMSs Todd S. Bacastow January 2005.
Open Source distributed document DB for an enterprise
Web Application Modeling
Data, Databases, and DBMSs
ARCH-1: Application Architecture made Simple
Lecture 18 – March 26, 2002 Synthetic criteria for evaluation of network traffic patterns. Open systems.
Constructing MDA-based Application Using Rational XDE for .NET
Developing and testing enterprise Java applications
Tonga Institute of Higher Education IT 141: Information Systems
Applying Use Cases (Chapters 25,26)
Tonga Institute of Higher Education IT 141: Information Systems
Chapter 5 Architectural Design.
Chapter 6: Architectural Design
From Use Cases to Implementation
Presentation transcript:

Why am I here Development techniques are headed down the wrong path! Our world should be getting simpler – it is not The solutions that will solve the problem does not get enough attention I want you to start thinking about the right solutions

What is the problem? The promise of OO failed: –The code should clearly reflect our understanding of the world Plumbing, infrastructure, mechanical, technical code takes the #1 position in the program Architecture fragments and hides domain model I drown in technical details!

I want to see my domain model again

Some issues Model and code is the same thing!

What happened? OO started out too naively There are three parts of the development process –Business level code –Infrastructure code –”Weaving” of business and infrastructure Traditional J2EE development mixes all this into one big bowl of distasteful gooey

How do we solve it? Treat the different parts of the process apart Handle them orthogonally Maybe this is the way our profession should specialize?

The two approaches Model driven architecture –Standards defined (OMG) –Focuses on visual models –Model transformation and code generation ”The other approach” –Advocates are ”hacker” types – not ”suits” –Code model sufficient (visual views of code welcome) –Many implementations – none really complete

Infrastructure code PIM Model Driven Archicture We weave in technology But we still have work to do! PSM Code I define the domain model I contain all the technology decisions I contain the details. The functionality is written here

How MDA gets it wrong Graphical does not automatically mean more abstract The code is a model, too –The source code models the machine-code –The machine code models the idealized von Neumann machine Weaving technology into the model too early is not good for the developer –When generating 80% of the code, the remaining 20% can be 5 times as hard to write Increases total complexity instead of reducing it

”The other approach” Domain model code UI code Clustering, distribution, transaction code Persistence code I define the domain model and contain the details of business logic I work with the infrastructure Weaving code

Examples The totality of Totto’s ideas Aspect Oriented Programming- approaches Model Centric Development/spif (”simples possible infrastructure framework”) Naked Objects Many others (my own ”cerise” work)

Example: Using smart proxies I write Order.printInvoice Order.getTotalPrice for OrderLine in lines total += line.getPrice... All business code! The framework does: Read the order from the database Send the order data to the client Cache the order data in the client proxy Cache the lines collection – deeply Or: something completely different: PrintInvoice is marked as being a server side method

Client Rich client weaving Application Server Weaving – figure II Domain model App server weaving Domain model Persistence weaving Domain model Database Written by ”business analysts” Written by ”architects” Written by scalability, distribution etc, experts Written by database experts Written by Swing experts Application specific code

ClientApplication Server Weaving – figure II Rich client weaving Domain model App server weaving Domain model Persistence weaving Domain model Database Written by ”business analysts” Written by ”architects” Written by scalability, distribution etc, experts Written by database experts Written by Swing experts Application specific code

Why is it cool? Write domain code in one place: –Easier to check with customers domain –Easier to understand –Easier to specialize in domain code Write infrastructure code in one place –Easier to develop –Easier to reuse – internally and externally –Easier to specialize in technical code Make domain code behave ”right” in many environments –Easier to test –Easier to understand –Easier to change and extend ”architecture”

Why is it cool? Write domain code in one place: –Easier to check with customers domain –Easier to understand –Easier to specialize in domain code Write infrastructure code in one place Make domain code behave ”right” in many environments

Why is it cool? Write domain code in one place: Write infrastructure code in one place –Easier to develop –Easier to reuse – internally and externally –Easier to specialize in technical code Make domain code behave ”right” in many environments

Why is it cool? Write domain code in one place: Write infrastructure code in one place Make domain code behave ”right” in many environments –Easier to test –Easier to understand –Easier to change and extend ”architecture”

Example environments to weave to UI Dialogs UI Interaction Distribution Persistence Schema generation Single-tier Test harness Naked Objects automatically maps Java objects to dialogs

Implementation strategies Define pluggable interfaces in Java Frameworks with dynamic proxies Aspect-oriented programming Example SPIF Store chain CacheRemoteServerLocking AuthorizationCache Database

The problems of the other approach The harder the weaving code is to write, the less the idea is worth We don’t know how much weaving is needed in practice We don’t know if we can really write infrastructure independent business logic In other words: –Not really tried out –Might not work!

What I want you to do Evaluate at least one approach If you think it will work: –Ask for it from vendors –Donate time to open source projects The ”suits” don’t understand why MDA is wrong: –MDA will be the standardized solution –We must fix the situation ourselves

Graphical programming Hass been tried Just as complex as textual programming The value of graphical representation is when we can abstract Class diagrams don’t abstract from classes, they just show them in another language! Prograph example - Method “sort'' for topological sort algorithm

Comparison Topo in Ruby def topo indeg = indegrees() # Find the number of incoming links on each node result = [] remaining_nodes = self.nodes (ready_nodes, remaining_nodes) = remaining_nodes.split { |node| indeg[node] == 0 } until ready_nodes.empty? current_node = ready_nodes.pop current_node.adjecent.each { |node| indeg[node] -= 1 } (ready_nodes, remaining_nodes) = remaining_nodes.split { |node| indeg[node] == 0 } result.push(current_node) end if result.size < nodes.size raise "Graph contains cycles" end result end