Мултипарадигамски дизајн са моделирањем особина

30
В. Вранић — Мултипарадигамски дизајн са моделирањем особина Мултипарадигамски дизајн са моделирањем особина Валентино Вранић [email protected] Катедра за информатику и рачунарску технику Факултет електротехнике и информатике Словачки технички универзитет у Братислави Факултет организационих наука Универзитета у Београду, 26. март 2002.

Upload: bud

Post on 19-Jan-2016

50 views

Category:

Documents


0 download

DESCRIPTION

Факултет организационих наука Универзитета у Београду, 26. март 2002. Мултипарадигамски дизајн са моделирањем особина. Валентино Вранић [email protected] Катедра за информатику и рачунарску технику Факултет електротехнике и информатике Словачки технички универзитет у Братислави. Увод. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Мултипарадигамски дизајн са моделирањем особина

В. Вранић — Мултипарадигамски дизајн са моделирањем особина

Мултипарадигамски дизајн

са моделирањем особина

Валентино Вранић[email protected]

Катедра за информатику и рачунарску технику

Факултет електротехнике и информатике

Словачки технички универзитет у Братислави

Факултет организационих наука Универзитета у Београду, 26. март 2002.

Page 2: Мултипарадигамски дизајн са моделирањем особина

2В. Вранић — Мултипарадигамски дизајн са моделирањем особина

Увод

• Различите парадигме програмирања (развоја софтвера):– парадигма објектно-оријентисана, процедурална,

функционална, логичка, аспектно-оријентисана, агентно-оријентисана…

– нису једнозначно дефинисане

• Програмски језици и парадигме– програмски језик подржава једну или више парадигми

• Комбиновање различитих парадигми– мултипарадигамски језици

• Шта је парадигма програмирања (развоја софтвера)?

Page 3: Мултипарадигамски дизајн са моделирањем особина

3В. Вранић — Мултипарадигамски дизајн са моделирањем особина

Преглед предавања

Појам парадигме у развоју софтвера

Ка мултипарадигамском развоју софтвера

Мултипарадигамски дизајн

Мултипарадигамски дизајн са моделирањем особина

Закључна запажања и даљи рад

Page 4: Мултипарадигамски дизајн са моделирањем особина

4В. Вранић — Мултипарадигамски дизајн са моделирањем особина

Парадигма

• Научне парадигме: Thomas Kuhn — The Structure of Scientific Revolutions, 1970.– научне парадигме се мењају револуцијом, а не еволуцијом

– концепт донекле применљив и на парадигме програмирања

• Лингвистика– пример конјугације или деклинације

• Значење речи– пример, поређење, узор

Page 5: Мултипарадигамски дизајн са моделирањем особина

5В. Вранић — Мултипарадигамски дизајн са моделирањем особина

Парадигме програмирања

• Robert W. Floyd — The Paradigms of Programming, 1978.– налази сличности са научним парадигмама (Kuhn)

• међусобно неразумевање припадника различитих парадигми

– али игнорише разлике:• у нормалној науци парадигма је једна

• научне парадигме се мењају одједном (револуцијом, а не еволуцијом)

• J. O. Coplien — мултипарадигамски дизајн– Парадигма као процес развоја софтвера

• парадигма у великом

– Парадигма као конфигурација заједничког и променљивог• парадигма у малом

Page 6: Мултипарадигамски дизајн са моделирањем особина

6В. Вранић — Мултипарадигамски дизајн са моделирањем особина

Програмски језици и парадигме

• Језичка конструкција– пример: класа у језику AspectJ

• Парадигма у малом– пример: класа

• Парадигма у великом– пример: објектно-оријентисано програмирање

Page 7: Мултипарадигамски дизајн са моделирањем особина

7В. Вранић — Мултипарадигамски дизајн са моделирањем особина

Ка мултипарадигамском развоју софтвера

• Објектно-оријентисано програмирање– више дефиниција

– често се примењује с другим парадигмама (најчешће са процедуралним програмирањем)

• Аспектно-оријентисано програмирање– мултипарадигамско у основи

