About Me
Top Posts
-
Recent Posts
Categories
- Agile
- AOP
- Cloud Computing
- Data Mining
- Design Patterns
- Efficacy
- Gamification
- Hiring
- IASA Israel
- OOD
- OOP
- Programming
- Psychology of Programming
- Recommender Systems
- Refactoring
- Requirements Specification
- Research
- Social Networks
- Software Architecture
- Software Evolution
- Software Reuse
- TDD
- Web Development
- Yahoo!
Tag Cloud
Archives
- May 2013
- April 2013
- March 2013
- February 2013
- January 2013
- December 2012
- November 2012
- October 2012
- September 2012
- August 2012
- July 2012
- June 2012
- May 2012
- April 2012
- March 2012
- February 2012
- January 2012
- December 2011
- November 2011
- October 2011
- September 2011
- August 2011
- July 2011
- June 2011
- May 2011
- April 2011
- March 2011
- February 2011
- January 2011
- December 2010
- November 2010
- October 2010
- September 2010
Blogroll
Blog Stats
- 36,471 hits
Meta
Goodreads
No data found
Category Archives: OOP
On Information Hiding and Encapsulation
This month I participated in IBM Haifa’s Programming Languages and Software Engineering (PLSE) Seminar. There I had the opportunity to have lunch with David Parnas, one of the world pioneers in the field of Software Engineering. Parnas is the father … Continue reading
An Event-Driven Approach for the Separation of Concerns
Last week I presented a paper at the International Conference on Evaluation of Novel Approaches to Software Engineering (ENASE 2012), at Wroclaw, Poland. Title: “An Event-Driven Approach for the Separation of Concerns” Abstract: “This paper presents an event-driven approach for … Continue reading
Separation of Concerns
The most important principle in Software Engineering is the Separation of Concerns (SoC): The idea that a software system must be decomposed into parts that overlap in functionality as little as possible. It is so central that it appears in … Continue reading
Posted in AOP, Design Patterns, OOD, OOP, Software Reuse
Tagged AOP, Design Patterns, OOD, OOP, Software Reuse
4 Comments
Who is an Expert? – On Rules and Exceptions
It is relatively easy to find very young people who are brilliant programmers, who seem to know every detail about a particular language, platform or technology. Some of them will be able to implement a nice Android app in a … Continue reading
Divide-and-Conquer: Coping with Complexity
Sometimes a problem is simply too complex for us to solve. Our only chance seems to be breaking it into smaller parts that we know how to deal with. This strategy of reducing the complexity of a problem by dividing … Continue reading
Inheritance and the Power of Abstraction
Programming is an exercise in abstraction. If a program is intended to solve some problem, we must first be able to model this problem in an abstract way, in order to express it in a programming language. Only after the … Continue reading
The Liskov Substitution Principle and Test-Driven Development
The Substitution Principle, first defined by Barbara Liskov, says that: “Let q(x) be a property provable about objects x of type T. Then q(y) should be true for objects y of type S where S is a subtype of T.” … Continue reading
When a square is not a rectangle
In my previous post, I’ve used the example of squares and rectangles to illustrate the importance of definitions. It is clear that, from a geometric point-of-view, a square is indeed a kind of rectangle. However, as my friend Arnon has … Continue reading