The main aim of software engineering is to develop reliable and efficient softwares. Software engineering is committed to delivering quality software. Software engineering focuses on software engineering models, software engineering documents, software engineering data, software engineering reports, software engineering forms using management techniques that ensure quality software.
Software engineering methods give methodology to develop software. These software engineering methods focus on analyses of software requirements, working on the design of the software, guidelines of program development, error check or quality check or testing of the developed software, and providing technical/non-technical support. Software engineering methods provide concepts, methods and principles emerging from different areas of technology to supervise software engineering models.
Software engineering provides analysis of information required in the development of software, projects required functionality of the software, behavioural design of expected and unexpected behaviour of software, providing detailed projections of interfaces to be developed, basic design of software, and validating software inputs and outputs.
Software engineering accomplishes three major tasks:
- Information Engineering
- Proper planning of software projects
- Conducting requirement analysis of software to be developed
Software engineering methods provide guidelines to be used to construct appropriate data structures, information required to implement details of the procedures, chalking out plans to develop software interfaces, using appropriate programming language to implement design patterns, and generating test procedures.
Software engineering lays stress on error correction and making changes as the software requirements changes. Software engineering also provide methods to support developed software:
- Correction: Finding errors is the main objective of software engineering. Errors are detected and removed appropriately.
- Adaptation: Requirement for which software is being developed is likely to change overtime. This change must be accommodated with time.
- Enhancement: With time software functionality may be increased. Thus software engineering provides methods that can be used to develop functionalities required later on.
- Prevention: With time the functionalities of the software deteriorates, to regain the functionality of the developed software there exists established reengineering methods.
Providing technical/non-technical support, telephonic support, and websites that provide online support are the essence of software engineering.
Software engineering support following activities:
- Tracking and the controlling of developed software
- Generating software technical reviews
- Ensuring quality of the developed software
- Managing software configuration
- Maintaining documentation of the software
- Attaining software reusability
- Having software measurement
- Managing risk management
To develop software a framework is developed. Framework defines activities that are used to develop software. Framework activities include collection of tasks, setting up of milestones, developing software products, setting up quality assurance checkpoints are the main activities of the framework.
Software engineering process has following steps:
- Initialization Software engineering is ad hoc in nature and its success achievement resides in the efforts of individuals.
- Repeatable software engineering focuses on cost of the software, schedule of the software, and required functionality of the software.
- Defined Activities of software engineering are well documented, attain a certain level of standard, and combine different software processes.
- Managed Software engineering processes and products are managed quantitatively. Measures are defined to manage software products and services.
- Optimization Functionality of the desired software is improved periodically based on feedback and testing outcomes.
The Software Engineering Institute has put stress on areas that need to be laid stress on. These arrears are:
- Objective – the need for which software has been developed must be achieved.
- Commitments – prerequisites to achieve the desired objective must be fulfilled.
- Abilities – software engineering procedures required to achieve commitments.
- Activities – tasks defined in software engineering methods to put stress on areas that need to be focused.
- Have an eye on implementation – software engineering specifies procedures that need to be used to check requirement implementation. on.
- Validating Implementation – software engineering has well established methods that can be used to evaluate and validate implementation of customer requirements.
Software must be developed using strategies defined by software engineering process, methods and tools. This software engineering strategy is termed as Software Engineering Paradigm. The model used to develop the desired software is selected based on the characteristics of the project, tools required to develop the desired project and control measures that need to be taken.
One of the models that is used in software engineering is linear sequential model. This is a systematic approach of software development that takes place at system level and goes through analysis, design, coding, testing and support.
The linear sequential model is the most used paradigm of software engineering.
Next model that is used in software engineering is the Prototyping Model. Prototyping models ensure software quality. Prototyping models begin by gathering requirements of the customer and then developing mock-ups and then testing developed mock-ups and if any error is found removing the mock-ups. This is a continuous process and goes on until final copy of the software is delivered to the customer.
Next model of software engineering is the Rapid application development model (RAD). RAD has a short cycle of software development. RAD models focus on component based development software and thus ensure rapid development of software.
RAD model has following phase:
- Business Modelling
- Data Modelling
- Process Modelling
- Application generation
- Testing and turnover
Next model of software engineering that ensures software quality is Evolutionary Software Process Models. This model is suitable for softwares that evolves over time. This model is suitable to meet deadlines set by customers.
Evolutionary approach of the software development is not considered in linear sequential model and RAD model. The Evolutionary Software Process Model is iterative in nature.
Next model supported by software engineering is the Incremental Model. In the incremental model core product is developed first. Then the core product is changed to meet the requirements of the customers. This is an iterative approach and used when available staff is less. Software development begins with a small team of developers. As the functionality of the software increases, the team of software developers increases. Technical risks are also managed in this model.
Software engineering provides a set of processes, methods and tools for computer software development. There exists different models in software engineering having their own application areas.