Software engineering is the process of systematic application of different engineering approaches to develop software. The engineering approach applied in software is equivalent to the approach taken across all other engineering disciplines. Engineering approaches in software include user requirement identification, design of software, software development, quality assurance and maintenance.

Sharing ideas via human interaction is critical to any engineering discipline and engineering teams use different methods to ensure a successful thought transfer process amongst stakeholders. …

Dependency Inversion Principle (DIP) is a technique used in Object Oriented Programing paradigm. The pattern was surfaced by Robert Martin (Uncle Bob) around 1994. Dependency Inversion is one of the five principles in SOLID. Before digging into DIP, it is good to understand what are Dependency Injection (DI) and Inversion of Control (IoC). Engineers tend to misinterpret DIP, DI and IoC as the same. DI and IoC are used in tandem with DIP.

As per Brett L. Schuchert (text)1, DI is about how one object knows about another, dependent object.” When an object needs to send an SMS after some…


Software development is still a human art. One or two developers cannot develop a sizable software. A successful significant software development needs properly working teams. Therefore in a product development company, the team organisation is one of the decisive factors.

Teams are responsible for creating outcomes (deliveries). At the same time, the teams must up-keep the quality of the outcomes (ownership). Therefore, deciding the team organisation based on software delivery and software ownership is a must-win challenge to a company.

Agile Software Development

Agile software development has brought various optimisations to software delivery. Most successful software development companies follow different forms of agile.

How would you come up with an estimate to convert a fairly large legacy application to modern technology? As empirical studies show us, there are different ways of estimating software application development efforts. But the real question is how we should use those techniques to estimate projects of above nature. What I know is you should be prepared with additional information and use different estimation techniques in combination or in isolation to come up with an estimation. This blog discusses the blogger’s view of this process. It is highly open for criticism.

The very first preparation of the estimation team…

Lahiru Karunatilake


Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store