Introduction
Software engineering is the process of applying engineering principals for developing good software. Software engineering is a layered technology.
The IEEE defines the term Software engineering. They define as, “The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software”. Software engineers are concerned with good software production. Software engineering is the sub-field of engineering that combines computer and management science. According to German scientist and professor, Fritz Bauer defines Software engineering in his own words. He explain as, “The establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machine”.
The idea of applying software engineering is to avoid and reduce software crises. In the late 1960s most of the software failed. Applying a huge budget on software, it gets difficulty in management. The consumer has to pay very huge amount for the maintenance of the software. The reasons why the software fails are the old method, tools, strategies etc. applied for software development. Some reasons like increase in the requirement, complexity, frequent changes, etc. Developing software without a plan leads that product to the risk of getting crises. Lack of plans generates problem in reaching consumer demands.
To overcome this problem, software engineering principles are introduced. This creates easy on developing a product and satisfy the end-users. The software engineering includes software development methodologies and its development phases. Software development phases include requirement, design, plan, development, maintenance, security, testing etc. Software engineering often makes easier for developers or engineers. Applying this development approach software maintenance cost was reduced. Security was maintained properly. It helps in organizing the budget cost required for the development. It totally leads to the new era of software development.
Attributes software engineering
- Functionality
- Portability
- Changeability
- Dependability
- Efficient
- Usability
- Availability
- Maintainability
- Dependability and Security
Software development methodologies
- Waterfall Model
- Prototype Model
- Incremental model
- Agile Software Development
- Spiral Model
- DSDM (Dynamic System Development Model)
- Extreme Programming Methodology
- Rapid Application Development
- Feature Driven Development
- Lean Development
- Scrum Development
Characteristics of good software
Operational Characteristics
Accuracy: The developing software must meet the demands of the customer with great accuracy. Otherwise, it may cause problems while delivering the product.
Usability: The time required to understand how to use the system or product. Product must be designed for both educated and uneducated people to use it.
Integrity: Integrity of software provides quality service to the customers. It shows the trust of the software.
Reliability: The software must be reliable. The software must work correctly with the degree of accuracy.
Efficiency: Efficiency is the state of software being efficient. The software should use automatic memory management. The product or software must work in an efficient manner.
Security: The software must maintain its security. Due to the increase in malware, it may harm the system. Proper use of a security system must be used to eliminates that malware.
Revision Characteristics
Maintainability: The maintenance cost of the software must be low. It should be maintained easily.
Flexibility: Flexibility of the software should be able to adopt the changes made.
Scalability: The software must be scalable. It should be easy while upgrading or making software changes.
Testability: All the software should be tested carefully. The testing of the software should not be complex.
Transition Characteristics
Portability: Portability of software is able to run on cross-platform on any environment.
Interoperability: The software must be able to exchange the data and make use of information with other devices.
Reusability: The software code should be reusable. It means if the software gets damages the same code can be used to build the same software in a short period of time.
Software Development Life Cycle
Requirement Analysis
In this phase, the requirement for software development is gathered. This phase mainly focuses on planning and resource analysis. Requirement analysis defines the system requirement for software. It is the main part of the software development life cycle.
System Design
In this phase, the system to be developed is designed. The system is designed according to the requirements collected. System design helps in choosing good hardware and software. It often describes the structure of the system.
Development and Installation
As the design is completed, the developer starts to develop the software using the design. The software is developed on the base of the system architecture designed. This is the time consuming period.
System Testing
In this phase the software is tested. After the developer finishes coding the software testing is done. Testing helps to find out the errors in the system. There are certain testing members in a company who does testing. The system should go through different phases of testing like unit testing, system testing, integration testing…etc.
Deployment
After the testing is completed the next phase is deployment. In this phase, the software or product is launched. The product is given to the end-users and receives feedback. If the system requires certain changes the developing team upgrades immediately with new features.
System Maintenance
The developing team must fix the bugs and upgrade the system enhancements. Customers interact with the new system when released. Same time a new problem arises. System maintenance is taking and providing care of the system.