Skip to main content

Software Engineering

  • Chapter
  • First Online:
  • 3617 Accesses

Part of the book series: Undergraduate Topics in Computer Science ((UTICS))

Abstract

Software engineering involves the multi-person construction of multi-version programs, and is a systematic approach to the development and maintenance of software. It is the application of engineering to software development, and the challenge is to deliver high-quality software on time and on budget to customers.

The birth of software engineering dates to a conference dealing with the crisis in software development held at Garmisch in Germany in the late 1960s. This conference highlighted the problems that existing in the software field including schedule and cost overruns, as well as problems with software quality. It was clear that there was a need to engineer software, and to develop effective methodologies to design and develop software. This chapter provides a broad overview of software engineering, and discusses various software lifecycles such as the Waterfall Model and the Spiral Model, and the phases in software development.

This is a preview of subscription content, log in via an institution.

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   44.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   59.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Learn about institutional subscriptions

Notes

  1. 1.

    These are IT projects covering diverse sectors including banking, telecommunications, etc., rather than pure software companies. Software companies following maturity frameworks such as the CMMI generally achieve more consistent project, and the CMMI focuses on the management side of software engineering.

  2. 2.

    I recall projects at Motorola that regularly achieved 5.6σ-quality in a L4 CMM environment (i.e., approx. 20 defects per million lines of code. This represents very high quality).

  3. 3.

    Approaches such as the CMM or SPICE (ISO 15504) focus mainly on the management and organizational practices required in software engineering. The emphasis is on defining software processes that are fit for purpose and consistently following them. The process maturity models focus on what needs to be done rather how it should be done. This gives the organization the freedom to choose the appropriate implementation to meet its needs. The models provide useful information on practices to consider in the implementation.

  4. 4.

    Parnas has made important contributions to computer science. He advocates a solid engineering approach with the extensive use of classical mathematical techniques to software development. He also introduced information hiding in the 1970s which is now a part of object-oriented development.

  5. 5.

    Software Companies that are following approaches such as the CMM or ISO 9001 consider the education and qualification of staff prior to assigning staff to performing specific tasks. The appropriate qualifications and experience for the specific role are considered prior to appointing a person to carry out the role. Many companies are committed to the education and continuous development of their staff, and on introducing best practice in software engineering into their organization..

  6. 6.

    The concept of accountability was used by the ancient Babylonians, and they employed a code of laws (known as the Hammurabi Code) c. 1750 B.C. It included a law that stated that if a house collapsed and killed the owner then the builder of the house would be executed.

  7. 7.

    However, it is unlikely that an individual programmer would be subject to litigation in the case of a flaw in a program causing damage or loss of life. A comprehensive disclaimer of responsibility for problems rather than a guarantee of quality accompany most software products. Software engineering is a team-based activity involving many engineers in various parts of the project, and it would be potentially difficult for an outside party to prove that the cause of a particular problem is due to the professional negligence of a particular software engineer, as there are many others involved in the process such as reviewers of documentation and code and the various test groups. Companies are more likely to be subject to litigation, as a company is legally responsible for the actions of their employees in the workplace, and a company is a wealthier entity than one of its employees. The legal aspects of licensing software may protect software companies from litigation. However, greater legal protection for the customer can be built into the contract between the supplier and the customer for bespoke-software development.

  8. 8.

    Many software companies have a defined code of ethics that employees are expected to adhere. Larger companies will wish to project a good corporate image and to be respected worldwide.

  9. 9.

    The British Computer Scientist (BCS) has introduced a qualification system for computer science professionals that it used to show that professionals are properly qualified. The most important of these is the BCS Information Systems Examination Board (ISEB) which allows IT professionals to be qualified in service management, project management, software testing, and so on.

  10. 10.

    Software companies that are following the CMMI or ISO 9000 standards will employ audits to verify that the processes and procedures have been followed. Auditors report their findings to management and the findings are addressed appropriately by the project team and affected individuals.

  11. 11.

    We treat the waterfall model as identical to the V model in this text.

  12. 12.

    This is essential for serious defects that have caused significant inconvenience to customers (e.g., a major telecoms outage). The software development organization will wish to learn lessons to determine what went wrong in its processes that prevented the defect from been identified during peer reviews and testing. Actions to prevent a reoccurrence will be identified and implemented.

  13. 13.

    These are the risk management activities in the Prince 2 methodology.

References

  1. Beck K (2000) Extreme Programming explained. Embrace change. Addison-Wesley, Reading

    Google Scholar 

  2. Boehm B (1988) A spiral model for software development and enhancement. Computer 21:61–72

    Article  Google Scholar 

  3. Brooks F (1975) The mythical man month. Addison Wesley, Reading

    Google Scholar 

  4. Brooks F (1986) No silver bullet. Essence and accidents of software engineering. In: Information processing. Elsevier, Amsterdam

    Google Scholar 

  5. Buxton JN, Naur P, Randell B (1975) Software Engineering. Petrocelli. Report on two NATO conferences held in Garmisch, Germany (October1968) and Rome, Italy (October 1969)

    Google Scholar 

  6. Dijkstra EW (1972) Structured programming. Academic, London

    MATH  Google Scholar 

  7. Fagan M (1976) Design and code inspections to reduce errors in software development. IBM Syst J 15(3):182–210

    Article  Google Scholar 

  8. Gilb T, Graham D (1994) Software inspections. Addison-Wesley, Reading

    Google Scholar 

  9. Ince D, Andrews D (1991) Practical formal methods with VDM, McGraw Hill International series in software engineering. McGraw Hill, New York

    Google Scholar 

  10. Jacobson I, Booch G, Rumbaugh J (1999) The unified software modelling language user guide. Addison-Wesley, Reading

    Google Scholar 

  11. O’Regan G (2002) A practical approach to software quality. Springer, New York

    Book  MATH  Google Scholar 

  12. O’Regan G (2006) Mathematical approaches to software quality. Springer, London

    MATH  Google Scholar 

  13. O’Regan G (2010) Introduction to software process improvement. Springer, London

    Google Scholar 

  14. Office of Government Commerce (2004) Managing successful projects with PRINCE2. TSO, London

    Google Scholar 

  15. Parnas D (1972) On the criteria to be used in decomposing systems into modules. Commun ACM 15(12):1053–1058

    Article  Google Scholar 

  16. Royce W (1970) The software lifecycle model (Waterfall Model). In: Proceedings of the WESTCON, Los Angeles, August, 1970

    Google Scholar 

  17. Rumbaugh J et al (1999) The unified software development process. Addison-Wesley, Reading

    Google Scholar 

  18. Spivey JM (1992) The Z notation. A reference manual, Prentice Hall International series in computer science. Prentice Hall, Englewood Cliffs

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Rights and permissions

Reprints and permissions

Copyright information

© 2014 Springer International Publishing Switzerland

About this chapter

Cite this chapter

O’Regan, G. (2014). Software Engineering. In: Introduction to Software Quality. Undergraduate Topics in Computer Science. Springer, Cham. https://doi.org/10.1007/978-3-319-06106-1_2

Download citation

  • DOI: https://doi.org/10.1007/978-3-319-06106-1_2

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-319-06105-4

  • Online ISBN: 978-3-319-06106-1

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics