Software engineering (SE) is the study of the application of organized scientific approach used for designing, developing, integrating and maintaining software. This engineering study explains the methods, procedures and tools used for professional software development. The origin of this engineering term dates back to NATO Software Engineering Conference which was held in 1968, aiming to deal with the potential software crisis. This was the first step towards the development of modern world which eventually led to huge benefits to mankind. Indeed Software Engineering practices have done wonders in our lives and today, we are enjoying this fruit of technology by just one click, every minute every second.
Software engineering is prone to many challenges; issues and threats. But to deal with these issues we must also realize the importance of Software Engineering. Being a dominant factor with regards to cost and a driving force for a project’s success, software engineering practices make a significant difference. Technology is among the greatest factors for an economy’s stability and success. Software engineering includes a combination of both hardware and software. The GNP of almost all the developed economies of the world shows a significant resource allocation for Software engineering, as almost every system is soft controlled whether it is defense, education, health or infrastructure.
The key issues include heterogeneity, delivery and trust. Heterogeneity means that the quality of the software systems is varied being non comparable in kind. Delivery refers to the time to market and deliver quality software which is undoubtedly essential. Trust is the capability to gain trustworthiness from the end user regarding the software usage.
Cost estimation is another potential issue which is really difficult to control. There is an ever increasing threat with regards to design and management of software projects, arising due to systems’ intricacy.
The market demand for Software engineers is much higher in comparison to human resource availability. The need of the hour is to encourage software engineers and provide them more and more opportunities to discover the field.
Another issue Software engineering is facing relates to Legacy systems. It refers to maintaining and updating the old and outdated software systems. It can be met by managing well the ever increased demand, delivery and diversity of the software. In the same connection, Software engineering industry should strive hard to bridge the gap between theory and practice. A consensus is urgently required. CHASE (Challenges and Achievements in Software Engineering) initiative is doing great to “contrast an industrial perspective with an academic perspective, to appreciate past achievements and to identify future issues and concerns.
Despite of all these mentioned issues, Software Engineering industry is constantly developing and gearing up to make things better.