Presentation is loading. Please wait.

Presentation is loading. Please wait.

Software modularity group Gregor Kiczales Professor and NSERC/Xerox/Sierra Systems Software Design Chair University of British Columbia Principal Scientist.

Similar presentations


Presentation on theme: "Software modularity group Gregor Kiczales Professor and NSERC/Xerox/Sierra Systems Software Design Chair University of British Columbia Principal Scientist."— Presentation transcript:

1 software modularity group Gregor Kiczales Professor and NSERC/Xerox/Sierra Systems Software Design Chair University of British Columbia Principal Scientist Xerox PARC

2 UBC software modularity group 2 successful separation of concern paradigms structured programming object-orientation intuitive efficient profound and incremental  separation of concern paradigms school of: organization design, separation of concerns, abstraction, information hiding… and some of their key properties approaches to a fundamental problem of software engineering

3 UBC software modularity group 3 problem: separation of crosscutting concerns synchronization, access control, accounting, scheduling, performance optimization, power management, distribution, replication, logging, context dependence… crosscut blocks, layers, objects vm_fault vm_pager_getpages vnode_pager_getpages ffs_getpages ffs_valid ufs_bmap ffs_calc_size … …VM module FFS module Point getX(): int getY(): int setX(int) setY(int) Line getX(): int getY(): int setX(int) setY(int) Figure * 2 FigureElement tracking when objects move in a simple figure editor classic sources of complexity in embedded systems 2 prefetching modes in Free BSD

4 UBC software modularity group 4 multiple views enable separation of concerns simple statics more detailed statics simple dynamics m views differ in level of detail views crosscut each other

5 UBC software modularity group 5 multiple views enable separation of concerns m aspect MoveTracking { pointcut moves(): call(void Line.setP1(Point)) || call(void Line.setP2(Point)) || call(void Point.setX(int)) || call(void Point.setY(int))); after(): moves() { display.update(); } Point getX(): int getY(): int setX(int) setY(int) Line getX(): int getY(): int setX(int) setY(int) 2 class Point implements FigureElement { private int _x = 0, _y = 0; int getX() { return _x; } int getY() { return _y; } void setX(int x) { _x = x; } void setY(int y) { _y = y; } } interface Point extends FigureElement { int getX(); int getY(); void setX(int x); void setY(int y); } Point getX(): int getY(): int setX(int) setY(int) Line getX(): int getY(): int setX(int) setY(int) 2 MoveTracking

6 UBC software modularity group 6 other ideas in “the AO space” programming –Intentional Programming, MDSOC, model-based, AO frameworks… patterns –a pattern is a name for a non-modularized crosscutting concern collaborative development environments –simultaneous crosscutting organizations of code SDP working group: Grady Booch, Ralph Johnson, Gregor Kiczales, Charles Simonyi, John Vlissides

7 UBC software modularity group 7 object-orientation model world as objects classify objects into inheritance hierarchy analysis design programming trace-ability separation of concerns –within each level –across the levels objects all the way through Point getX(): int getY(): int setX(int) setY(int) Line getX(): int getY(): int setX(int) setY(int) Figure * 2 FigureElement a simple figure editor

8 UBC software modularity group 8 aspect-orientation model world as objects/procedures/layers, and aspects are crosscutting units analysis design programming aspects (& objects & procedures) all the way through when elements move aspect MoveTracking {... 10 loc... } detect & optimize sequential access aspect SeqPrefetching {... 40 loc... } Point getX(): int getY(): int setX(int) setY(int) Line getX(): int getY(): int setX(int) setY(int) Figure * 2 MoveTracking FigureElement

9 UBC software modularity group 9 separation of concerns is foundational class Line { private Point _p1, _p2; Point getP1() { return _p1; } Point getP2() { return _p2; } void setP1(Point p1) { _p1 = p1; MoveTracking.collectOne(this); } void setP2(Point p2) { _p2 = p2; MoveTracking.collectOne(this); } class Point { private int _x = 0, _y = 0; int getX() { return _x; } int getY() { return _y; } void setX(int x) { _x = x; MoveTracking.collectOne(this); } void setY(int y) { _y = y; MoveTracking.collectOne(this); } class MoveTracking { private static Set _movees = new HashSet(); public static void collectOne(Object o) { _movees.add(o); } public static Set getmovees() { Set result = _movees; _movees = new HashSet(); return result; } class Line { private Point _p1, _p2; Point getP1() { return _p1; } Point getP2() { return _p2; } void setP1(Point p1) { _p1 = p1; } void setP2(Point p2) { _p2 = p2; } class Point { private int _x = 0, _y = 0; int getX() { return _x; } int getY() { return _y; } void setX(int x) { _x = x; } void setY(int y) { _y = y; } Point getX(): int getY(): int setX(int) setY(int) Line getX(): int getY(): int setX(int) setY(int) Figure * 2 FigureElement Point getX(): int getY(): int setX(int) setY(int) Line getX(): int getY(): int setX(int) setY(int) 2 MoveTracking MAMA MBMB MAMA MBMB traceability evolution verification model-based … tangled messgood separation

10 UBC software modularity group 10 activities in AO space DARPA ITO PCES/NEST/MOBIES programs workshops –affiliated: ICSE, ECOOP, OOPSLA… –stand-alone: Germany, France, England, Belgium… CACM theme issue (October 01) AOSD 2002 Conference –in cooperation with SIGPLAN and SIGSOFT –FOAL workshop (POPL community)… recent papers on –semantics, verification, language design, UML integration… Java technical press –JavaReport etc.

11 UBC software modularity group 11 big steps in software development not just technology –languages, tools not just work practice –methods, books, management synergistic combination of both intuitive, efficient, profound, incremental –structured programming –OO programming –aspect-orientation? ideas that bridge the whole process


Download ppt "Software modularity group Gregor Kiczales Professor and NSERC/Xerox/Sierra Systems Software Design Chair University of British Columbia Principal Scientist."

Similar presentations


Ads by Google