Software Engineering is and will be the backbone and driving force behind the technological advancements that we enjoy and that will lead us to greater realms of information and knowledge management. Its good for us to refresh our basics and foundations.
Software Engineering is a discipline which was conceptualized, developed and is constantly reviewed for planning, modeling, design, development, implementation and enhancement of software systems. Software Engineering has an integrated tool-set of technical and managerial aspects in identifying, planning and execution of software projects. The technical aspects correspond to computer hardware, software on which the software system is setup. The managerial aspects correspond to the various software project management activities undergone to control and coordinate the technical activities of the continuous software process life cycle. It involves planning the software project and the required project team and its structure, project cost estimation, assignment of jobs to project teams, control and coordinate the project execution, plan implementation and test strategies, software product hand over and live installation, software product assistance, enhancement and support activities.
The mapping between the analysis model and the reality being modeled – i.e. – a real problem being modeled as an analysis model which tries to solve the problem, represents the degree of intellectual distance between the real problem and its actual automated solution provided by the modeled software system. Now the efforts of Software Engineering would be to reduce this intellectual distance between the real problem in a system and its computerized solution as a software system.
Software Engineering involves every aspect of software development life cycle like planning, analysis, modeling, design, verification and validation, implementation, testing, documentation, installation, maintenance/enhancement and most importantly software project management which controls and coordinates the above activities.
One of the primary goals of Software Engineering is to improve the quality of software products and to increase the productivity and job satisfaction of software engineers. Software Engineering applies the traditional Engineering problem solving techniques for project planning, project management, systematic analysis, methodical design, careful fabrication, extensive validation and continuous software product enhancements.