Photo by ThisIsEngineering: https://www.pexels.com/photo/woman-coding-on-computer-3861958/


Evolution of software engineering

  1. Software development began as a single person activity in 1940s and 1950s.
  2. Software engineering was considered a new scientific discipline in 1960s and 1970s.
  3. In 1980s and 1990s engineering ideas dominated software development

 

Software Engineering Definitions

        Simple definition: Designing, building and maintaining large software systems.

        Others

o   ‘Software engineering is concerned with the theories, methods and tools for developing, managing and evolving software products’   - I Sommerville

o   ‘The practical application of scientific knowledge in the   design and construction of computer programs and the associated documentation required to develop, operate and maintain them’  -  B.W.Boehm

o   ‘ The establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines’  -  F.L. Bauer

o   ‘The application of systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software’  -   IEEE Standard 610.12

 

Software Engineering

Software Engineering is an engineering discipline that is concerned with all aspects of software production from the early stages of system specification through to maintaining the system after it has gone into use.

In the given definition, there are two key phrases:

  1. Engineering discipline - Engineers make things work. They apply concepts, theories, methods and tools where these are appropriate.
  2. All Aspects of Software Production – Software Engineering is not just concerned with the technical processes of software development. It also includes activities such as software project management, quality management.

Photo by ThisIsEngineering: https://www.pexels.com/photo/female-engineer-controlling-flight-simulator-3862132/


Software Engineering Ethics

Like other engineering disciplines software engineering is carried out within a social and legal framework. Software engineers must accept that their job involves wider responsibilities than simply the application of technical skills. Some of these are:

        Confidentiality

        Competence

        Intellectual property rights

        Computer misuse

 

Software Quality Attributes

Bohem’s Classification

          Current usefulness

     -  The qualities expected from a software system in user’s point of view.

o   Efficiency

o   Reliability

o   Usability

o   Correctness

o   User friendliness

o   Robustness

 

           Potential Usefulness

    - The qualities expected from a software system in developer’s point of view.

o   Maintainability

o   Modularity

o   Reusability

o   Portability

 

McCall’s Classification

McCall’s Software Quality Model was introduced in 1977. This model is incorporated with many attributes, termed as software factors, which influence software.

          Product operation

o   Efficiency - The number of hardware resources and code the software, needs to perform a function.

o   Correctness - The extent to which software meets its requirements specification.

o   User friendliness

o   Usability - The extent of effort required to learn, operate and understand the functions of the software.

o   Reliability - The extent to which software performs its intended functions without failure.

o   Robustness

          Product revision

o   Maintainability - The effort required to detect and correct an error during the maintenance phase.

o   Flexibility - The effort needed to improve an operational software program.

o   Testability - The effort required to verify software to ensure that it meets the specified requirements.

 

          Product transition

o   Interoperability - The effort required to integrate two systems with one another.

o    Reusability - The extent to which the program’s code can be reused in other applications.

o    Portability - The effort required to transfer a program from one platform to another.

 

Software Maintenance

Any software system needs to be changed. Maintenance is the costliest operation in the software development process (about 60%). Software needs to be changed due to various reasons.

           Errors in the system.

           Changes in the user requirements

           Availability of new technology

           Changes in the enterprise or Govt. policy.

 

Goals of Software Engineering

       a) Meeting the user’s needs

       b) Low cost of production

       c) High Performance

       d) Portability

       e) Low cost of maintenance

       f) High Reliability

       e) Delivery on time