Wednesday, October 14, 2015

What is Software Engineering?

We defined software engineering as the technological discipline concerned with the systematic and quantifiable approach to the development, production, operation, and maintenance of software products that are developed and modified on time and within cost estimates. It’s is an application of “pure engineering” to software.

Software engineering is a rapidly-evolving professional discipline. It’s actually a young discipline compared with other engineering disciplines. It’s based on the foundation of computer science, management science, communication skills, economics, and the engineering approach to problem solving. It’s main concerns are software quality, increased productivity and increased job satisfaction for IT and companies.

It was in the 1960s that the need for systematic approaches to development and maintenance of software systems became apparent and increasingly important. Since that, significant advances and breakthrough have occurred in almost all areas of software engineering- analysis techniques have been developed, methodical approaches to software design have evolved, implementation techniques have been improved, and new programming languages have been developed and introduced.

Why is Software Engineering so Important? 
Software is everywhere, from smartwatch to a very large, highly complex ballistic missile defense systems. Software has rapidly become the main driving force for innovation and development of industries such as the automotive industry, banking industry, the computer industry, the defense industry, the manufacturing industry and the software industry itself. It has been an overriding component and a main driving force in terms of cost, productivity and complexity.

In software engineering, we study and learn how to build good and reliable software, we also learn how to properly maintain it in a controlled and more predictable way. In order to develop a good software product, user needs and constraints must be determined, goal must be clearly defined , the product should be designed to accommodate users and maintainers, the source code must be thoroughly tested, supporting documents such as users guide, installation instructions and maintenance documents must be prepared and fully implemented.