– везано за опште процедуралне приступе

• Генеративно програмирање– спаја више парадигми:

• инжењерство домена — domain engineering (нпр. FODA)

• објектно-оријентисано програмирање

• аспектно-оријентисано програмирање

• програмирање засновано на компонентама (нпр. GenVoca)

Page 8: Мултипарадигамски дизајн са моделирањем особина

8В. Вранић — Мултипарадигамски дизајн са моделирањем особина

Мултипарадигамски приступи

• Комбиновање парадигми– стварање програмских језика и окружења која подржавају

употребу више парадигми (нпр. Leda, Intentional Programming)

• Избор парадигме– метапарадигма

– дизајн је флексибилнији ако се употребе адекватна средства

Page 9: Мултипарадигамски дизајн са моделирањем особина

9В. Вранић — Мултипарадигамски дизајн са моделирањем особина

Мултипарадигамски дизајн

• Multi-paradigm design (for C++), J. O. Coplien• SCVR анализа

– Scope, Commonality, Variability, and Relationship analysis

– анализа домена

• Инжењерство домена (domain engineering)– породица система

– анализа домена апликације (проблема)

– успостављање модела домена

Page 10: Мултипарадигамски дизајн са моделирањем особина

10В. Вранић — Мултипарадигамски дизајн са моделирањем особина

Процес мултипарадигамског дизајна

• Анализа домена апликације– домен апликације, проблема

– декомпозиција у поддомене

– анализа зависности променљивог (дијаграми зависности променљивог)

• Анализа домена решења– домен решења — програмски језик, али и друга средства

(нпр. обрасци дизајна, design patterns)

– парадигме — конфигурације заједничког и променљивог

• Трансформациона анализа– пресликавање домена апликације на домен решења

Page 11: Мултипарадигамски дизајн са моделирањем особина

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 )

Page 12: Мултипарадигамски дизајн са моделирањем особина

12В. Вранић — Мултипарадигамски дизајн са моделирањем особина

Мултипарадигамски дизајн са моделирањем особина — MPDFM

• Примена прилагођеног моделирања особина уместо SCVR анализе

• Домен апликације и решења у облику модела особина• Домен — концепт• Трансформациона анализа — тражење инстанција

парадигми које одговарају концептима домена апликације

• Примена MPDFM: MPDFM за AspectJ– AspectJ — аспектно-оријентисани језик заснован на језику

Java, развијен у Xerox PARC

Page 13: Мултипарадигамски дизајн са моделирањем особина

13В. Вранић — Мултипарадигамски дизајн са моделирањем особина

Моделирање особина (1)

• Feature modeling• Техника концептуалног моделирања• Примењује се у инжењерству домена

– FODA — Feature-Oriented Domain Analysis• Software Engineering Institute

– Generative Programming• K. Czarnecki, U. Eisenecker

• Омогућава експлицитно моделирање заједничких и променљивих особина

• Дозвољене конфигурације променљивих особина одређују инстанције концепта

Page 14: Мултипарадигамски дизајн са моделирањем особина

14В. Вранић — Мултипарадигамски дизајн са моделирањем особина

Моделирање особина (2)

c

f1 f2 f3 f4

f5 f6 f7

Дијаграми особина– оријентисано дрвеће са

декорацијама грана

– корен = концепт,остали чворови = особине

– заједничке и променљиве особине

– места промене

Додатне информације о свакој особини

– Опис значења

– Разлог употребе

– Ограничења

– Мод везивања

Page 15: Мултипарадигамски дизајн са моделирањем особина

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

Page 16: Мултипарадигамски дизајн са моделирањем особина

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

Page 17: Мултипарадигамски дизајн са моделирањем особина

17В. Вранић — Мултипарадигамски дизајн са моделирањем особина

Анализа зависности променљивог• Дијаграми зависности променљивог

– могу се извести из модела особина

– помажу у:• идентификацији и обједињавању заједничких концепата

• идентификацији циркуларних зависности међу концептима

• Пример:– Дијаграм зависности бафера за едитацију текста

Text Editing Buffer

FileCharacter

Set

Debugging Code

