Software Engineering Lecture 6 Vladimir Safonov, Professor, head of laboratory St. Petersburg...

7
Software Engineering Lecture 6 Vladimir Safonov, Professor, head of laboratory St. Petersburg University Email: [email protected] WWW: http://user.rol.ru/~vsafonov

Transcript of Software Engineering Lecture 6 Vladimir Safonov, Professor, head of laboratory St. Petersburg...

Page 1: Software Engineering Lecture 6 Vladimir Safonov, Professor, head of laboratory St. Petersburg University Email: v_o_safonov@mail.ru WWW: vsafonov.

SoftwareEngineering

Lecture 6

Vladimir Safonov,Professor, head of laboratory

St. Petersburg University

Email: [email protected]

WWW: http://user.rol.ru/~vsafonov

Page 2: Software Engineering Lecture 6 Vladimir Safonov, Professor, head of laboratory St. Petersburg University Email: v_o_safonov@mail.ru WWW: vsafonov.

(C) Vladimir O. Safonov, 2004 2

Object-oriented programming.History of C++ (1/2)

• 1979, Oslo, Norway – B. Stroustrup is an intern at Norway Computing Center; his subject is research on the SIMULA-67 compiler. Idea of extensing C by SIMULA classes

• Inefficiency of garbage collection, etc. => B. Stroustrup comes to the conclusion on replacing the object reference model by the “container” approach, for efficiency reasons

• “C with classes” – 1979

Page 3: Software Engineering Lecture 6 Vladimir Safonov, Professor, head of laboratory St. Petersburg University Email: v_o_safonov@mail.ru WWW: vsafonov.

(C) Vladimir O. Safonov, 2004 3

Object-oriented programming.History of C++ (2/2)

• 1984: AT & T got interested in the new approach; commercial support of the project. The language is announced as C++. The first 5,000 users

• 1989 – new version of C++: exceptions; references; templates

• 1993 – yet another version of C++: namespaces, RTTI• (Only in) 1997 – the ANSI standard of C++ issued• The C++ standard committee : 70 people• Turbo C++ (Borland) – 1990• Visual C++ (Microsoft) – 1990s

Page 4: Software Engineering Lecture 6 Vladimir Safonov, Professor, head of laboratory St. Petersburg University Email: v_o_safonov@mail.ru WWW: vsafonov.

(C) Vladimir O. Safonov, 2004 4

Object-oriented programming

• The Smalltalk language (Xerox PARC) – 1972 – 1980

• The Eiffel language (Dr. Bertrand Meyer, 1985) – classes; objects; Design-by-Contract paradigm

public double Remainder (int x, int y)

require y > 0;

return (x mod y);

ensure Remainder(x, y) == x mod y;

end Remainder;

Page 5: Software Engineering Lecture 6 Vladimir Safonov, Professor, head of laboratory St. Petersburg University Email: v_o_safonov@mail.ru WWW: vsafonov.

(C) Vladimir O. Safonov, 2004 5

Pitfalls of OOP

• Conceptual explosion

• Unpredictable behavior, due to development on top of a VERY deep tree of other classes

• Implementation inheritance – a way to break encapsulation (what to do? – replace it by “interface inheritance” only – Dr. J. Gosling)

• Knowledge, generally speaking, is not limited to taxonomies only (in general, semantic nets required)

• Some concerns cannot be implemented by a “generalized procedure” only

• Post Object Programming (POP) techniques needed

Page 6: Software Engineering Lecture 6 Vladimir Safonov, Professor, head of laboratory St. Petersburg University Email: v_o_safonov@mail.ru WWW: vsafonov.

(C) Vladimir O. Safonov, 2004 6

Aspect-oriented programming (AOP)

• Common concerns and cross-cutting concerns

• Prof. Adolph L. Fouxman (Rostov University, 1979): the vertical cut technology – the predecessor of AOP

• 1995, Xerox PARC: Gregor Kichales & his team – basic notions of AOP; first release of AspectJ – an AOP tool to support AOP Java extension

• Fall of 1990s, IBM Research: HyperJ – multi-dimensional separation of concerns; another AOP Java extension

• A lot of other AOP tools – ANGIE, AMT, … Aspect.NET

Page 7: Software Engineering Lecture 6 Vladimir Safonov, Professor, head of laboratory St. Petersburg University Email: v_o_safonov@mail.ru WWW: vsafonov.

(C) Vladimir O. Safonov, 2004 7

Home task to lecture 6

• Please try to formulate the best features and the issues of OOP