Introduction

  • Two kinds of software product:

    • Generic: Stand-alone systems produced by a development organization for the open market.

    • Customized (bespoke): Commissioned and developed for a particular customer. A software contractor designs and implements software for that customer.

  • SWE is an engineering discipline 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.

    • Engineering discipline: You have to apply theory, methods and tools effectively and try to discover solutions to problems. You also work within organizational and financial constraints.

    • All aspects of software production: Not just the technical processes of software development, but also the software project management and development of tools, methods and theories to support software development.

  • Importance of SWE:

    • More and more individuals rely on software systems. We need to make reliable and trustworthy systems economically and quickly.

    • It is usually cheaper to use software engineering methods and techniques in the long run rather than just write programs. Failure to do so leads to higher testing, QA and long-term maintenance costs.

  • Three reasons software systems fail:

    • Overbudget

    • Not meeting schedule

    • Not meeting expectations

  • Four fundamental software process activities:

    • Software specification: Create a vision for the product. Customers and engineers define the software that is to be produced and the constraints on its operations

    • Software development: Software is designed and programmed

    • Software validation: Software is checked to ensure that it is what the customer requires

    • Software evolution: Software is changed to reflect changing customer and market requirements

  • General issues that affect software:

    • Heterogeneity: Systems are required to operate as distributed systems across different platforms

    • Business and social change: Businesses and society are changing incredibly quickly as emerging economies develop and new technologies become available.

    • Security and trust: Trust is essential for software, we have to make sure malicious users cannot attack the software.

    • Scale: Software has to be developed across a very wide range of scales, from small embedded systems to Internet-scale cloud-based systems for a global community.

  • Application types:

    • Stand-alone applications: Run on a local computer, and include all necessary functionality. Don't need to be connected to a network.

    • Interactive (transaction-based) applications: Applications that execute on a remote computer and are accessed by users from their own PC. These include web applicatoins such as e-commerce applications.

    • Embedded control systems: Software control systems to control and manage hardware devices. Most common

    • Batch Processing Systems: Process data in large batches. Eg. Bursar

    • Entertainment (media) systems: Primarily for personal use and to entertain the user

    • Modeling and Simulation Systems: Systems developed by scientists and engineers to model physical processes or situations

    • Data Collection Systems: Collet data from their environment using sensors and send to other systems for processing.

    • Systems of Systems: Systems composed of a number of other software systems

Last updated