Introduction To Software Engineering :
- Generic – That means developed to be sold to a range of different customers.
- Custom – That means developed for a single customer according to their specification.
What is software engineering ?
Software engineering is a discipline in which theories, methods and tools are applied to develop professional software product.
In software engineering the systematic and organized approach is adopted. Based on the nature of the problem and development constraints various tools and techniques are applied in order to develop quality software.
- Discipline – For finding the solution to the problem an engineer applied appropriate theories, methods and tools. While finding the solutions, engineers must think of the organisational and financial constraints. Within these constraints only he/she has to fine the solution.
- Product – The software product gets developed after following systematic theories, methods and tools along with the appropriate management activities.
- Differentiate between software engineering and computer science
Difference between system engineering and software engineering
- Hardware development.
- Various policies that need to be adopted while developing the product.
- Design process.
- Deployment of the software in the desired system.
The specification of all the system components as well as the system architecture has to be done by the System Engineer.
Concept of Software Process
The software process can be defined as the set of activities that has to be carried out in order to get the software product.
- Software specification is generally a document in which customer and the software developer define the purpose and use of the software product that is to be developed. In this specification, it is necessary to specify various constraints on operation of the software.
- Software development : It is a core process in which the required software is built.
- Validation : After developing the software product it is necessary to check the software in order to validate it.
- Software evolution : Sometimes there are major changes on organisational or technological front and in such a situation the existing software product needs to be changed. Sometimes due to market demands the software has to be modified.
Software Process Model
(components) of the system are developed. There is no need to develop the complete new system from the part.
Cost in the Software Engineering
Methods used in Software Engineering
Automate the Software Process (or) What is CASE
Challenge in Software Engineering
- Coping with legacy system. Old, valuable system must be maintained and updated. Hardware is evolved faster than software. If original developer have moved on managing, maintaining or integrating of software becomes a critical issue.
- Heterogeneity challenge. Sometimes system are distributed and include a mix of hardware and software. This implies that software system must cleanly integrate with other different software systems, built by different organizations and teams using different hardware and software platforms.
- Delivery time challenge. There is increasing pressure for faster delivery of software. As the complexity of system that we develop increases, this challenge becomes harder.
As software is an integral part of computer based systems, it is essential to apply software engineering principles and practices while developing software. Hence the main objective of software engineering is to adopt systematic, disciplined approach while building high quality software.
- Software is engineered, not manufactured – Software development and hardware development are two different activities. A good design is a backbone for both activities. Quality problems that occur in hardware manufacturing phase cannot be removed easily. On the other hand, during software development process such problems can be rectified. In both the activities, developers are responsible for producing qualitative product.
- Software does not wear out – In early stage of hardware development process the failure rate is very high because of manufacturing defects. But after correcting such defects the failure rate gets reduced. The failure rate remains constant for some period of time and again it starts increasing because of environment maladies
- On the other hand software does get affected from such environmental maladies. Hence ideally it should have an “idealized curve” But due to some undiscovered errors the failure rate is high and drops down as soon as the errors get corrected. Hence in failure rating of software the “actual curve” is as shown below.
- During the life of software if any change is made, some defects may get introduced. This causes failure rate to be high. Before the curve can return to original steady state another change is requested and again the failure rate becomes high. Thus the failure curve looks like a spike. The frequent changes in software cause it to deteriorate.
- Another issue with software is that there are no spare parts for software. If hardware component wears out it can be replaced by another component but it is not possible in case of software. Therefore software maintenance is more difficult than the hardware maintenance.
- Most software is custom built rather than being assemble from components. While developing any hardware product at first the circuit design with desired functioning properties is created. Then required hardware components such as ICs, capacitors, and registers are assembled according to the design, but this is not done while developing software product. Most of the software is costume built.
What are the goals/objectives of software engineering?
- Satisfy user requirements – Many programmers simply don’t do what the end user want because they do not understand user requirements. Hence it becomes necessary to understand the demand of end user and accordingly software should be developed.
- High reliability – Mistake or bugs in a program can be expensive in terms of human lives, money, and customer relation. For instance Microsoft has faced many problems because earlier release of windows has many problems. Thus software should be delivered only if high reliability is achieved.
- Low maintenance costs – Maintenance of software is an activity that can be done only after delivering the software to the customer. Any small change in software should not cause restructuring of whole software. This indicates that the design of software has poor quality.
- Delivery on time – It is very difficult to predict the exact on which the software can be completed. But a systematic development of software can lead to meet the given deadline.
- Low production costs – The software product should be cost effective.
- High performance – The high performance software are expected to achieve optimization in speed and memory usage.
- Ease of reuse – Use same software in different systems and software. Environment reduce development cost and also improve the reliability. Hence re-usability of developed software is an important property.