Software Engineering: Sem 3 & 4 2017 Mrs. Siti Nurliana Jamali
Software Engineering: Sem 3 & 4 2017 Mrs. Siti Nurliana Jamali
Chapter 1
Software Engineering
Chapter 1 – Introduction
3
Topics covered
Introduction to Software Engineering
Software process models
Iterative Process
Activity process
The Rational Unified Process
An example of a modern software process.
4
Software costs
Software costs often dominate computer 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.
6
Software products
Generic products
Stand-alone systems that are marketed and sold to
any customer who wishes to buy them.
Examples – PC software such as graphics programs,
project management tools; CAD software; software for
specific markets such as appointments systems for
dentists.
Customized products
Software that is commissioned by a specific customer
to meet their own needs.
Examples – embedded control systems, air traffic
control software, traffic monitoring systems.
7
Product specification
Generic products
The specification of what the software should do
is owned by the software developer and decisions
on software change are made by the developer.
Customized products
The specification of what the software should do
is owned by the customer for the software and
they make decisions on software changes that are
required.
8
Software engineering
Software engineering is an engineering discipline
that is 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
Using appropriate theories, tools and methods to solve
problems bearing in mind organizational and financial
constraints.
All aspects of software production
Not just technical process of development. Also
project management and the development of tools,
methods etc. to support software production.
12
Application types
Stand-alone applications
These are application systems that run on a local
computer, such as a PC. They include all necessary
functionality and do not 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 PCs or terminals. These
include web applications such as e-commerce applications.
Embedded control systems
These are software control systems that control and
manage hardware devices. Numerically, there are probably
more embedded systems than any other type of system.
14
Incremental Development
24
Iterative Process
• Change is inevitable in all large software
projects.
▫ Business changes lead to new and changed
system requirements
▫ New technologies open up new possibilities for
improving implementations
▫ Changing platforms require application changes
Iterative process models:
Software prototyping
Boehm’s spiral model
30
Software Prototyping
Benefits of prototyping
Improved system usability.
A closer match to users’ real needs.
Improved design quality.
Improved maintainability.
Reduced development effort.
32
Prototype Development
May be based on rapid prototyping languages
or tools
May involve leaving out functionality
Prototype should focus on areas of the product
that are not well-understood;
Error checking and recovery may not be included
in the prototype;
Focus on functional rather than non-functional
requirements such as reliability and security
34
Throw-away Prototypes
Prototypes should be discarded after
development as they are not a good basis for a
production system:
It may be impossible to tune the system to meet
non-functional requirements;
Prototypes are normally undocumented;
The prototype structure is usually degraded
through rapid change;
The prototype probably will not meet normal
organisational quality standards.
35
Incremental Delivery
Rather than deliver the system as a single delivery,
the development and delivery is broken down into
increments with each increment delivering part of
the required functionality.
User requirements are prioritised and the highest
priority requirements are included in early
increments.
Once the development of an increment is started,
the requirements are frozen though requirements for
later increments can continue to evolve.
36
Incremental Delivery
38
What is a Workflow?
• A set of activities that is performed by the
various roles in a project
• Describes a meaningful sequence of activities
that produce a useful result (an artifact)
• Shows interaction between roles
46
RUP Phases
Inception
Establish the business case for the system, identify all
external entities (people and systems) that will interact with
the system.
Elaboration
Develop an understanding of the problem domain and the
system architecture, develop project plan, identify key
project risks. Already have the requirements model for the
system(UML use cases are classified).
Construction
System design, programming testing and documentation.
Transition
Deploy the system in its operating environment, ensure the
system working correctly.
50
Manage
Requirements
Use Component Developer
Best Architectures Tester
Project
Practices Model Visually Manager
Verify Quality
Control Release
Change
Engineer
53
Key Points
Software engineering is an engineering discipline
that is concerned with all aspects of software
production.
Essential software product attributes are
maintainability, dependability and security, efficiency
and acceptability.
The high-level activities of specification,
development, validation and evolution are part of all
software processes.
The fundamental notions of software engineering
are universally applicable to all types of system
development.
56
Key Points
There are many different types of system and
each requires appropriate software engineering
tools and techniques for their development.
The fundamental ideas of software engineering
are applicable to all types of software system.
57
Key Points
Software processes are the activities involved in
producing a software system. Software process
models are abstract representations of these
processes.
General process models describe the organization
of software processes. Examples of these general
models include the ‘waterfall’ model, incremental
development and reuse-oriented development.
Iterative process models includes software
prototyping and Boehm’s spiral model.
58
Key Points
The Rational Unified Process is a modern generic
process model that is organized into phases
(inception, elaboration, construction and transition)
but separates activities (requirements, analysis and
design, etc.) from these phases.
CASE technology provides automated support for
software processes. CASE tools support individual
process activities, workbenches support a set of
related activities, environments support all or most
software process activities.