(ch 1) software engineering - - economies of all developed nations are
dependent on software as more systems are software controlled
- soft eng is concerned with theories, methods and tools for pro soft dev
- software expenditure represents a significant fraction of GNP in all
developed countries
software costs - - software costs > computer system costs (hardware)
- maintenance > development costs
- soft eng concerned with cost-effective soft dev
software project failure - 1. increasing system complexity
- new soft eng techniques builds larger/complex system, demands change
- systems must be built and delivered more quickly
- larger, complex systems are required
- systems must have new capabilities that were previously thought impossible
2. failure to use soft eng methods
- easy to write computer programs without using soft eng methods/techniques
- makes software more expensive/less reliable than it should be
what is software? - - computer programs and associated documentation, may
be developed for a particular customer or for a general market
what are the attributes of good software? - - deliver required functionality and
performance for the user while being maintainable, dependable, and usable
,what is software engineering? - - an engineering discipline concerned with all
aspects of software production from specification to system maintenance
- using appropriate theories and methods to solve problems bearing in mind
organizational and financial constraints
- not just technical process of development but also project management and
the development of tools, methods, etc to support software production
what are the fundamental software engineering activities? - - software
specification
- software development
- software validation
- software evolution
what is the difference between software engineering and computer science? -
- computer science: theory and fundamentals
- soft eng: practicalities of developing and delivering useful software
what is the difference between software engineering and system engineering?
- - system eng: all aspects of computer-based systems development including
hardware, software and process engineering
- soft eng is a part of this whole general process
what are the key challenges facing software engineering? - - coping with
increasing diversity, demands for reduced delivery times, and developing
trustworthy software
what are the costs of software engineering? - - 60% = development
- 40% = testing
,- custom software - evolution costs often exceed development costs
what are the best software engineering techniques and methods? - - all soft
projects have to be pro managed/developed
- diff techniques appropriate for different types of systems
- example: games should always be developed using series of prototypes but
safety critical control systems require complete and analyzable specification to
be developed
- therefore cannot say one method is better than the other
what differences has the web made to software engineering? - - availability of
software services and possibility of developing highly distributed service-
based systems
- web-based systems development led to important advances in programming
languages and software reuse
software products - generic products - - stand-alone systems that are
marketed and sold to any customer who wishes to buy them
- examples: PC software like graphics programs, project management tools,
CAD software, software for specific markets such as appointments systems
for dentists
software products - customized products - - software commissioned by a
specific customer to meet their own needs
- examples: embedded control systems, air traffic control software, traffic
monitoring systems
product specification - generic products - - specification of what software
should do and decisions on software change is owned/made by software
developer
, product specification - customized products - - specification of what software
should do and decisions on software change is owned/made by the customer
essential attributes of good software - Maintainability
Dependability and security
Efficiency
Acceptability
essential attributes of good software - maintainability - - software should be
written in a way that it can evolve to meet the changing needs of customers
- critical because software change is inevitable in changing business
environment
essential attributes of good software - dependability and security - - software
dependability includes range of characteristics including reliability, security
and safety
- should not cause physical or economic damage in event of system failure
- malicious users should not be able to access or damage the system
essential attributes of good software - efficiency - - should not make wasteful
use of system resources such as memory and processor cycles
- includes responsiveness, processing time, memory utilisation, etc
essential attributes of good software - acceptability - - acceptable to the type
of users for which it is designed as in it must be understandable, usable, and
compatible with other systems being used