Introduction to Software Engineering
To be more specific, computer systems has revolutionized the manufacturing industries by the automating completing production and maintenance and thus turning out be the highly skilled labor in industries replacing human labor. Another area where computer systems marked its key role is communications, in this computer systems changed the complete phase of communications systems with its most effective computing solutions. This communication revolution in turn triggered the information revolution, which is the major breakthrough in the world.
Thus computer systems have their key role in transforming world from mechanized world to glossy technological world. This transformation is not constrained not only to various industries; instead this elevated the standards of the society in all the means.
Software application is extended to many diverse industries such as automobiles, air travel, consumer electronics, financial services, and mobile phones and is adding major value in domestic appliances, house construction, medical devices, clothing, social care, etc. Thus computer science stream has gained major focus of all the industry. Computer science can be defined at its best by the CSAB, 1997 as:
“Computer science is a discipline that involves the understanding and design of computers and computational processes. In its most general form it is concerned with the understanding of information transfer and transformation. Particular interest is placed on making processes efficient and endowing them with some form of intelligence.”
Recognizing the scope of software in future, a special branch called software engineering has evolved from computer science.
Definitions of Software Engineering
- Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software (IEEE, 1990).
- "The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software".
- "An engineering discipline that is concerned with all aspects of software production"
- "The establishment and use of sound engineering principles in order to economically obtain software that is reliable and works efficiently on real machines”- Fritz Bauer, a German computer scientist
- In the words of Prof. D.Vernon: Software engineering is the branch of systems engineering concerned with the development of large and complex software intensive systems. It focuses on:
- The real-world goals for, services provided by and constraints on such systems;
- the precise specification of system structure and behavior, and the implementation of these specifications;
- The activities required in order to develop an assurance that the specifications and real-world goals have been met;
- The evolution of such systems over time and across system families.
System software
The application software which acts as intermediary source that takes the request from the end user/ application software to be executed by the computer hardware called as system software. Ex: Compilers, operating system, drivers etc.
Application software
Application software is application oriented software designed to perform group of actions which are subset of a higher task. Application software interacts with the system software to get the user job done.
Ex: Adobe Photoshop, music players, etc.
Difference between system software and application software:
System Software | Application Software |
Installed when the operating system is installed on the computer | Installed as per the user requirements |
includes programs such as compilers, debuggers, drivers, assemblers | Includes media players, word processors, and spreadsheet programs. |
Users cant directly interact with the system software | Whereas user interacts gets his tasks done directly interacting with application software |
It works background | It works on foreground and interacts with the system software for few tasks to be executed |
A computer may not require more than one type of system software | while there may be a number of application software programs installed on the computer at the same time |
System software runs independently | Application software can’t run independent instead needs the coordination of system software |
Can directly interact with the computer hardware | Cant interact with the computer hardware |
Engineering/scientific software
This kind of software is a collection set of complex algorithms grouped to perform certain function like: simulation, automation, designing etc.
Ex: CAD, CAM, system stimulation, etc.
Embedded software
Designed to run on specific hardware and these are specific task oriented that run under the constrained memory and processing speed. Few embedded software are designed to interface and communicate with the devices, this sort of application are known as device drivers.
Product line software
This can be best defined by the Carnegie Mellon Software Engineering Institute defines a software product line as "a set of software-intensive systems that share a common, managed set of features satisfying the specific needs of a particular market segment or mission and that are developed from a common set of core assets in a prescribed way”
Web application software
These are intended to run on web browser. These are often developed on advanced web application frameworks frame works like Django, Drupal, Ruby or Symfony. These contain basic JavaScript, html and css.
Ex: Project management, computer-aided design, video editing, point-of-sale, word processors, online spreadsheets, and presentation tools
Characteristics of software
This is what we refer to as our Heath Factors (Robustness, Performance, Security, Changeability, and Transferability) and Size. CAST AIP measures the 5 standardized CISQ Software Characteristics: Robustness, Security, Efficiency (CAST AIP Performance), Maintainability (CAST AIP Changeability & Transferability), and Size.
1.Software is developed or engineered; it is not manufactured in the classical sense.
Like hardware in classical sense is not manufactured rather it is developed logically than a physical form like hardware. It is difficult to analyze the problems in hardware compared to software as there are lot of physical parameters involved for its failure, but in case of software ineffective design is the main reason for failure. The hardware manufacturing is easy compared to software. The below figure demonstrates the failure curve of hardware
Figure 1: Failure curve for Hardware
2. Software doesn't "wear out."
Figure 2: Failure curve for Software
The wearing out is the major problem faced in case of hardware, where as in software no sign of such problems do arise. In the figure 1, it is evident that in the initial stage the failure rate of hardware is very high, which may be due least manufacturing and design standards. Once initial stage problems are rectified and thus attaining a stable state. Over a period of time, the hardware will wear out due to effect of environment, dust, heat, physical damage and other environmental issues, whereas in the case of software no such problems exist. If any problem in hardware is identified, if we replace the spare part it works well, whereas in software entire code has to be checked for error, which brings out the fact that maintenance of software is comparatively high than hardware.
3. Software is custom built.
In hardware manufacturing, the design is made and ready to use components as per the design specification are collected and integrated as per design principle to achieve the target hardware. In case of software no such components do exist, we have to custom built. In the recent times even hardware is heading towards component based developmental model.
Software disciplines
The software engineering process has following steps, which has to be followed for a bug free and quality software:
Software Evolution
- The Law of Continuing Change (1974)
- The Law of Increasing Complexity (1974)
- The Law of Self Regulation (1974)
- The Law of Conservation of Organizational Stability (1980)
- The Law of Conservation of Familiarity (1980)
- The Law of Continuing Growth (1980
- The Law of Declining Quality (1996)
- The Feedback System Law (1996)