Advance Software Engineering – Software Complexity and Object Model

Monday, June 2, 2008

Last week ASE lecture was interesting passage of time where the lecture expanded from fundamental to the advanced theories enhancing the knowledge of the students on software engineering, OOA and OOD. There we got some useful points some which we were not having a clear idea to areas we needed to put our focus on. Following is a recap of the lecture.

Object Oriented Programming (OOP)

OOP is an approach to programming which involves the creating of abstracted code pieces/objects designed to interact with each other.The main concept lies with the "Object" to represent the required entities, their interactions and "Classes" or blueprints for object creation.
Few advantages of OOP
  • Permit reusability
    - Inheritance
    - Polymorphism
  • Ease maintainability
  • Secure and Robust
  • Simplicity
  • Extendibility (Scalable)
  • Cost effective

Why software engineers are paid more than other engineering fields?

Rather than other engineering fields the “Software Engineer” has to deal with different domain knowledge with unique set of constrain parameters and able to produce a system which can improve the productivity and efficiency or innovate to capture new value and all these in a dependable responsible manner.

Software development paradox

We have discussed some of the reasons for the complication for the software development process. Software development has been, is, and remains hard due to number of factors.

>>The complexity of the problem domain
Software is developed on variety of domains which involve humans to machine having different prospects of the system. So understanding the problem domain which sometimes alien to the software engineers in a short period of time with other practical restrictions is hard. And the outcome have high expectation and success of a well working system to match the client expectations is difficult.

>>Flexibility aspect of software
Software is much flexible than other tangible engineering outcomes, so the expectations of changing particular requirements is expected. But when accomplishing it shouldn’t harm the other functionality of the system like introducing new buys etc.

>>Difficulties of management
Software is intangible, so monitoring and estimating the progress is difficult (tricky).

>>Impedance mismatch
The user wants/requirements mismatch with the developer understanding of the system which lead to lack of satisfaction of the software. The client may not aware what they want or the developers doesn’t understand what is expected can lead to chaos.

>>Contradictory requirements
Sometimes due to the lack of knowledge to communicate it can lead to contradicting situations which will be not achievable. Maybe the client wants something which can somehow leads to difficulties for the entire system that he may wants.

>>Non-functional requirements
Performance, scalability, usability, reliability and cost like factors which maybe not having a clear understanding can play a major role in the development which incase can lead to contradictions on different parameters such as cost, time and scope.

Factors affection software.

Complexity factors:

Change is unavoidable.

Incrementally changes do not change inherent complexity.

Aggressive refactoring tends to slow down that tendency

Object Model

TheThe object oriented programming concept based on modeling things as objects and using its interactions to interpret real world elements and their behaviors.

OOD revised

The method of designing a software system that leads to object oriented breakdown by using different notations to express different models of the logical and physical design of the system.


In the lecture we talked about one of the most important aspect of OOP, abstraction. It is a concept that emphasizes the essential commonalities of entities while ignoring distinctions. We understood the complexities of understanding the specific features from abstract common feature and how it is useful but difficult to distinguish from a set of objects.


Complex systems are made up of smaller sub systems which can be represented in hierarchical manner and we can go level by level in detail. These sub system can have sub system within and again we can decompose a complex system in to parts.

Prageeth Kumara - 044025