* Software engineering
* The economies of ALL developed nations are
dependent on software
* More and more systems are software controlled
* Software engineering is concerned with theories, methods and tools for professional software development * Software engineering expenditure represents a significant fraction of GNP in all developed countries * Software costs
* Software costs often dominate system costs. The costs of software on a PC are often greater than the hardware cost * Software costs more to maintain than it does to develop. For systems with a long life, maintenance costs may be several times development costs * Software engineering is concerned with cost-effective software development * What is software?
* Computer programs and associated documentation
* Software products may be developed for a particular customer or may be developed for a general market * Software products may be
* Generic - developed to be sold to a range of different customers * Bespoke (custom) - developed for a single customer according to their specification * What is software engineering?
* Software engineering is an engineering discipline which is concerned with all aspects of software production * Software engineers should adopt a systematic and organised approach to their work and use appropriate tools and techniques depending on the problem to be solved, the development constraints and the resources available * What is the difference between software engineering and computer science? * Computer science is concerned with theory and fundamentals; software engineering is concerned with the practicalities of developing and delivering useful software * Computer science theories are currently insufficient to act as a complete underpinning for software engineering * What is the difference between software engineering and system engineering? * System engineering is concerned with all aspects of computer-based systems development including hardware, software and process engineering. Software engineering is part of this process * System engineers are involved in system specification, architectural design, integration and deployment * What is a software process?
* A set of activities whose goal is the development or evolution of software * Generic activities in all software processes are:
* Specification - what the system should do and its development constraints * Development - production of the software system
* Validation - checking that the software is what the customer wants * Evolution - changing the software in response to changing demands * What is a software process model?
* A simplified representation of a software process, presented from a specific perspective * Examples of process perspectives are
* Workflow perspective - sequence of activities
* Data-flow perspective - information flow
* Role/action perspective - who does what
* Generic process models
* Evolutionary development
* Formal transformation
* Integration from reusable components
* What are the costs of software engineering?
* Roughly 60% of costs are development costs, 40% are testing costs. For custom software, evolution costs often exceed development costs * Costs vary depending on the type of system being developed and the requirements of system attributes such as performance and system reliability * Distribution of costs depends on the development model that is used * What are software engineering methods?
* Structured approaches to software development which include system models, notations, rules, design advice and process guidance * Model descriptions
* Descriptions of graphical models which should be produced * Rules
* Constraints applied to system models