Introduction to Software Engineering
Software engineering is the engineering whose purpose is the cost-efficient evolution or development of system software. It involved the production of software from the initial stages of system description to maintaining the system after it has gone into use.
What is a software product?
Software products are not anything but software systems supplied to customers or clients with testimonials that describe how to install and use the system. In specific cases, software products could be part of system products where hardware along with software is given to a customer.
Categories of software products -
Generic Products - Generic products are stand-alone systems that are developed and sold by a development organization and sold on the open market to any client who is able to purchase them.
Customized Products - Customized products are those products which is ordered by a particular client. Some developer develops the software for that client.
Characteristics of the software products
Software is developed or engineered rather than manufactured, in the classical sense - Whereas having several parallels, software development and hardware manufacture are two completely different proceedings. In both, high quality can only be done using good designs.
But there may introduce quality problems in the design phase of hardware, which are imaginary for software. They are both human dependent, but in both, the relationship between the people engaged and work completed is absolutely different.
Software doesn't wear out, but it does deteriorate (decline) - The comparatively high failure rates of hardware in its early life, which are frequently attributable to design or manufacturing defects. For a certain period of time defects are repaired and the failure rate drops to a steady-state level.
But as the time passes, the failure rate again rises due to the suffering of hardware components from the cumulative effects of dust, abuse, vibration, temperature extremes and many other atmospheric conditions. Directly, we can say the hardware begins to wear out.
Unlike hardware, software is flexible to atmospheric conditions. Early in the life of a program, undetected defects will cause high failure rates. Despite that, these defects are corrected, without raising other errors and the curve flattens.
Most software continues to be custom built. Although, however, the industry is moving toward component- based assembly - consider the approach in which the control hardware for a computer-based product is built. The engineer simply sketches a schematic of required digital circuitry, does some preliminary analysis for the sake of proper functioning assurance and then searches for the catalogs of digital components.
A software component is supposed to be designed and implemented such that it could be used in numerous different programs.
Software process models
Software Process - A software process is a series of activities, along with ordering constraints among them, so that if the activities are properly carried out and as per the ordering constraints, the desired outcome is produced. The desired outcome is the top quality software at low cost.
Models - A model is a pictorial generalization (abstract) including a group of logical and quantitative relationships between the Members of a group of variables or primitives. An essential reason behind constructing a model is that
There are different types of Software Process Models as follows:-
1. Linear Sequential Model or Waterfall Model - The waterfall model or the classic life cycle is occasionally called the linear sequential model. It indicates a systematic approach to software development that starts at the system level and passes through analysis, design, coding, testing and support .
The development stages of Linear Sequential Model or Waterfall Model -
Requirements Analysis and Definition - The system's constraints, services and goals are influenced by discussion with system users. After that they are defined and work as a system specification.
System and Software Design - The needs are divided by the system design process to moreover hardware or software systems. The system design process creates an overall process architecture. Software design contains identifying and describing the basic software system abstractions and their relationships.
Implementation and Unit Testing - In this phase the software design is thought to be a set of programs or program units. Unit testing includes verifying that each unit Satisfies its details.
Integration and System Testing - The single program units or programs are united and tested as a complete system to assure that the software requirements have been fulfilled. The software system is delivered to the customer after testing.
Operation and Maintenance - This is the longest life-cycle stage of development. In this phase the system is installed and used practically. Maintenance contains fixing errors which were not found in earlier stages of the life cycle, upgrading the implementation of system units and enhancing the system's service as new requirements are found.
Advantages of waterfall model
- Quite easy to understand the model.
- Each stage of the development proceeds in sequence.
- Approves administrative control where a schedule with deadlines is set for each stage of development.
- Assists in controlling schedules , budgets and documentation.
- Requirements of client need to be prescribed before the development proceedings.
- Changes of requirements in successive phases of the waterfall model cannot be done. This means that once an application is in the testing phase, it is complicated to join changes.
- No user participation and a working version of the software is available when the software is developed.
- Does not involve risk management.
2. Prototype Model
The main objective of the prototype model is to challenge the limitations of the waterfall model.
The basic idea of a prototype model is in place of freezing the requirements before any design or coding can proceed, a circular prototype is built to help to understand the requirements. The prototype model begins with requirements collecting. Developer and client come together and create the objectives of the software, identify the requirements known and outline areas where additional definition is necessary.
A "quick design " then happens. The quick design highlights on a representation of those Features of the software that Will be visible to the client or user. The quick design guides to the construction of prototype model . Then , the client analyzes the prototype and clarifies requirements for the software to be developed.
The prototype model works as a procedure for identifying software requirements. If a working prototype is made, the developer tastes to use existing program fragments or applies tools that enable working programs to be produced instantly.
Despite the fact that having some difficulties in its implementation, prototyping can be an effective model for software engineering. As a result of having its effectiveness, one should define the rules in the commencement (starting) for instance, both the customer and the developer must acknowledge that the prototype is created as a mechanism for defining requirements.
Prototyping is usually not used, because it is believed that development costs may be high.
Conclusion
By reading this article you have increased your knowledge of the important ideas in software development. Do you read that there is no single development process to fit the variation of user's requirements.