1/51
Chapter 1 (MIdterms)
Name | Mastery | Learn | Test | Matching | Spaced |
---|
No study sessions yet.
“easy” systems
one developer, one user, experimental use only
“hard” systems
multiple developers, multiple users, products
Over a stream
easy, one person job
Over River Severn
The techniques do not scale
Over a stream
Over River Severn …
Analogy with bridge building
complexity
Software engineering is about managing this _______________
UNIX
contains 4 million lines of code
Windows
2000 contains 108 lines of code
Computer programs and associated documentation
What is softwarre?
Software Products
may be developed for a particular customer or may be developed for a general market
Generic
Bespoke
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
Software Engineering
is an engineering discipline which is concerned with all aspects of software production
- adopt a systematic and organised approach to their work
- use appropriate tools and techniques depending on
the problem to be solved,
the development constraints and
the resources available
Software Engineers should:
theory
fundamentals
Computer Science is Concerned with?
Software Engineering is Concerned with?
the practicalities of developing
delivering useful software
Computer Science Theories
insuffficient to act BUT is a foundation for practical aspects of software engineering
system engineering
software engineering is part of?
hardware,
software and
process engineering
System engineering is concerned with all aspects of computer-based system development including:
System engineers are involved in:
system specification,
architectural design,
integration
deployment
software process
a set of activities whose goal is the development or evolution of software
Specification
Development
Validation
Evolution
Generic activities in all software process are:
Specification
what the system should and its development constraints
Development
production of the software system
Validation
checking of the software is what the customer wants
Evolution
changing the software in response to changing demands
software process model
a simplified representation of a software process, presented from a specific perspective
Workflow perspective
Data-flow perspective
Role/action perspective
Examples of process perspectives:
Workflow perspective
represents inputs, outputs and dependencies
Data-flow perspective
represents data transformation activities
Role/Action perspective
represents the roles/activities of the people involved in software process
Waterfall
Evolutionary development
Formal transformation
Integration from reusable components
Generic Process Models:
60 %
how much are development costs?
40%
how much for testing cost
customer software
the evolution cost often exceeds development costs
Costs
it varies depending on the type of system being developed and the requirement of system attributes such as performance and system reliability
Distribution of Costs
depends on the development model that is used
Computer-Aided Software Engineering
What is CASE?
Computer-Aided Software Engineering
Software systems which are intended to provide automated support for software process activities, such as requirements analysis, system modelling, debugging and testing
Upper-Case
Tools to support the early process activities of requirements and design
Lower-Case
tools to support later activities such as programming, debugging and testing
attributes of good software
The software should deliver the required functionality and performance to the user and should be maintainable, dependable and usable
Maintainability
Dependability
Efficiency
Usability
What are the attributes of good software?
Maintainability
software must evolve to meet changing needs
Dependability
Software must be trustworthy
Efficiency
Software should not make a wasteful use of system resources
Usability
Software must be usable by the users for which it was designed
Legacy Systems
Heterogeneity
Delivery
Software engineering in the 21st century faces three key challenges:
Legacy Systems
Old, valuable systems must be maintained and updated
Heterogeneity
Systems are distributed and include of hardware and software
Delivery
There is increasing pressure for faster delivery of software