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)
- Permit reusability
- Ease maintainability
- Secure and Robust
- 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).
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.
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.
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.
Change is unavoidable.
Incrementally changes do not change inherent complexity.
Aggressive refactoring tends to slow down that tendency
TheThe object oriented programming concept based on modeling things as objects and using its interactions to interpret real world elements and their behaviors.
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