It is a systematization of the process of software development to ensure the best solution most economically. Its goal is to produce high quality software at low rate.
Software Engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation and maintenance of software. A typical software development project will need to go through the phase of Analysis, Design, Programming, Testing and Implementation. Software Project Management (SPM), Software Quality Assurance (SQA) and the use of Computer aided Software Engineering (CASE) would run parallel with the other phases and finally comes the maintenance phase. It is always said that more than 80% of the costs go towards maintenance of the software.
It is a step by step plan for implementing a method using certain tools and procedures. It often describes the entry criteria, exit criteria and checkpoint for each of the activities or components in software engineering. Some of the popular methodologies today are based on structure techniques or information engineering or object-oriented techniques. Methodology selection depends on the nature of the project, the type of application, the tools proposed to be used and the kind of controls and documentation that would be required.
Waterfall, Prototyping, Spiral, Rapid Application, Stepwise Refinement, Industrial and military standards, Assembly by reuse, Application generation, Continuous transformation and Knowledge based software automation are some of the popular methodologies.
What factors would influence the choice of model for software development?
It depends on the nature and size of application, whether it is an in-house development or development through an external agency, the availability of various tools and resources, time frame and budget, etc.
Who is Software Engineer?
A software engineer is someone who applied engineering principles in the co-operative development of software. A good software engineer should not only generate computer programs but also learn the skills to produce good documentation, database and operational procedures for the computer system. He should be well defined about the components or modules of software engineering.