Working Set Management

Page 18: Мултипарадигамски дизајн са моделирањем особина

18В. Вранић — Мултипарадигамски дизајн са моделирањем особина

Узајамно зависни домени

• Утичу на избор парадигме• Пример:

– Није могуће користити наслеђивање за сваку од три зависности на слици

A

C

B

C

A

B

C

A

B

C

A

C …

Page 19: Мултипарадигамски дизајн са моделирањем особина

19В. Вранић — Мултипарадигамски дизајн са моделирањем особина

Модел парадигми

• Корен дијаграма особина је концепт програмског језика

• Парадигме — концепти модела особина:– директно употребљиве

• везане директно за концепт програмског језика

– индиректно употребљиве• појављују се као подконцепти других парадигми

• Дубина модела– први ниво индиректно употребљивих парадигми

AspectJ

Aspect Interface Class Inheritance

Page 20: Мултипарадигамски дизајн са моделирањем особина

20В. Вранић — Мултипарадигамски дизајн са моделирањем особина

Трансформациона анализа

• Успостављање пресликавања по правилима моделирања особина

• Разлог употребе особине одређује када се особина прикључује концепту:– приликом пресликавања на њу

– приликом прикључења одређених особина (нпр. њених подособина)

• Два типа парадигми:– структуралне

– односне

Page 21: Мултипарадигамски дизајн са моделирањем особина

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]

Page 22: Мултипарадигамски дизајн са моделирањем особина

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]

инстанција концепта парадигме класа

Page 23: Мултипарадигамски дизајн са моделирањем особина

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

Page 24: Мултипарадигамски дизајн са моделирањем особина

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

Page 25: Мултипарадигамски дизајн са моделирањем особина

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(...) {...};. . .}. . .

Page 26: Мултипарадигамски дизајн са моделирањем особина

26В. Вранић — Мултипарадигамски дизајн са моделирањем особина

Поступак при трансформационој анализи

• Пресликавање на структуралне парадигме• Пресликавање на односне парадигме

– узети у обзир и анализу зависности променљивог

• Апликација метода специфичних за парадигме (ако је потребно)

• Трансформација пресликавања у програмски код

Page 27: Мултипарадигамски дизајн са моделирањем особина

27В. Вранић — Мултипарадигамски дизајн са моделирањем особина

Закључна запажања

• Парадигме у малом– могу се јасно дефинисати

– боља основа мултипарадигамског развоја софтвера

• Моделирање особина– омогућава комплекснији а прегледнији опис домена од

првобитне нотације мултипарадигамског дизајна

– полазна техника MPDFM, али и генеративног програмирања, што омогућава одлагање избора методе

• Трансформациона анализа у MPDFM

– једноставније поређење структура домена апликације и парадигми

Page 28: Мултипарадигамски дизајн са моделирањем особина

28В. Вранић — Мултипарадигамски дизајн са моделирањем особина

Даљи рад

• Дорада парадигамског модела језика AspectJ

• Студија примене MPDFM, тј. MPDFM за AspectJ

• Развој CASE алата за MPDFM

– моделирање особина са особеностима MPDFM

– бележење резултата трансформационе анализе

– структурално упоређивање апликационих концепата с парадигмама

– генерисање програмског кода на основу резултата трансформационе анализе

• Даље информације o MPDFM:

http://www.dcs.elf.stuba.sk/~vranic

Page 29: Мултипарадигамски дизајн са моделирањем особина

29В. Вранић — Мултипарадигамски дизајн са моделирањем особина

Моделирање особина и UML

• Обједињени језик моделирања (UML):– веома заступљен у моделирању не само софтвера

– проширив

• Разлика у односу на моделирање особина– UML захтева опредељење за механизам имплементације

приликом моделирања места промене

• Проширење UML-а моделирањем особина– коришћењем стандардних механизама (стереотипови,

ограничења и означене вредности)• концепти и особине као стереотип класе — неадекватно решење

– проширењем метамодела UML-а• без подршке у CASE алатима

Page 30: Мултипарадигамски дизајн са моделирањем особина

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).