Software Engineering: Introduction to Software Engineering

Introduction to Software Engineering

Software is more than just a program code. A program is an executable code, which serves some computational purpose. Software is considered to be collection of executable programming code, associated libraries and documentations. Software, when made for a specific requirement is called software product.

Engineering on the other hand, is all about developing products, using well-defined, scientific principles and methods.



Software engineering is an engineering branch associated with development of software product using well-defined scientific principles, methods and procedures. The outcome of software engineering is an efficient and reliable software product.

Definitions :

IEEE defines software engineering as: 

The application of a systematic, disciplined, quantifiable approach to the development, operation and maintenance of software; i.e. the application of engineering to software.

Fritz Bauer, a German computer scientist, defines software engineering as:

Software engineering is the establishment and use of sound engineering principles in order to obtain economically software that is reliable and work efficiently on real machines.

Characteristics of software:

As we know that software is any computer program which can also be defined as a set of instructions which are responsible for guiding the computer to perform certain tasks. The following are the characteristics of software:

  1. Software does not wear out
  2. Software is not manufacture
  3. Usability of Software
  4. Reusability of components
  5. Flexibility of software
  6. Maintainability of software
  7. Portability of software
  8. Reliability of Software 

    1.     Software does not wear out:
     Different things like clothes, shoes, ornaments do wear out after some time. But, software once created never wears out. It can be used for as long as needed and in case of need for any updating, required changes can be made in the same software and then it can be used further with updated features.

    2.     Software is not manufactured:
     Software is not manufactured but is developed. So, it does not require any raw material for its development.

    3.     Usability of Software:
     The usability of the software is the simplicity of the software in terms of the user. The easier the software is to use for the user, the more is the usability of the software as more number of people will now be able to use it and also due to the ease will use it more willingly.

    4.     Reusability of components:
     As the software never wears out, neither do its components, i.e. code segments. So, if any particular segment of code is required in some other software, we can reuse the existing code form the software in which it is already present. This reduced our work and also saves time and money.

    5. Flexibility of software:
     A software is flexible. What this means is that we can make necessary changes in our software in the future according to the need of that time and then can use the same software then also.

    6. Maintainability of software:
     Every software is maintainable. This means that if any errors or bugs appear in the software, then they can be fixed.

        7. Portability of software:
     Portability of the software means that we can transfer our software from one platform to another that too with ease. Due to this, the sharing of the software among the developers and other members can be done flexibly.

    8. Reliability of Software:
     This is the ability of the software to provide the desired functionalities under every condition. This means that our software should work properly in each condition.

    The various factors, which influence the software, are termed as software factors. They can be broadly divided into two categories. The first category of the factors is of those that can be measured directly such as the number of logical errors, and the second category clubs those factors which can be measured only indirectly. For example, maintainability but each of the factors is to be measured to check for the content and the quality control.

    McCall’s Factor Model

    This model classifies all software requirements into 11 software quality factors. The 11 factors are grouped into three categories – product operation, product revision, and product transition factors.

    • Product operation factors − Correctness, Reliability, Efficiency, Integrity, Usability.
    • Product revision factors − Maintainability, Flexibility, Testability.
    • Product transition factors − Portability, Reusability, Interoperability.

    Product Operation Software Quality Factors

    According to McCall’s model, product operation category includes five software quality factors, which deal with the requirements that directly affect the daily operation of the software. They are as follows −

    Correctness

    These requirements deal with the correctness of the output of the software system. They include −

    • Output mission
    • The required accuracy of output that can be negatively affected by inaccurate data or inaccurate calculations.
    • The completeness of the output information, which can be affected by incomplete data.
    • The up-to-datedness of the information defined as the time between the event and the response by the software system.
    • The availability of the information.
    • The standards for coding and documenting the software system.

    Reliability

    Reliability requirements deal with service failure. They determine the maximum allowed failure rate of the software system, and can refer to the entire system or to one or more of its separate functions.

    Efficiency

    It deals with the hardware resources needed to perform the different functions of the software system. It includes processing capabilities (given in MHz), its storage capacity (given in MB or GB) and the data communication capability (given in MBPS or GBPS).

    It also deals with the time between recharging of the system’s portable units, such as, information system units located in portable computers, or meteorological units placed outdoors.

    Integrity

    This factor deals with the software system security, that is, to prevent access to unauthorized persons, also to distinguish between the group of people to be given read as well as write permit.

    Usability

    Usability requirements deal with the staff resources needed to train a new employee and to operate the software system.

    Product Revision Quality Factors

    According to McCall’s model, three software quality factors are included in the product revision category. These factors are as follows −

    Maintainability

    This factor considers the efforts that will be needed by users and maintenance personnel to identify the reasons for software failures, to correct the failures, and to verify the success of the corrections.

    Flexibility

    This factor deals with the capabilities and efforts required to support adaptive maintenance activities of the software. These include adapting the current software to additional circumstances and customers without changing the software. This factor’s requirements also support perfective maintenance activities, such as changes and additions to the software in order to improve its service and to adapt it to changes in the firm’s technical or commercial environment.

    Testability

    Testability requirements deal with the testing of the software system as well as with its operation. It includes predefined intermediate results, log files, and also the automatic diagnostics performed by the software system prior to starting the system, to find out whether all components of the system are in working order and to obtain a report about the detected faults. Another type of these requirements deals with automatic diagnostic checks applied by the maintenance technicians to detect the causes of software failures.

    Product Transition Software Quality Factor

    According to McCall’s model, three software quality factors are included in the product transition category that deals with the adaptation of software to other environments and its interaction with other software systems. These factors are as follows −

    Portability

    Portability requirements tend to the adaptation of a software system to other environments consisting of different hardware, different operating systems, and so forth. The software should be possible to continue using the same basic software in diverse situations.

    Reusability

    This factor deals with the use of software modules originally designed for one project in a new software project currently being developed. They may also enable future projects to make use of a given module or a group of modules of the currently developed 

    software. The reuse of software is expected to save development resources, shorten the development period, and provide higher quality modules.

    Interoperability

    Interoperability requirements focus on creating interfaces with other software systems or with other equipment firmware. For example, the firmware of the production machinery and testing equipment interfaces with the production control software.