Software Engineering Technology

Software Engineering

Why software engineering?

  • Once the need for software engineering was identified and software engineering recognized as a discipline--
  • The late 1970’s saw the widespread evolution of software engineering principles.
  • The 1980’s saw the automation of software engineering and growth of CASE (Computer Aided Software Engineering).
  • The 1990’s have seen increased emphasis on the ‘management’ aspects of projects and the use of standard quality and ‘process’ models like ISO 9001 and the Software Engineering Institute’s Software Capability Maturity Model (CMM). 
  • These models help organizations put their software development and management processes in place

What is software Engineering?

  • In1969 Fritz Bauer defined software eng. as, ‘the establishment and use of sound engineering principles in order to obtain, economically, software that is reliable and works efficiently on real machines’.
  • According to Boehm, software engineering involves, ‘the practical application of scientific knowledge to the design and construction of computer programs and the associated documentation required developing, operating and maintaining them’
  • IEEE, in its standard 610.12-1990, defines software engineering as
    • The application of a systematic, disciplined, quantifiable approach to the development, operation and maintenance of software; that is, the application of engineering to software.
    • The study of approaches as in (i).
  • By combining all the above definition we can define software engineering as, ‘Software engineering is the technological and managerial discipline concerned with systematic production and maintenance of software products that are developed and modified on time and within cost estimates.’

Goal of software engineering

  • The primary goals of software engineering are
    • To improve the quality of the software products.
    • To increase the productivity
    • To give job satisfaction to the software engineers.

Foundation of Software engineering

  • Software engineering is a technological discipline distinct from, but based on the foundation of the following disciplines
  • Computer Science
  • Management Science
  • Economics
  • System Engineering
  • Communication Skills

The relationship of software engineering with other disciplines

  • Computer Science gives the scientific foundation to the software as electrical engineering relies on physics.
  • Management Science provides the foundation for software project management. Since software engineering is labor intensive activity, it requires both technical and managerial control.
  • Economics provides the foundation for resource estimation and cost control. Since, computing system must be developed and maintained on time and within cost estimates; thus economics plays an important role.
  • System Engineering is the field concerned with studying complex systems. Software is often a component of a much larger system. For example, the software in a factory monitoring system or the flight software on an airplane; is just the component of more complex system. System engineering techniques can be applied to study of such systems
  • Good oral, written and interpersonal communication skills are crucial for the software engineers, because software engineering activities occur within an organizational context, and a high degree of communication is required among customers, managers, software engineers, hardware engineers and other technical workers.

Difference of s/w eng. with traditional engineering

  • Software is intangible. It has no mass, no volume, no color, no odor--- no physical properties. Source code is merely a static image of computer program, and while the effects produced by a program are often observable, the program itself not.
  • Software doesn’t degrade with time as hardware does. Software failures are caused by design and implementation error, not by degradation over time.
  • There is always an obscurity in the interface between software modules. It is difficult to design a software system so that all the control and interfaces among modules are explicit, and so that the modules do not interact to produce unexpected side effects when they invoked one another.

The role of software engineer

  • The evolution of software engineering field has defined the role of the software engineer. A software engineer should have the following qualities
  • Should be a good programmer, be well-versed in data structures and algorithms, and be fluent in one or more programming languages.
  • Should be familiar with several design approaches, be able to translate vague requirements and desires into precise specifications and be able to converse with the use of a system in terms of applications.
  • Needs the ability to move among several levels of abstraction at different stages of the project, from specific application procedures and requirements, to abstraction for software systems, to a specific design for system and finally to the detailed coding level.

The characteristics of software engineer

  • Should be able to build and use a model of the application to guide choices of the many tradeoffs that he or she will face. The model is used to answer questions about both the behavior of the system and its performance.
  • Needs communication skills and interpersonal skills. He also needs the ability to schedule work both of his own and that of others.

The software product

  • The objective of software engineering is to produce software products. Computer software is the product that software engineers design and built. Software products are software systems delivered to a customer with the documentation which describes how to install and use the system.
  • Software products fall into two broad classes
    • Generic products

      • These are stand alone systems which are produced by a software development organizations/firms and sold on the open market to any customer who is able to buy them.

    • Customized products

      • These are systems which are commissioned by a particular customer. The software is developed specially for that customer by some developer.

Comments