OO for Large Systems: Is it sufficient? Is it necessary?

OO for Large Systems: Is it sufficient? Is it necessary?

Postby Cuchulainn » Sat Oct 06, 2007 5:52 pm

When embarking on the analysis of a large project, it is suicide to start thinking about objects and classes - they are too fine-grained - but they are very useful during detailed design and implementation.



Objects are also very very context sensitive (e.g. model a Frog in C++, what are its data and functions). This makes them very volatile.



OO started in the 90's big time but the community ignored what went before (SA methods, decomposition, Ed Yourdon, Tony de Marco). I use both OO and SA in my applications now. Works well. You should never throw out the child with the bath water.



And CS education has not focused on this aspect of IT; maintaining code, engineering and incremental improvement (as in real life). It is probably duller than writing lambda functions in Haskell.



A vital artefact in design is the component with its interfaces. And then combine it with the 'big' POSA/Domain Architectures patterns (not just GOF), for example PAC, Blackboard.



For small projects (1-2 man stuff, 30-40 classes, local systems) OO is fine, but when things change it becomes difficult.



For the record, these conclusions are based on almost 20-30 years with OO and its applications in the real world. And I use OO on a daily basis since many years I even wrote a book on Domain Architectures





Quote



--------------------------------------------------------------------------------

here the different techniques...

Appendix 3. Relationships with other models and methodologies

A3.1 Introduction

A3.2 Information hiding and the work of David Parnas

A3.3 The Rummler-Brache approach

A3.4 Michael Jackson's problem frames

A3.5 The Hatley-Pirbhai method

A3.6 The Garlan and Shaw architectural styles

A3.7 System and design patterns

A3.8 The Unified Modelling Language (UML)

A3.9 Viewpoint-based requirements engineering

Appendix 4. The 'Hello World' example: the Simple Digital Watch (SDW)

--------------------------------------------------------------------------------
User avatar
Cuchulainn
 
Posts: 676
Joined: Mon Dec 18, 2006 2:48 pm
Location: Amsterdam, the Netherlands

Postby Cuchulainn » Fri May 21, 2010 10:56 am

Here is a presentation on how objects are modelled in cognitive science.



The attribute-based OO languages such as C++ won out in the early 90's against more flexible mixin-based languages.



This is with the Visitor pattern is so powerful; it enables context sensitive classes (Explanation-based View). C# 4.0 has its extension methods.



We here have used Visitor in CAD graphics apps since 1993.



So end results is large monolithic Frege-based class libraries.



What was sub-optimal IMO was



No top-down decomposition

Implementation inheritance instead of interfaces

Too much static inheritance (of data)

Not enough dynamic inheritance (aka delegation)





Comments welcome
Attachments
2.3 Inheritance, Generalisation.ppt
(124.25 KiB) Downloaded 598 times
User avatar
Cuchulainn
 
Posts: 676
Joined: Mon Dec 18, 2006 2:48 pm
Location: Amsterdam, the Netherlands


Return to Design Patterns

Who is online

Users browsing this forum: No registered users and 1 guest

cron