Мултипарадигамски дизајн са моделирањем особина
DESCRIPTION
Факултет организационих наука Универзитета у Београду, 26. март 2002. Мултипарадигамски дизајн са моделирањем особина. Валентино Вранић [email protected] Катедра за информатику и рачунарску технику Факултет електротехнике и информатике Словачки технички универзитет у Братислави. Увод. - PowerPoint PPT PresentationTRANSCRIPT
В. Вранић — Мултипарадигамски дизајн са моделирањем особина
Мултипарадигамски дизајн
са моделирањем особина
Валентино Вранић[email protected]
Катедра за информатику и рачунарску технику
Факултет електротехнике и информатике
Словачки технички универзитет у Братислави
Факултет организационих наука Универзитета у Београду, 26. март 2002.
2В. Вранић — Мултипарадигамски дизајн са моделирањем особина
Увод
• Различите парадигме програмирања (развоја софтвера):– парадигма објектно-оријентисана, процедурална,
функционална, логичка, аспектно-оријентисана, агентно-оријентисана…
– нису једнозначно дефинисане
• Програмски језици и парадигме– програмски језик подржава једну или више парадигми
• Комбиновање различитих парадигми– мултипарадигамски језици
• Шта је парадигма програмирања (развоја софтвера)?
3В. Вранић — Мултипарадигамски дизајн са моделирањем особина
Преглед предавања
Појам парадигме у развоју софтвера
Ка мултипарадигамском развоју софтвера
Мултипарадигамски дизајн
Мултипарадигамски дизајн са моделирањем особина
Закључна запажања и даљи рад
4В. Вранић — Мултипарадигамски дизајн са моделирањем особина
Парадигма
• Научне парадигме: Thomas Kuhn — The Structure of Scientific Revolutions, 1970.– научне парадигме се мењају револуцијом, а не еволуцијом
– концепт донекле применљив и на парадигме програмирања
• Лингвистика– пример конјугације или деклинације
• Значење речи– пример, поређење, узор
5В. Вранић — Мултипарадигамски дизајн са моделирањем особина
Парадигме програмирања
• Robert W. Floyd — The Paradigms of Programming, 1978.– налази сличности са научним парадигмама (Kuhn)
• међусобно неразумевање припадника различитих парадигми
– али игнорише разлике:• у нормалној науци парадигма је једна
• научне парадигме се мењају одједном (револуцијом, а не еволуцијом)
• J. O. Coplien — мултипарадигамски дизајн– Парадигма као процес развоја софтвера
• парадигма у великом
– Парадигма као конфигурација заједничког и променљивог• парадигма у малом
6В. Вранић — Мултипарадигамски дизајн са моделирањем особина
Програмски језици и парадигме
• Језичка конструкција– пример: класа у језику AspectJ
• Парадигма у малом– пример: класа
• Парадигма у великом– пример: објектно-оријентисано програмирање
7В. Вранић — Мултипарадигамски дизајн са моделирањем особина
Ка мултипарадигамском развоју софтвера
• Објектно-оријентисано програмирање– више дефиниција
– често се примењује с другим парадигмама (најчешће са процедуралним програмирањем)
• Аспектно-оријентисано програмирање– мултипарадигамско у основи
– везано за опште процедуралне приступе
• Генеративно програмирање– спаја више парадигми:
• инжењерство домена — domain engineering (нпр. FODA)
• објектно-оријентисано програмирање
• аспектно-оријентисано програмирање
• програмирање засновано на компонентама (нпр. GenVoca)
8В. Вранић — Мултипарадигамски дизајн са моделирањем особина
Мултипарадигамски приступи
• Комбиновање парадигми– стварање програмских језика и окружења која подржавају
употребу више парадигми (нпр. Leda, Intentional Programming)
• Избор парадигме– метапарадигма
– дизајн је флексибилнији ако се употребе адекватна средства
9В. Вранић — Мултипарадигамски дизајн са моделирањем особина
Мултипарадигамски дизајн
• Multi-paradigm design (for C++), J. O. Coplien• SCVR анализа
– Scope, Commonality, Variability, and Relationship analysis
– анализа домена
• Инжењерство домена (domain engineering)– породица система
– анализа домена апликације (проблема)
– успостављање модела домена
10В. Вранић — Мултипарадигамски дизајн са моделирањем особина
Процес мултипарадигамског дизајна
• Анализа домена апликације– домен апликације, проблема
– декомпозиција у поддомене
– анализа зависности променљивог (дијаграми зависности променљивог)
• Анализа домена решења– домен решења — програмски језик, али и друга средства
(нпр. обрасци дизајна, design patterns)
– парадигме — конфигурације заједничког и променљивог
• Трансформациона анализа– пресликавање домена апликације на домен решења
11В. Вранић — Мултипарадигамски дизајн са моделирањем особина
Пример мултипарадигамског дизајна
C o m m o n a l i t y V a r i a b i l i t y B i n d i n g I n s t a n t i a t i o n L a n g u a g e M e c h a n i s m . . .
. . . A l g o r i t h m ( e s p e c i a l l y m u l t i p l e ) , a s w e l l a s ( o p t i o n a l ) d a t a s t r u c t u r e a n d s t a t e
C o m p i l e t i m e
O p t i o n a l I n h e r i t a n c e R e l a t e d o p e r a t i o n s a n d s o m e s t r u c t u r e ( p o s i t i v e v a r i a b i l i t y )
A l g o r i t h m , a s w e l l a s ( o p t i o n a l ) d a t a s t r u c t u r e a n d s t a t e
R u n t i m e O p t i o n a l V i r t u a l f u n c t i o n s
V a r i a b i l i t y t a b l e s ( f r o m a p p l i c a t i o n d o m a i n S C V R a n a l y s i s )
P a r a m e t e r s o f v a r i a t i o n M e a n i n g D o m a i n B i n d i n g D e f a u l t O u t p u t m e d i u m S t r u c t u r e , A l g o r i t h m
… D a t a b a s e , R C S f i l e , T T Y , U N I X f i l e
R u n t i m e U N I X f i l e
T e x t E d i t o r V a r i a b i l i t y A n a l y s i s f o r C o m m o n a l i t y d o m a i n : T E X T E D I T I N G B U F F E R S ( C o m m o n a l i t y : B e h a v i o r a n d S t r u c t u r e )
F a m i l y t a b l e ( f r o m s o l u t i o n d o m a i n S C V R a n a l y s i s )
12В. Вранић — Мултипарадигамски дизајн са моделирањем особина
Мултипарадигамски дизајн са моделирањем особина — MPDFM
• Примена прилагођеног моделирања особина уместо SCVR анализе
• Домен апликације и решења у облику модела особина• Домен — концепт• Трансформациона анализа — тражење инстанција
парадигми које одговарају концептима домена апликације
• Примена MPDFM: MPDFM за AspectJ– AspectJ — аспектно-оријентисани језик заснован на језику
Java, развијен у Xerox PARC
13В. Вранић — Мултипарадигамски дизајн са моделирањем особина
Моделирање особина (1)
• Feature modeling• Техника концептуалног моделирања• Примењује се у инжењерству домена
– FODA — Feature-Oriented Domain Analysis• Software Engineering Institute
– Generative Programming• K. Czarnecki, U. Eisenecker
• Омогућава експлицитно моделирање заједничких и променљивих особина
• Дозвољене конфигурације променљивих особина одређују инстанције концепта
14В. Вранић — Мултипарадигамски дизајн са моделирањем особина
Моделирање особина (2)
c
f1 f2 f3 f4
f5 f6 f7
Дијаграми особина– оријентисано дрвеће са
декорацијама грана
– корен = концепт,остали чворови = особине
– заједничке и променљиве особине
– места промене
Додатне информације о свакој особини
– Опис значења
– Разлог употребе
– Ограничења
– Мод везивања
15В. Вранић — Мултипарадигамски дизајн са моделирањем особина
Пример: Бафер за едитацију текстаText Editing Buffer
cursor position
number of characters
number of lines
yield data
replace data
load file
save file
Unix File
read
write
yield data
replace data
yield data replace data
yield data
replace datawhole page
whole file LRU fixed
…
Working Set Management
File
ASCII
UNICODE
…
Character Set
Working SetManagement DC
File DC
Character Set DC
debug
production
Debugging Code
…
read
writestatus
database
read
writename
contents
16В. Вранић — Мултипарадигамски дизајн са моделирањем особина
Инстанција концепта бафераText Editing Buffer
cursor position
number of characters
number of lines
yield data
replace data
load file
save file
Unix File
read
write
yield data
replace data
whole file
Working Set Management
File
UNICODE
Character Set
Working SetManagement DC
File DC
Character Set DC
production
Debugging Code
status
read
writename
contents
17В. Вранић — Мултипарадигамски дизајн са моделирањем особина
Анализа зависности променљивог• Дијаграми зависности променљивог
– могу се извести из модела особина
– помажу у:• идентификацији и обједињавању заједничких концепата
• идентификацији циркуларних зависности међу концептима
• Пример:– Дијаграм зависности бафера за едитацију текста
Text Editing Buffer
FileCharacter
Set
Debugging Code
Working Set Management
18В. Вранић — Мултипарадигамски дизајн са моделирањем особина
Узајамно зависни домени
• Утичу на избор парадигме• Пример:
– Није могуће користити наслеђивање за сваку од три зависности на слици
A
C
B
C
A
B
C
A
B
C
A
C …
19В. Вранић — Мултипарадигамски дизајн са моделирањем особина
Модел парадигми
• Корен дијаграма особина је концепт програмског језика
• Парадигме — концепти модела особина:– директно употребљиве
• везане директно за концепт програмског језика
– индиректно употребљиве• појављују се као подконцепти других парадигми
• Дубина модела– први ниво индиректно употребљивих парадигми
AspectJ
Aspect Interface Class Inheritance
20В. Вранић — Мултипарадигамски дизајн са моделирањем особина
Трансформациона анализа
• Успостављање пресликавања по правилима моделирања особина
• Разлог употребе особине одређује када се особина прикључује концепту:– приликом пресликавања на њу
– приликом прикључења одређених особина (нпр. њених подособина)
• Два типа парадигми:– структуралне
– односне
21В. Вранић — Мултипарадигамски дизајн са моделирањем особина
ASCII
Character Set
UNICODE
…
replace data
File…
read
write
Unix File
Database yield data
save file
number of characters
number of lines
cursor position
load file
Working Set Management
Whole file
Whole page
LRU fixed
yield data replace data
yield data
replace data
yield data
replace data
…
Text Editing Buffer
debug
production File DC
Character Set DC
Working SetManagement DC
Debugging Code
read
write
read
writename
status
contents
Структуралне парадигме — пример
Class
Overloading
inner fields Methods
type value
… … [run time]
22В. Вранић — Мултипарадигамски дизајн са моделирањем особина
ASCII
Character Set
UNICODE
…
replace data
File…
read
write
Unix File
Database yield data
save file
number of characters
number of lines
cursor position
load file
Working Set Management
Whole file
Whole page
LRU fixed
yield data replace data
yield data
replace data
yield data
replace data
…
Text Editing Buffer
debug
production File DC
Character Set DC
Working SetManagement DC
Debugging Code
read
write
read
writename
status
contents
Структуралне парадигме — пример
Class
[state]
fields Methods
… run time
…
[type]
инстанција концепта парадигме класа
23В. Вранић — Мултипарадигамски дизајн са моделирањем особина
Односне парадигме — пример
ASCII
Character Set
UNICODE
…
replace data
File…
read
write
Unix File
Database yield data
save file
number of characters
number of lines
cursor position
load file
Working Set Management
Whole file
Whole page
LRU fixed
yield data replace data
yield data
replace data
yield data
replace data
…
Text Editing Buffer
debug
production File DC
Character Set DC
Working SetManagement DC
Debugging Code
read
write
read
writename
status
contents
Inheritance
base type implements
subtype
extends
Class Interface Aspect
Class Interface Aspect
24В. Вранић — Мултипарадигамски дизајн са моделирањем особина
Односне парадигме — пример
ASCII
Character Set
UNICODE
…
replace data
File…
read
write
Unix File
Database yield data
save file
number of characters
number of lines
cursor position
load file
Working Set Management
Whole file
Whole page
LRU fixed
yield data replace data
yield data
replace data
yield data
replace data
…
Text Editing Buffer
debug
production File DC
Character Set DC
Working SetManagement DC
Debugging Code
read
write
read
writename
status
contents
Inheritance
base type
subtype
extends
Class
Class
25В. Вранић — Мултипарадигамски дизајн са моделирањем особина
Програмски код
class TextBuffer {public: yield(...) {...}; replace(...) {...};
loadFile(...) {...}; saveFile(...) {...};
private: int numLines, numChars, curPosition;. . .}
class WholeFileTextBuffer extends TextBuffer {public: WholeFileTextBuffer(File f, CharacterSet c) {...};
yield(...) {...}; replace(...) {...};. . .}. . .
26В. Вранић — Мултипарадигамски дизајн са моделирањем особина
Поступак при трансформационој анализи
• Пресликавање на структуралне парадигме• Пресликавање на односне парадигме
– узети у обзир и анализу зависности променљивог
• Апликација метода специфичних за парадигме (ако је потребно)
• Трансформација пресликавања у програмски код
27В. Вранић — Мултипарадигамски дизајн са моделирањем особина
Закључна запажања
• Парадигме у малом– могу се јасно дефинисати
– боља основа мултипарадигамског развоја софтвера
• Моделирање особина– омогућава комплекснији а прегледнији опис домена од
првобитне нотације мултипарадигамског дизајна
– полазна техника MPDFM, али и генеративног програмирања, што омогућава одлагање избора методе
• Трансформациона анализа у MPDFM
– једноставније поређење структура домена апликације и парадигми
28В. Вранић — Мултипарадигамски дизајн са моделирањем особина
Даљи рад
• Дорада парадигамског модела језика AspectJ
• Студија примене MPDFM, тј. MPDFM за AspectJ
• Развој CASE алата за MPDFM
– моделирање особина са особеностима MPDFM
– бележење резултата трансформационе анализе
– структурално упоређивање апликационих концепата с парадигмама
– генерисање програмског кода на основу резултата трансформационе анализе
• Даље информације o MPDFM:
http://www.dcs.elf.stuba.sk/~vranic
29В. Вранић — Мултипарадигамски дизајн са моделирањем особина
Моделирање особина и UML
• Обједињени језик моделирања (UML):– веома заступљен у моделирању не само софтвера
– проширив
• Разлика у односу на моделирање особина– UML захтева опредељење за механизам имплементације
приликом моделирања места промене
• Проширење UML-а моделирањем особина– коришћењем стандардних механизама (стереотипови,
ограничења и означене вредности)• концепти и особине као стереотип класе — неадекватно решење
– проширењем метамодела UML-а• без подршке у CASE алатима
30В. Вранић — Мултипарадигамски дизајн са моделирањем особина
Коришћена литератураT. S. Kuhn. The Structure of Scientific Paradigms. University of Chicago Press, Chicago, 1970.
R. W. Floyd. The paradigms of programming. Communications of the ACM, 22(8), Aug. 1979.
T. A. Budd. Multiparadigm Programming in Leda. Addison Wesley, 1995.
J. O. Coplien. Multi-Paradigm Design for C++. Addison-Wesley, 1999.
K. C. Kang et al. Feature-oriented domain analysis (FODA): A feasibility study. Technical Report CSMU/SEI-90-TR-21, Software Engineering Institute, Carnegie Mellon University, Pittsburgh, USA, Nov. 1990. http://www.sei.cmu.edu/domain-engineering/FODA.ps.
K. Czarnecki, U. Eisenecker. Generative Programming: Principles, Techniques, and Tools. Addison-Wesley, 2000.
Xerox PARC. AspectJ home page. http://aspectj.org.
E. Gamma et al. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1995.
D. Battory and B. J. Geraci. Composition validation and subjectivity in GenVoca generators. IEEE Transactions on Software Engineering (special issue on Software Reuse), Febr. 1997. http://www.cs.utexas.edu/users/schwartz.
I. Stanojević, D. Surla. Uvod u objedinjeni jezik modeliranja. Grupa za informacione tehnologije, 1999.
Шири списак литературе и детаљније о MPDFM:V. Vranić. Towards multi-paradigm software development. To appear in Journal of Computing and
Information Technology (CIT). 2001.
V. Vranić. AspectJ paradigm model: A basis for multi-paradigm design for AspectJ. In J. Bosch, editor, Proc. of 3rd International Conference on Generative and Component-Based Software Engineering (GCSE 2001). LNCS 2186, Erfurt, Germany, Sept. 2001. Springer.
V. Vranić. Multi-paradigm design with feature modeling. March 2002. Submitted to 6th East Eauropean Conference on Advances in Databases and Information Systems (ADBIS 2002).