SlideShare a Scribd company logo
2011
download.benjaminsommer.com
Benjamin Sommer

[SOFTWARE ENGINEERING
LECTURE NOTES]
Brief and detailed notes from lectures held at the Ludwig-Maximilian-University, Faculty of Computer
Science in Germany. This document neither claims completeness, nor correctness of the presented
topic. Please let me know in case of errors or missing information: contact.benjaminsommer.com
[SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011
OVERVIEW

3

SOFTWARE PROCESSES
SOFTWARE PROCESS MODELS
PROCESS ACTIVITIES
COPING WITH CHANGE
THE RATIONAL UNIFIED PROCESS
AGILE SOFTWARE DEVELOPMENT
AGILE METHODS
PLAN-DRIVEN AND AGILE DEVELOPMENT
EXTREME PROGRAMMING
AGILE PROJECT MANAGEMENT
SCALING AGILE METHODS
REQUIREMENTS ENGINEERING
FUNCTIONAL AND NON-FUNCTIONAL REQUIREMENTS
THE SOFTWARE REQUIREMENTS DOCUMENT
REQUIREMENTS SPECIFICATION
REQUIREMENTS ENGINEERING PROCESSES
REQUIREMENTS ELICITATION AND ANALYSIS
REQUIREMENTS VALIDATION
REQUIREMENTS MANAGEMENT
SYSTEM MODELING
CONTEXT MODELS
INTERACTION MODELS
STRUCTURAL MODELS
BEHAVIORAL MODELS
MODEL-DRIVEN ENGINEERING
ARCHITECTURAL DESIGN
ARCHITECTURAL DESIGN DECISIONS
ARCHITECTURAL VIEWS
ARCHITECTURAL PATTERNS
APPLICATION ARCHITECTURES
DESIGN AND IMPLEMENTATION
OBJECT-ORIENTED DESIGN USING THE UML
DESIGN PATTERNS
IMPLEMENTATION ISSUES
OPEN SOURCE DEVELOPMENT
SOFTWARE TESTING
DEVELOPMENT TESTING
TEST-DRIVEN DEVELOPMENT
RELEASE TESTING

5
5
7
10
13
16
16
17
17
19
20
21
21
23
24
25
26
29
30
31
32
32
33
34
35
37
38
39
39
42
44
45
47
48
50
51
52
56
57
download.benjaminsommer.com |

1
October 21, 2011

[SOFTWARE ENGINEERING LECTURE NOTES]

USER TESTING
SOFTWARE EVOLUTION
EVOLUTION PROCESSES
PROGRAM EVOLUTION DYNAMICS
SOFTWARE MAINTENANCE
LEGACY SYSTEM MANAGEMENT

58
59
60
61
62
65

DEPENDABILITY AND SECURITY

67

SOCIOTECHNICAL SYSTEM
COMPLEX SYSTEMS
SYSTEMS ENGINEERING
SYSTEM PROCUREMENT
SYSTEM DEVELOPMENT
SYSTEM OPERATION
DEPENDABILITY AND SECURITY
DEPENDABILITY PROPERTIES
AVAILABILITY AND RELIABILITY
SAFETY
SECURITY
DEPENDABILITY AND SECURITY SPECIFICATION
RISK-DRIVEN REQUIREMENTS SPECIFICATION
SAFETY SPECIFICATION
RELIABILITY SPECIFICATION
SECURITY SPECIFICATION
FORMAL SPECIFICATION
DEPENDABILITY ENGINEERING
REDUNDANCY AND DIVERSITY

67
68
70
71
72
73
74
74
75
76
77
77
77
78
80
81
82
83
83

2

| download.benjaminsommer.com
[SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011

Overview
Software Engineering is concerned with








Technical processes of software development
Software project management
Development of tools, methods and theories to support software production
Getting results of the required quality within the schedule and budget
Often involves making compromises
Often adopt a systematic and organized approach
Less formal development is particularly appropriate for the development of web-based systems

Software Engineering is important because




Individuals and society rely on advanced software systems
Produce reliable and trustworthy systems economically and quickly
Cheaper in the long run to use software engineering methods and techniques for software
systems

Fundamental activities being common to all software processes:





Software specification: customers and engineers define software that is to be produced and the
constraints on its operation
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 modified to reflect changing customer and market requirements

Software Engineering is related to computer science and systems engineering:




Computer science
o Concerned with theories and methods
Software Engineering
o Practical problems of producing software
Systems engineering
o Aspects of development and evolution of complex systems
o Specifying the system, defining its overall architecture, integrating the different parts to
create the finished system

General issues that affect many different types of software:


Heterogeneity
o Operate as distributed systems across networks
o Running on general-purpose computers and mobile phones
o Integrate new software with older legacy systems written in different programming
languages
download.benjaminsommer.com | Overview

3
October 21, 2011





[SOFTWARE ENGINEERING LECTURE NOTES]

o Challenge: build dependable software that is flexible enough to cope with heterogeneity
Business and social change
o Change existing software and rapidly develop new software
o Traditional software engineering techniques are time consuming
o Goal: reduce time to adapt to changing needs
Security and trust
o Software is intertwined with all aspects of our lives
o See remote software systems (web page, web service interface)
o Make sure malicious users cannot attack software and information security is
maintained

Essential attributes of good software








Maintainability
o Evolve to meet the changing needs of customers
o Software change is inevitable (see changing business environment)
Dependability and security
o Includes reliability, security and safety
o Should not cause physical or economic damage in case of system failure
o Take special care for malicious users
Efficiency
o Includes responsiveness, processing time, memory utilization
o Care about memory and processor cycles
Acceptability
o Acceptable to the type of users for which it is designed
o Includes understandable, usable and compatible with other systems

Application types









Stand-alone applications
Interactive transaction-based applications
Embedded control systems
Batch processing systems
Entertainment systems
Systems for modeling and simulation
Data collection systems
Systems of systems

Software engineering ethics:


Confidentiality: respect confidentiality or employers and clients (whether or not a formal
confidentiality agreement has been signed)

4

Overview | download.benjaminsommer.com
[SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011




Competence: do not misrepresent your level of competence (never accept work being outside
of your competence)
Intellectual property rights: be aware of local laws governing the use of intellectual property
such as patents and copyright
Computer misuse: do not use technical skills to misuse other people’s computers

Software processes
Main software processes





Specification
Design and implementation
Validation
Evolution

Software process models




Waterfall model
Incremental development
Reuse-oriented software engineering

Waterfall model:








Requirements analysis and definition
o Consult system users to establish system’s services, constrains and goals
o They are then defined in detail and serve as a system specification
System and software design
o Establish an overall system architecture to allocate the requirements to either hardware
or software systems
o Involves identifying and describing the fundamental software system abstractions and
their relationships
Implementation and unit testing
o Integrate and test individual program units or programs into complete systems
o Ensure the software requirements has been met
o Software system is delivered to the customer (after testing)
Operation and maintenance
o Normally the longest life cycle phase
o System is installed and put into practical use
o Involves correcting errors, improving the implementation of system units and enhancing
the system’s services as new requirements are discovered

Incremental development:
Idea

download.benjaminsommer.com | Overview

5
October 21, 2011




[SOFTWARE ENGINEERING LECTURE NOTES]

Develop and initial implementation
Expose this to user comment
Evolve this through several versions until an adequate system has been developed

Characteristics






Start with an outline description of the software to develop
Specification, development and validation activities are interleaved (concurrent activities) rather
than separate
More rapid feedback across activities
Fundamental part of agile approaches
Better for most business, e-commerce and personal systems than waterfall approaches

Benefits compared to waterfall model




Reduced cost of accommodating changing customer requirements
Easier to get customer feedback on the development work that has been done
Possibly more rapid delivery and deployment of useful software to the customer. Customers use
and gain value from the software earlier than with water model

Problems




Process is not visible
o How to measure progress (see managers)
o Producing documents that reflect every version of the system is not cost-effective
System structure tends to degrade as new increments are added
o Time and money is required on refactoring to improve the software
o Regular changes tend to corrupt its structure
o Further software changes become increasingly difficult and costly

Reuse-oriented software engineering









Requirements specification
Component analysis
o Search for components to implement this specification
o Usually exact matches are not found
Requirements modification
o Analyze requirements using information about the found components
o They are modified to reflect the available components
o Restart with component analysis in case found components cannot be modified
System design with reuse
o Design the framework of the system or reuse an existing framework
o Some new software may have to be designed if reusable components are not available
Development and integration
6

Overview | download.benjaminsommer.com
[SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011



o Develop software that cannot be externally procured
o Integrate components and COTS (commercial off-the-shelf systems)
o System integration may be part of development process rather than a separate activity
System validation

Types of software components to be used in a reuse-oriented process:





Web services
o Developed according to service standards
o Available for remote invocation
Collections of objects in a package (e.g. from .NET or J2EE)
Stand-alone software systems that are configured for use in a particular environment

Advantages




Reduce the amount of software to be developed
Reduce cost and risks
Usually leads to faster delivery of the software

Disadvantages



May lead to a system that does not meet the real needs of users (requirements compromises
are inevitable)
Lost control over the system evolution as new versions of the reusable components are not
under the control of the organization using them

Process activities
Software specification
Definition: the process of understanding and defining what services are required from the system and
identifying the constraints on the system’s operation and development
Requirements engineering: critical stage of the software process as errors at this stage inevitably lead to
later problems in the system design and implementation
Requirements engineering process




Feasibility study
o Estimate whether the identified user needs may be satisfied using current software and
hardware technologies
o Considerations: cost-effective, development within existing budgetary constraints
o Should be relatively cheap and quick
Requirements elicitation and analysis
o Derive the system requirements through observation of existing systems, discussions
with potential users and procurers, task analysis
download.benjaminsommer.com | Overview

7
October 21, 2011





[SOFTWARE ENGINEERING LECTURE NOTES]

o Development of one or more system models and prototypes possible
o Help to understand the system to be specified
Requirements specification
o Activity of translating the information gathered during the analysis activity into a
document that defines a set of requirements
o User requirements: abstract statements of the system requirements for the customer
and end-user of the system
o System requirements: more detailed description of the functionality to be provided
Requirements validation
o Checks the requirements for realism, consistency and completeness
o Errors are discovered to correct the specification

These process are usually interleaved (see agile methods)
Software design and implementation
Software implementation: process of converting a system specification into an executable system
Characteristics:



Always involves processes of software design and programming
May refine software specification if incremental approach is used

Software design: a description of the structure of the software to be implemented, the data models and
structures used by the system, the interfaces between system components and the algorithms used.
Characteristics:






Designers develop the design interactively
Add formality and detail as they develop their design with constant backtracking to correct
earlier designs
Process activities are interleaved: feedback from one stage to another and consequent design
rework
Requires detailed knowledge about the software platform (environment in which the software
will execute; e.g. operating system, database, middleware etc.)
Activities in the design process vary, depending on the type of system being developed (see realtime systems vs. services vs. database systems)

Possible activities of the design process of information systems:




Architectural design
o Identify the overall structure of the system, the principal components (sub-systems,
modules), their relationships and how they are distributed
Interface design
o Define the interfaces between system components
8

Overview | download.benjaminsommer.com
[SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011
o
o





Interface specification must be unambiguous (precise interface)
After interface specifications are agreed, components can be designed and developed
concurrently
Component design
o Take each system component and design how it will operate
o May be a simple statement of the expected functionality to be implemented (specific
design left to the programmer)
o May be a list of changes to be made to a reusable component or a detailed design
model
o Design model may be used to automatically generate an implementation
Database design
o Design the system data structures and how these are to be represented in a database
o Work depends on whether existing database is to be reused or a new database is to be
created

Software validation
Definition: validation (verification and validation, V&V) is intended to show that a system both conforms
to its specification and that is meets the expectations of the system customer
Stages in the testing process:






Development testing
o Components making up the system are tested by the people developing the system
o Individual/separate tests
o Test of functions, classes or coherent groupings of these entities
o Test automation tools (JUnit) are commonly used (when new versions of the
components are created)
System testing
o System components are integrated to create a complete system
o Concerned with finding errors that result from unanticipated interactions between
components and component interface problems
o Concerned with showing that the system meets its function and non-functional
requirements
o Testing the emergent system properties
o May be a multi-stage process for large systems
Acceptance testing
o Final stage in the testing process before system is accepted for operational use
o Tested with data supplied by the customer rather than with simulated test data

Characteristics:


Component development and testing processes are interleaved (normally)
download.benjaminsommer.com | Overview

9
October 21, 2011





[SOFTWARE ENGINEERING LECTURE NOTES]

Incremental approach: each increment should be tested as it is developed
Plan-driven approach: testing is driving by a set of test plans. Use of an independent team of
testers
Acceptance testing is sometimes called ‘alpha testing’
‘Beta testing’ involves delivering a system to a number of potential customers who agree to use
that system. They report problems to the system developers. This exposes the product to real
use and detect errors that may not have been anticipated by the system builders

Software evolution
Distinction between software development and maintenance is increasingly irrelevant (software
engineering as an evolutionary process where software is continually changed over tis lifetime in
response to changing requirements and customer needs)
Coping with change
Reasons for change




Business procuring the system responds to external pressures and management priorities
change
New technologies become available
New design and implementation possibilities emerge

Rework: work that has been completed has to be redone (software development, design, requirements
analysis, redesign, re-test etc.)
Approaches to reduce cost of rework:




System prototyping
o Version of the system or part of the system is developed quickly to check the customer’s
requirements and feasibility of some design decisions
o Supports change avoidance as it allows users to experiment with the system before
delivery (refine their requirements)
o Reduced number requirements change proposals made after delivery
Incremental delivery
o Increments are delivered to the customer for comment and experimentation
o Supports both change avoidance and change tolerance
o Avoids premature commitment to requirements for the whole system and allows
changes to be incorporated into later increments at relatively low costs

Refactoring: improving structure and organization of a program (an important mechanism to support
change tolerance)
Prototyping

10

Overview | download.benjaminsommer.com
[SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011
Prototype: an initial version of a software system that is used to demonstrate concepts, try out design
options and find out more about the problem and its possible solutions.
Rapid, iterative development of the prototype is essential (to control costs; system stakeholders can
experiment with the prototype early in the software process)
How software prototyping can help:








Requirements engineering process: elicitation and validation of system requirements
System design process: explore particular software solutions; support user interface design
Get new ideas for requirements
Find areas of strength and weakness in the software (to propose new system requirements)
May reveal errors and omissions in the requirements
Carry out design experiments to check the feasibility of a proposed design
Essential part of the user interface design process (dynamic nature of user interfaces)

Delivering throwaway prototypes is usually unwise:





May be impossible to tune the prototype to meet non-functional requirements: performance,
security, robustness, reliability requirements
Undocumented prototype due to rapid change during development; prototype code as the only
design specification (bad for long-time maintenance)
Probably degraded system structure due to changes made during prototype development.
System will be difficult and expensive to maintain.
Relaxed organizational quality standards for prototype development

Examples:



Paper-based mock-ups of the system user interface (help users refine an interface design and
work through usage scenarios)
Wizard of Oz prototype (extension to the one above): only the user interface is developed

Incremental delivery
Definition: an approach to software development where some of the developed increments are
delivered to the customer and deployed for use in an operational environment
Characteristics:


Customers identify
o the services to be provided by the system (in outline)
o importance of the system’s services to them

Processes


Define outline requirements
download.benjaminsommer.com | Overview

11
October 21, 2011









[SOFTWARE ENGINEERING LECTURE NOTES]

Assign requirements to increments
Design system architecture
Develop system increment
Validate increment
Integrate increment
Validate system
Deploy increment: if system is incomplete, restart with development of system increments
Final system if system is complete

Advantages






Customers can use early increments as prototypes and gain experience that informs their
requirements for later system increments. No re-learning for users when system is available
(part of the real system, unlike prototypes)
Less waiting time for customers until entire system is delivered before they can gain value from
it. Use the software immediately, which satisfies their most critical requirements
Relatively easy to incorporate changes into the system (see incremental development)
Most important system services receive the most testing (highest-priority services are delivered
first). Customers less likely to encounter failures in the most important parts of the system

Problems with incremental delivery:






Can be hard to identify common facilities that are needed by the increments (requirements are
not defined in detail until an increment is to be implemented). Note that most systems require a
set of basic facilities that are used by different parts of the system.
Iterative development can also be difficult when a replacement system is being developed.
Getting useful customer feedback is difficult (users want all the functionality of the old system
and are often unwilling to experiment with an incomplete new system)
Requires a new form of contract, which large customers (government agencies) may find
difficult to accommodate
o Specification is developed in conjunction with the software
o No complete system specification until the final increment is specified
o Conflicts with procurement model of many organizations: complete system specification
is part of the system development contract!

Incremental development and delivery should not be used for (suffer from the same problems of
uncertain and changing requirements)




Very large systems where development may involve teams working in different locations
Some embedded systems where software depends on hardware development
Some critical systems where all the requirements must be analyzed to check for interactions
that may compromise the safety or security of the system

12

Overview | download.benjaminsommer.com
[SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011
Boehm’s spiral model






Is a risk-driven software process framework
Software process is represented as a spiral
Each loop in the spiral represents a phase of the software process
It combines change avoidance with change tolerance
It assumes that changes are a result of project risks and includes explicit risk management
activities to reduce these risks

Each loop is split into four sectors:








Objective setting
o To determine specific objectives, alternatives and constraints
o Constraints on the process and the product are identified
o A detailed management plan is drawn up
o Project risks are identified
o Alternative strategies may be planned
Risk assessment and reduction
o A detailed analysis for each identified project risk is carried out
o Measurements to reduce these risks
Development and validation
o A development model for the system is chosen
o Throwaway prototyping: user interface risks are dominant
o Development based on formal transformations: safety risks are the main consideration
o Waterfall model: main identified risk is a sub-system integration
Planning
o Project is reviewed
o Decision: continue with a further loop of the spiral? If so, plans are drawn up for the
next phase of the project

Advantages:


Explicit recognition of risk

Characteristics:




Begin of cycle of the spiral: elaborating objectives such as performance and functionality
Enumerate alternative ways of achieving these objectives and dealing with the constraints
Development is carried out after risks have been assessed

The Rational Unified Process
 A modern process model that has been derived from work on the UML and the associated
Unified software Development Process
 A hybrid process model
download.benjaminsommer.com | Overview

13
October 21, 2011


[SOFTWARE ENGINEERING LECTURE NOTES]

Brings together elements from all of the generic process models, illustrates good practice in
specification and design and supports prototyping and incremental delivery
A phase model that identifies four discrete phases in the software process
Phases are more closely related to business rather than technical convers (unlike the waterfall
model where phases are equated with process activities)
Separation of phases and workflows
Recognizes that deploying software in a user’s environment is part of the process
Phases are dynamic and have goals
Workflows are static and are technical activities that are not associated with a single phase
(used throughout the development to achieve goals of each phase)








RUP described from three perspectives:



Dynamic perspective: shows the phases of the model over time
Static perspective: shows the process activities that are enacted
o Called ‘workflows’ in the RUP description
o 6 core process workflows and 3 core supporting workflows
Practice perspective: suggests good practices to be used during the process


Phases:








Inception
o Goal: establish a business case for the system
o Identify all external entities (people and systems) that will interact with the system and
define these interactions
o Assess the contribution that the system makes to the business
o Project may be cancelled after this phase if contribution is minor
Elaboration
o Goal: develop an understanding of the problem domain, establish an architectural
framework for the system, develop the project plan and identify key project risks
o On completion: requirements model for the system (may be a set of UML use-cases, an
architectural description, and a development plan for the software)
Construction
o Involves system design, programming and testing
o Parts of the system developed in parallel and integrated during this phase
o On completion: working software system and associated documentation that is ready
for delivery to users
Transition
o Moving the system from the development community to the user community and
making it work in a real environment
o Sometimes ignored in most software process models
o An expensive and sometimes problematic activity
14

Overview | download.benjaminsommer.com
[SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011
o

On completion: a documented software system that is working correctly in its
operational environment

Advantage of dynamic and static views:


Phases of the development process are not associated with specific workflows (all workflows
may be active at all stages of the process)

Static workflows in the RUP:














Business modeling
o Business processes are modeled using business use cases
Requirements
o Actors who interact with the system are identified
o Use cases are developed to model the system requirements
Analysis and design
o A design model is created and documented
o Used tools: architectural models, component models, object models and sequence
models
Implementation
o Components in the system are implemented and structured into implementation subsystems
o Automatic code generation from design models helps accelerate this process
Testing
o Carried out in conjunction with implementation (an iterative process)
o Follows the completion of the implementation
Deployment
o A product release is created, distributed to users and installed in their workplace
Configuration and change management
o Manages changes to the system (supporting workflow)
Project management
o Manages the system development (supporting working)
Environment
o Makes appropriate software tools available to the software development team

Practice perspective and its recognized fundamental best practices (describes good software
engineering practices):






Develop software iteratively: plan increments of the system based on customer priorities
Manage requirements: explicitly document the customer’s requirements
Use component-based architectures
Visually model software: use UML models for static and dynamic views of the software
Verify software quality
download.benjaminsommer.com | Overview

15
October 21, 2011


[SOFTWARE ENGINEERING LECTURE NOTES]

Control changes to software

RUP is not suitable for


Embedded software development

Agile software development
Fundamental characteristics:









Processes of specification, design and implementation are interleaved
o No detailed system specification
o Design documentation is minimized or generated automatically by the programming
environment
o User requirements document only defines the most important characteristics of the
system
System is developed in a series of versions
o End-users and other system stakeholders are involved in specifying and evaluating each
version
System user interfaces are often developed using an interactive development system
o System may then generate a web-based interface for a browser or an interface for a
specific platform
Incremental development methods
Minimize documentation by using informal communications (rather than formal meetings with
written documents)

Agile methods
Typical types of system development:



Small or medium-sized product for sale, developed by a software company
Custom system development within an organization,
o with a clear commitment from the customer to become involved in the development
process
o without massive external rules and regulations

Principles of agile methods:





Customer involvement
o Provide and prioritize new system requirements
o Evaluate the iterations of the system
Incremental delivery
o Customer specifies the requirements to be included in each increment
People not process
o Recognize and exploit the skills of the development team

16

Overview | download.benjaminsommer.com
[SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011
o





Team members should develop their own ways of working without prescriptive
processes
Embrace change
o Perspective: system requirements will change overtime
o System design should accommodate these changes
Maintain simplicity
o Simplicity for the software and for the development process
o Actively work to eliminate complexity from the system

Non-technical problems:






Maintaining simplicity requires extra work
Prioritizing changes can be extremely difficult (esp. for stakeholders; see OpenGL)
Individual team members may not have suitable personalities for the intense involvement that
is typical of agile methods
Many organizations (large companies) are less likely to switch to more informal working
environments (investigated a lot of time to structure and define processes)
Writing contracts between the customer and the supplier may be difficult, since software
requirements documents are usually part of the contract

Questions when considering agile methods and maintenance:



Are systems that are developed using an agile approach maintainable, given the emphasis in the
development process of minimizing formal documentation?
Can agile methods be used effectively for evolving a system in response to customer change
requests?

Plan-driven and agile development
 Iteration occurs within activities with formal documents used to communicate between stages
of the process
 Can support incremental development and delivery
Extreme programming
 Several new versions of a system may be developed by different programmers, integrated and
tested in a day
 Requirements are expressed as scenarios (user stories), which are implemented directly as a
series of tasks
 Programmers work in pairs and develop tests for each task before writing the code
Characteristics / practices:



Incremental development by small, frequent releases of the system
Customer involvement by continuous engagement of the customer in the development team

download.benjaminsommer.com | Overview

17
October 21, 2011




[SOFTWARE ENGINEERING LECTURE NOTES]

Might avoid excessively long working hours by using pair programming, collective ownership of
the system code and by sustainable development process
Change is embraced through regular system releases to customers
Maintaining simplicity by constant refactoring

Extreme programming practices:











Incremental planning
Small releases
Simple design
Test-first development
Refactoring
Pair programming
Collective ownership
Continuous integration
Sustainable pace
On-site customer

Testing practices







Test-first development
o Writing the tests before writing the code
o Run the test as the code is being written and discover problems during development
o Reduces interface misunderstanding
o Task implementers have to thoroughly understand the specification to write tests for
the system
o Avoids the problem of ‘test-lag’
Incremental test development from scenarios
User involvement in the test development and validation
o Help develop acceptance tests for the stories that are to be implemented in the next
release of the system
o Acceptance testing is incremental
The use of automated testing frameworks
o Essential for test-first development
o Tests are written as executable components before the task is implemented
o Should be stand-alone
o Should simulate the submission of input to be tested
o Widely used testing framework: Junit

Pair programming
Advantages:

18

Overview | download.benjaminsommer.com
[SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011






Idea of collective ownership and responsibility for the system (egoless programming); team has
collective responsibility for resolving these problems
Informal review process: each line is looked at by at least two people
Support refactoring (as a process of software improvement)
Discuss software before development: probably have fewer false starts and less rework
Less time spent repairing bugs by informal inspection

Agile project management
Scrum approach: a general agile method but with its focus on managing iterative development rather
than specific technical approaches to agile software engineering
Phases:






Outline planning phase
o Establish the general objectives for the project
o Design the software architecture
Sprint cycles
o Each cycle develops an increment of the system
o Cycles: assess, select, review and develop
Project closure phase
o Wraps up the project
o Completes required documentation (system help frames and user manuals)
o Assesses the lessons learned from the project

Key characteristics of sprint cycles:









Sprints are fixed length (2-4 weeks)
Starting point for planning: product backlog (list of work to be done on the project)
Assessment phase: work is reviewed, priorities and risks are assigned
o Customer is closely involved in this process and can introduce new requirements or
tasks at the beginning of each spring
Selection phase: involves all of the project team
o Select the features and functionality to be developed during the sprint
Develop the software
o Short daily meetings involving all team members to review progress and reprioritize
work (if required)
o Team is isolated from the customer and the organization
o Communications are channeled through the ‘Scrum master’ (to protect the
development team from external distractions)
o No specific suggestions on how to write requirements, test-first development etc.
End of sprint: work is reviewed and presented to stakeholders

Idea behind Scrum:
download.benjaminsommer.com | Overview

19
October 21, 2011




[SOFTWARE ENGINEERING LECTURE NOTES]

Empower the whole team to make decisions
Deliberately avoid the term ‘project manager’
‘Scrum master’: a facilitator who arranges daily meetings, tracks the backlog of work to be done,
records decisions, measures progress against the backlog and communicates with customers
and management outside of the team

Advantages:






Product is broken down into a set of manageable und understandable chunks
Unstable requirements do not hold up progress
Whole team has visibility of everything (improves team communication)
Customers see on-time delivery of increments (gain feedback on how the product works)
Established trust between customers and developers

Scaling agile methods
Characteristics of large software system development:








Collections of separate, communicating systems (in different places and time zones)
‘brownfield systems’: include and interact with a number of existing systems (political issues can
be significant)
Significant fraction of the development is concerned with system configuration rather than
original code development (not necessarily compatible with incremental development and
frequent system integration)
Constrained by external rules and regulations limiting the way that they can be developed
(system document required somehow)
Long procurement and development time
Diverse set of stakeholders (practically impossible to involve all of these different stakeholders
in the development process)

Two perspectives on the scaling of agile methods:




‘scaling up’
o Concerned with using these methods for developing large software systems that cannot
be developed by a small team
‘scaling down’
o Concerned with how agile methods can be introduced across a large organization with
many years of software development experience

Critical adaptions:


Up-front design and system documentation:
o software architecture has to be designed
o documentation to describe critical aspects of the system (database schemas, work
breakdown across teams)
20

Overview | download.benjaminsommer.com
[SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011




cross-team communication mechanisms
o regular phone and video conferences
o short electronic meetings
o communication channels: emails, instant messaging, wikis, social networking systems
continuous integration
o practically impossible: whole system is build every time any developer checks in a
change
o Essential: maintain frequent system builds and regular releases of the system
o New configuration management tools that support multi-team software development
have to be introduced

Difficulties in introducing agile methods to large companies:





Project managers: reluctant to accept the risk of a new approach (if they do not have experience
of agile methods, and since they do not know how this will affect their particular projects)
Large organizations: have quality procedures and standards for all of their projects
A wide range of skills and abilities: agile methods seem to work best when team members have
a relatively high skill level
Cultural resistance to agile methods (organizations with long history of using conventional
system engineering processes)

Requirements engineering
Requirements: descriptions of what the system should do> the services that it provides and the
constraints on its operation.
Requirements Engineering (RE): the process of finding out, analyzing, documenting and checking these
services and constraints
User requirements: statements of what services the system is expected to provide to system users and
the constraints under which it must operate, in a natural language plus diagrams
System requirements: more detailed descriptions of the software system’s functions, services and
operational constraints. The system requirements document / functional specification defines exactly
what is to be implemented. It may be part of a contract between the system buyer and the software
developers.
Functional and non-functional requirements
 Functional requirements:
o Statements of services the system should provide
o How the system should react to particular inputs
o How the system should behave in particular situations
o Optional: what the system should do
o Examples: security (user authentication facilities in the system)
 Non-functional requirements:
download.benjaminsommer.com | Overview

21
October 21, 2011
o
o
o
o

[SOFTWARE ENGINEERING LECTURE NOTES]

Constraints on the services or functions offered by the system
Include constraints concerning timing, development process and standards
Often apply to the system as a whole (unlike individual features or services)
Example: security (limiting access to authorized users)

Functional requirements






Vary from general to very specific requirements (what the system should do vs. local ways of
working/organization of an existing system)
May by expressed as user or system requirements or both
Imprecisions may cause software engineering problems (see ambiguous user requirements)
Function requirements specification should be complete and consistent (no contradictory
definitions) (
Completeness and consistency practically impossible for large complex systems
o Easy to make mistakes and omissions when writing specifications for complex systems
o Many stakeholders in a large system (they often have inconsistent needs)

Non-functional requirements











May relate to emergent system properties: reliability, response time and store occupancy
May define constraints on the system implementation: I/O device capabilities, data
representations used in interfaces
Specify or constrain characteristics of the system as a whole: performance security, availability
Often more critical than individual function requirements
Whole system may be unusable when failing to meet a non-functional requirement
Often more difficult to relate components to nonfunctional requirements
Implementation of these requirements may be diffused
o May affect the overall architecture of a system (rather than the individual components)
o May generate a number of related functional requirements that define new system
services that are required (e.g. security)
o May also generate requirements that restrict existing requirements
Arise through user needs: budget constraints, organizational policies, need for interoperability
with other software/hardware, external factors (safety regulations, privacy legislation)
May come from
o Product requirements: specify/constrain the behavior of the software
 Usability requirements
 Efficiency requirements (performance, space)
 Dependability requirements
 Security requirements
o Organizational requirements: broad system req. derived from policies and procedures in
the customer’s and developer’s organization.
 Environmental requirement (operating environment of the system)
22

Overview | download.benjaminsommer.com
[SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011



o

Operational process requirement (how the system will be used)
Development process requirement (programming language, development
environment, process standards)
External requirements: from factor external to the system and its development process
 Regulatory requirements (what must be done for the system to be used by a
regulator)
 Ethical requirements (ensure the system will be acceptable to its user and the
general public)
 Legislative requirements (ensure the system operates within the law)

Metrics for specifying non-functional requirements: speed, size, ease of use, reliability, robustness,
portability
The software requirements document
Synonyms: software requirements specification, SRS
Definition: official statement of what the system developers should implement. It should include user
and system requirements.
Diverse set of users:






System customers who specify the req. and read them to check that they meet their needs (they
also may make changes)
(Senior) management of the organization that is paying for the system
System Engineers responsible for developing the software
System test engineers to develop validation tests for the system
System maintenance engineers to understand the system and the relationships between its
parts

Structure of a requirements document:






Preface
o Define the expected readership of the document
o Describe its version history
o A rational for the creation of a new version
o A summary of the changes made in each version
Introduction
o Describe the need for the system
o Describe the system’s functions
o Explain how it will work with other systems
o Describe how the system fits into the overall business or strategic objectives of the
organization commissioning the software
Glossary
o Define the technical terms used in the document
download.benjaminsommer.com | Overview

23
October 21, 2011















[SOFTWARE ENGINEERING LECTURE NOTES]

o Should not make assumptions about the experience or expertise of the reader
User requirements definition
o Describe the services provided for the user
o Non-functional system requirements should also be described
o May use natural language, diagrams or other notations that are understandable to
customers
o Product and process standards should be specified (if applicable)
System architecture
o A high-level overview of the anticipated system architecture
o Showing the distribution of functions across system modules
o Architectural components should be highlighted (that are reused)
System requirements specification
o Describe the functional and non-functional requirements in more detail
o Optional: further detail to the non-functional requirements
o Optional: interfaces to other systems
System models
o Include graphical system models showing the relationships between the system
components, the system and its environment
o Examples: object models, data-flow models, semantic data models
System evolution
o Describe the fundamental assumptions on which the system is based
o Any anticipated changes due to hardware evolution, changing user needs etc.
o Useful for system designers: may help to avoid design decisions
Appendices
o Provide detailed, specific information that is related to the application being developed
o Example: hardware and database descriptions
o Hardware requirements: minimal and optional configurations for the system
o Database requirements: logical organization of the data used by the system and the
relationships between data
Index
o A normal alphabetic index
o An index of diagrams
o An index of functions etc.

Requirements specification
 Should be clear, unambiguous, easy to understand, complete, consistent
 Use of natural language, simple tables, forms and intuitive diagrams
 A complete and detailed specification of the whole system
How to write a system requirement specification:


Natural language
24

Overview | download.benjaminsommer.com
[SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011





Structured natural language
Design description languages
Graphical notations
Mathematical specifications

Natural language specification
Guidelines:







Is expressive, intuitive and universal
Use a standard format
Use language consistently to distinguish between mandatory and desirable requirements
Use text highlighting
Do not assume that readers understand technical software engineering language
Try to associate a rationale with each user requirement

Structures specifications





A way of writing system requirements where the freedom of the requirements writer is limited
and all requirements are written in a standard way
Maintains most of the expressiveness and understandability of natural language
Ensures that some uniformity is imposed on the specification
Define one or more standard templates for requirements and represent these templates as
structured forms

Information in a standard form for specifying functional requirements:








Description of the function or entity being specified
Inputs and where these come from
Outputs and where these go to
Information about the information that is needed for the computation or other entities in the
system that are used
Action to be taken
Pre- and post-condition before and after the function is called
Side effects of the operation

Requirements engineering processes
High-level activities:





Feasibility study
Elicitation and analysis
Specification
Validation

download.benjaminsommer.com | Overview

25
October 21, 2011

[SOFTWARE ENGINEERING LECTURE NOTES]

Characteristics of a spiral view




Activities are organized as an iterative process around a spiral
Output is the system requirements document
Amount of time and effort for each activity depends on current stage and type of system to be
developed

Requirements engineering: the process of applying a structured analysis method (e.g. object-oriented
analysis).



Involves analyzing the system and developing a set of graphical system models (case models for
system specification)
Set of models describes the behavior of the system (annotated with additional information; e.g.
system’s required performance or reliability)

Requirements elicitation: a human-centered activity (unlike constraints by rigid system models)
Requirements management: process of managing changing requirements, e.g. modifications to the
system’s hardware, software or organizational environment.
Requirements elicitation and analysis
 Software engineers work with customers and system end-users to find out about
o the application domain
o what services the system should the system provide
o the required performance of the system
o hardware constraints
The requirements elicitation and analysis process:






Requirements discovery
o Interact with stakeholders of the system to discover their requirements (domain
requirements and documentation)
o Several complementary techniques available
Requirements classification and organization
o Takes unstructured collection of requirements
o Groups related requirements
o Organizes them into coherent clusters
o Most common way: model of the system architecture to identify sub-systems and to
associate requirements with ach sub-system
o Practice: requirements engineering and architectural design hard to separate
Requirements prioritization and negotiation
o Conflict of requirements with several stakeholders
o Prioritize requirements
o Find and resolve requirements conflicts through negotiation
26

Overview | download.benjaminsommer.com
[SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011



o Compromises inevitable
Requirements specification
o Document requirements (formal or informal)

Eliciting and understanding requirements from stakeholders is difficult:








Difficult to articulate
Possibly unrealistic demands (stakeholders may don’t know what is and isn’t feasible)
Stakeholders might not know what they want from a computer system (expect in most general
terms)
Requirements engineers may not understand the naturally expressed requirements of
stakeholders (in their own terms and with implicit knowledge)
Different stakeholders have different requirements
Political factors
Dynamic economic and business environment (where the analysis takes place)

Requirements discovery





Synonym: requirements elicitation
The process of gathering information about the required system and existing systems
Distilling the user and system requirements from this information
Sources of information: documentation, system stakeholders, specifications of similar systems
(plus interviews, observations)

Interviewing












Formal and informal interviews
Closed interviews: stakeholder answers a pre-defined set of questions
Open interviews
o No pre-defined agenda
o Requirements engineering team explores a range of issues with system stakeholders
o Develop a better understanding of their needs
Practice: mixture of open and closed interviews
Part of most requirements engineering processes
Questions to stakeholders about the system that they currently use and the system to be
developed
Difficult to elicit domain knowledge through interviews (possibly)
o Impossible to discuss domain requirements without using terminology. Inadequate
knowledge leads to misunderstandings
o ‘basis’/fundamental (but professional) knowledge might be difficult to explain to nonprofessionals (in terms of software engineering or computer science)
Ineffective technique for eliciting knowledge about organizational requirements and constraints
Characteristics of effective interviews
download.benjaminsommer.com | Overview

27
October 21, 2011

[SOFTWARE ENGINEERING LECTURE NOTES]

o



Open-minded: avoid pre-conceived ideas about the requirements (surprising
requirements)
o Prompt the interviewee to get discussions (using a springboard questions, requirements
proposal, b working together on a prototype system)
Should be used with other requirements elicitation techniques (not to miss essential
information)

Scenarios









Often easier to relate to real-life examples rather than abstract descriptions
Useful for adding detail to an outline requirements description
Covers one or a small number of possible interactions
Starts with an outline of the interaction
May include
o What the system and users expect when the scenario start
o Normal flow of events in the scenario
o What can go wrong and how this is handled
o Information about other activities going on at the same time
o System state when the scenario finishes
Involves working with stakeholders to identify scenarios and to capture details to be included in
these scenarios
May be written as texts, supplemented by diagrams, screen shots etc.

Use cases










A requirements discovery technique that were first introduced in the Object method
A fundamental feature of the unified modeling language
Identifies the actors involved in an interaction and names the type of interaction (supplemented
by additional information describing the interaction with the system)
Documented using a high-level use case diagram
No hard and fast distinction between scenarios and use cases
Identify the individual interactions between the system and its users or other systems
Should be documented with a textual description (may be linked to other models in the UML)
Effective technique (along with scenarios) for eliciting requirements form stakeholders who
interact directly with the system
UML is a de facto standard for object-oriented modeling

Ethnography



Software systems are used in social and organizational contexts (may constrain or influence
software system requirements)
Successful systems: satisfy social and organizational requirements

28

Overview | download.benjaminsommer.com
[SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011






Definition: an observational technique that can be used to understand operational processes
and help derive support requirements for these processes
Effective for discovering 2 types of requirements:
o Requirements that are derived from the way in which people actually work (rather than
the way in which process definitions say they ought to work)
o Requirements that are derived from cooperation and awareness of other people’s
activities
Can be combined with prototyping
Ethnographic studies can reveal critical process details that are often missed by other
requirements elicitation techniques)

Requirements validation
 The process of checking that requirements actually define the system that the customer really
wants
 Overlaps with analysis: it is concerned with finding problems with the requirements
 Important because errors in a requirements document can lead to extensive rework costs
 Process should not be underestimated
Checks during the validation process:






Validity checks
Consistency checks
o Requirements in the document should not conflict
Completeness checks
o Requirements that define all functions and constraints intended by the system user
Realism checks
o Check to ensure that requirements can actually be implemented
Verifiability
o System requirements should always be written so that they are verifiable
o Reduces the potential for dispute between customer and contract

Requirements techniques to be used individually or in conjunction:





Requirements reviews
o Systematic analysis by a team of requires to check for errors and inconsistencies
Prototyping
o Demonstration of an executable model of the system
o Personal experimentation to check if it meets their real needs
Test-case generation
o Requirements should be testable
o Difficult or impossible design often means difficult implementation

download.benjaminsommer.com | Overview

29
October 21, 2011

[SOFTWARE ENGINEERING LECTURE NOTES]

Requirements management
Definition: the process of understanding and controlling changes to system requirements







Requirements for large systems are always changing. Reasons:
o These systems are usually developed to address ‘wicked’ problems (software
requirements are bound to be incomplete)
Keep track of individual requirements
Maintain links between dependent requirements
Establish a formal process for making change proposals and linking these to system
requirements
Start planning how to manage changing requirements during the requirements elicitation
process

Reasons why change is inevitable:




Business and technical environment of the system always changes after installation
People how pay for a system and the users of that system are rarely the same people
Large systems usually have a diverse user community
o Many users have different requirements and priorities that may be conflicting or
contradictory
o Final system requirements: a compromise

Requirements management planning





Establishes the level of requirements management detail that is required
Required decisions to be made
o Requirements identification: each requirements must be uniquely identified
o A change management process: set of activities that assess the impact and cost of
changes
o Traceability policies: define the relationships between each requirement and between
the requirements and the system design that should be recorded
o Tool support: process large amounts of information about the requirements (specialist
requirements management systems, spreadsheets, simple database systems)
Required tool support for
o Requirements storage: requirements should be maintained in a secure, managed data
store that is accessible to everyone involved in the requirements engineering process
o Change management: process of change management is simplified if active tool support
is available
o Traceability management: some tools help discover possible relationships between
requirements

Requirements change management
30

Overview | download.benjaminsommer.com
[SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011





Should be applied to all proposed changes to a system’s requirements (after they have been
approved)
Essential because
o Need to decide if the benefits of implementing new requirements are justified by the
costs of implementation
Advantage of a formal change management
o Change proposals are treated consistently
o Changes to the requirements document are made in a controlled way

Principal stages to a change management process:




Problem analysis and change specification
Change analysis and costing
Change implementation

System modeling
Definition: the process of developing abstract models of a system, with each model presenting a
different view or perspective of that system.




Represent the system through graphical notation (UML) or formal models (mathematics)
Used during requirements engineering process: help derive the requirements for a system
Used during design process: describe the system to engineers implementing the system and
after implementation to document the systems structure and operation

System models:


Abstraction of the system; leaves out details

Perspectives for creating models:





External perspective: model the context/environment of the system
Interaction perspective: model the interactions between a system and its environment or
between the components of a system
Structural perspective: model the organization of a system or the structure of the data
Behavioral perspective: model the dynamic behavior of the system and how it responds to
events

Type of diagrams representing the essentials of a system:





Activity diagrams: activates involved in a process or in data processing
Case diagrams: interactions between a system and its environment
Sequence diagrams: interactions between actors and the system and between system
components
Class diagrams: object classes in the system and the associations between these classes
download.benjaminsommer.com | Overview

31
October 21, 2011


[SOFTWARE ENGINEERING LECTURE NOTES]

State diagrams: how the system reactions to internal and external events

Why graphical models are used:




A means of facilitating discussions about an existing or proposed system
A way of documenting an existing system
A detailed system description that can be used to generate a system implementation

Context models
 Normally show that the environment includes several other automated systems
 Do not show types of relationships between the systems in the environment and the system to
be specified
 Used along with other models (business process models)
UML activity diagrams:









Show the activities that make up a system process
Show the flow of control from one activity to another
Start of process: indicated by a filled circle
End of process: filled circle inside another circle
Activities: rectangles with round corners
Arrows represent the flow of work from one activity to another
Arrows annotated with guards: indicate the condition when that flow is taken
Solid bar: indicate activity coordination

Interaction models
Some types of interaction:



User interaction: user inputs and outputs
System interaction: systems and components

Modeling user interaction:


Helps to understand if a proposed system structure is likely to deliver the required system
performance and dependability

Use case modeling




Used to model interactions between a system and external actors (users, other systems)
Used to support requirements elicitation
Gives a fairly simple overview of an interaction (you have to provide more detail to understand
what is involved: textual description, structured description in a table, sequence diagram)

Use case:

32

Overview | download.benjaminsommer.com
[SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011



Represents a discrete task (involves external interaction with a system)
Shown as an ellipse with the actors involved in the use case

Key elements often involved in use cases: actors, description, data, stimulus, response, comments
Sequence diagrams










Used to model the interactions between
o the actors and the objects in a system
o the objects themselves
Shows the sequence of interactions that take place during a particular use case or use case
instance
Objects and actors involved are listed along the top of the diagram
Interactions between objects are indicated by annotated arrows
Rectangle on the dotted lines indicates the lifeline of the object concerned
Read the sequence of interactions from top to bottom
Annotations on the arrows indicate the calls to the objects, their parameters and the return
values
Include every interaction in sequence diagrams for code generation or detailed documentation

Structural models
 Display the organization of a system in terms of the components that make up that system and
their relationships
 Static models: show the structure of the system design
 Dynamic models: show the organization of the system when it is executing
o May be very different from a static model of the system components (for a dynamic
organization of a system as a set of interacting threads)
 Creation of structural models:
o Through discussions and system architecture designs
Class diagrams






Used when developing an object-oriented system model to show the classes in a system and the
associations between these classes
Association: a link between classes that indicates that there is a relationship between these
classes
o Each class may have some knowledge of its associated class
Expressed at different levels of detail
o World: develop of model (essential objects)
Types of relationship: 1 to 1, m to 1, m to n

Generalization


An everyday technique that we use to manage complexity
download.benjaminsommer.com | Overview

33
October 21, 2011




[SOFTWARE ENGINEERING LECTURE NOTES]

Easier to identify common characteristics
Possible to make general statements that apply to all class members
UML has a specific type of association to denote generalization
o Shown as an arrowhead pointing up to the more general class
o Attributes and operations associated with higher-level classes are also associated with
the lower-level classes
o Lower-level classes are subclasses inherit the attributes and operations from their
superclasses
o Lower-level classes add more specific attributes and operations

Aggregation




UML provides a special type of association between classes called aggregation
One object is composed of other objects
Use a diamond shape next to the class that represents the whole

Behavioral models
 Show what happens or what is supposed to happen when a system responds to a stimulus from
its environment
o Data: data arrives that has to be processed by the system
o Events: event happens that triggers system processing (may have associated data)
 Dynamic behavior of the system (as it is executing)
Data-driven modeling






Show the sequence of actions involved in processing input data and generating an associated
output
Useful during the analysis of requirements as they can be used to show end-to-end processing in
a system
Data-flow models:
o Illustrate processing steps in a system
o Tracking and documenting how the data associated with a particular process moves
through the system
o Helps analysts and designers understand what is going on
o Simple and intuitive
o Possible to explain them to potential system users who can then participate in validating
the model
o Focus on system functions
o Do not recognize system objects (therefore, data flow models not included in UML)
o Similar to activity diagrams in UML 2.0 (data-driven systems are common in business)
o Highlight functions
Alternate way: use UML sequence diagrams
o Highlight objects in a system
34

Overview | download.benjaminsommer.com
[SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011
Event-driven modeling






Shows how a system responds to external and internal events
Based on the assumption that
o A system has a finite number of states
o Events may cause a transition from one state to another
Particularly appropriate for real-time systems
State diagrams (UML):
o Show system states and events that cause transitions from one state to another
o Do not show the flow of data within the system
o May include additional information on the computations carried out in each state
o Rounded rectangles: represent system states (may include a brief description of the
actions taken in that state)
o Labeled arrows: represent stimuli that force a transition
o Optional: start and end states using filled circles (see activity diagrams)

Model-driven engineering
 An approach to software development where models rather than programs are the principal
outputs of the development process
 Programs (execute on hardware/software platform) are generated automatically from models
 Raises level of abstraction in software engineering (no longer have to concerned with
programming language details or specifics of execution platforms)
 Roots in model-driven architecture (MDA); was proposed by the Object Management Group
(OMG)
 Concerned with all aspects of the software engineering process (including model-based
requirements engineering, software processes for model-based development, model-based
testing)
Advantages:







Allows engineers to think about systems at a high level of abstraction
No concern for the details of their implementation
Reduces the likelihood of errors
Speeds up the design and implementation process
Allows for the creation of reusable, platform-independent application models
Only a translator for a platform is required to adapt the system to some new platform
technology

Disadvantages:


Abstractions that are supported by the models are not always the right abstractions for
implementations (using an off-the-shelf, configurable package)

download.benjaminsommer.com | Overview

35
October 21, 2011





[SOFTWARE ENGINEERING LECTURE NOTES]

Arguments for platform independence are only valid for large long-lifetime systems where the
platforms become obsolete during a system’s lifetime (for this class of systems, implementation
is not the major problem)
Requirements engineering, security and dependability, integration with legacy systems, and
testing are more significant
Not clear whether the costs and risks of model-driven approaches outweigh the possible
benefits

Model-driven architecture








Is a model-focused approach to software design and implementation
Uses a sub-set of UML models to describe the system
Models at different levels of abstraction are created
Generate a working program without manual intervention from a high-level platform
independent model (in principle)
Complete automated translation tools are unlikely to be available in the near future
Translation of PIMs to PSMs is more mature (several commercial tools exists)
An uneasy relationship between agile methods and model-driven architecture

Types of abstract system models






Computation independent model (CIM):
o Models the important domain abstractions used in the system
o Sometimes called domain models
Platform independent model (PIM):
o Models the operation of the system without reference to its implementation
o Usually described using UML models that show the static system structure and how it
responds to external and internal events
Platform specific models (PSM):
o Transformations of the platform-independent model with a separate PSM for each
application platform
o Layers of PSM may add some platform-specific detail
o First-level PSM: middleware-specific, database independent

Executable UML





Have to be able to construct graphical models whose semantics are well defined
Need to add information to graphical models about the ways in which the operations defined in
the model are implemented
Supported by xUML or Executable UML
UML is more concerned with software design and expressiveness, rather than programming
language or semantic details of the language

36

Overview | download.benjaminsommer.com
[SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011




Number of model types has been dramatically reduced to 3 key model types (to create
executable sub-set of UML):
o Domain models: identify the principal concerns in the system (UML class diagrams with
objects, attributes and associations)
o Class models: classes are defined (along with their attributes and operations)
o State models: a state diagram is associated with each class and is used to describe the
lifecycle of the class
Dynamic behavior of the system may be
o Specified declaratively using the object constraint language (OCL)
o Expressed using UMLs action language (a very high-level programming language)

Architectural design










Concerned with understanding how a system should be organized and designing the overall
structure of that system
The first stage in the software design process
The critical link between design and requirements engineering (identifies the main structural
components in a system and the relationships between them)
Output: architectural model (describes how the system is organized as a set of communicating
components)
A significant overlap between the processes of requirements engineering and architectural
design (in practice) (a system specification should not include any design information)
Different levels of abstraction
o Individual program architectures
o Distributed system architectures (composed of several programs, components)
Affects performance, robustness, disreputability, maintainability of a system
Modeled using
o Simple block diagrams (a box represents a component)
o Arrows (signals or data flow between components)

Advantages of explicitly designing and documenting software architectures:




Stakeholder communication (high-level presentation; focus discussions)
System analysis (effect on design’s critical requirements: performance, reliability,
maintainability)
Large-scale reuse (system architecture often the same for systems with similar requirements)

Ways an architectural model is used:



Facilitate discussions about the system design
Document an designed architecture

download.benjaminsommer.com | Overview

37
October 21, 2011

[SOFTWARE ENGINEERING LECTURE NOTES]

Architectural design decisions
 A creative process: design a system organization that will satisfy the functional and nonfunctional requirements of a system
 Activities within the process depend on the
o Type of system being developed
o Background and experience of the system architect
o Specific requirements for the system
 A series of decisions to be made rather than a sequence of activities
 Architecture may be based on a particular pattern or style
Architectural pattern



A description of a system organization (client-server organization, layered organization)
Capture the essence of an architecture that has been used in different software systems

Architectural style


Choose most appropriate structure (client-server, layered)

Architectural pattern and style should depend on the non-functional system requirements:










Performance
o Localize critical operations within a small number of components
o Deployed on the same computer (rather than distributed)
o Use a few relatively large components and fine-grain components
o Reduce component communications
o Consider run-time system organizations (allows the system to be replicated and
executed on different processors)
Security
o Layered structure should be used
o Most critical assets protected in the innermost layers
o A high level of security validation applied to these layers
Safety
o Safety-related operations should be located in either a simple components or in a small
number of components
o Reduces the cost and problems of safety validation
o Provides related protection systems (safely shut down system if failure)
Availability
o Include redundant components (replace and update components without stopping the
system)
Maintainability
o Use fine-grain, self-contained components
o Separate producers of data from consumers
38

Overview | download.benjaminsommer.com
[SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011
o

Shared data structures should be avoided

Architectural views
 Impossible to represent all relevant information about a system’s architecture in a single
architectural model
 Views might be:
o How the system is decomposed into modules
o How the run-time processes interact
 Logical view
o Key abstractions in the system (as objects, object classes)
o Relate system requirements to entities in this logical view
 Process view
o How system is composed of interacting processes (at run-time)
o Useful for making judgments about non-functional system characteristics (performance,
availability)
 Development view
o How the software is decomposed for development
o Shows the breakdown of the software into components (implemented by a single
developer or developer team)
o Useful for software managers and programmers
 Physical view
o How software components are distributed across the processors in the system
o Shows system hardware
o Useful for system engineers planning a system deployment
 Conceptual view
o Abstract view of the system
o Bases for decomposing high-level requirements into more detailed specifications
o Help engineers make decisions about components (that can be reused)
o Represent a product line rather than a single system
o Used to support architectural decision making
o A way of communicating the essence of a system to different stakeholders
o Possible to associate architectural patterns with different view of a system
 Languages to describe views
o UML (might remain most commonly used way of documenting system architectures)
o ADLs (specialized architectural description languages) (components and connectors,
rules, guidelines)
Architectural patterns
 Patterns as a way of presenting, sharing and reusing knowledge about software system is widely
used
 Patterns for organizational design, usability, interaction, configuration management

download.benjaminsommer.com | Overview

39
October 21, 2011




[SOFTWARE ENGINEERING LECTURE NOTES]

A stylized, abstract description of good practice (tried and testing in different systems and
environments)
Describe a system organization that has been successful in previous systems
Include information of when it is and is not appropriate to use that pattern, the pattern’s
strengths and weaknesses

Model-View-Controller (MVC):


Basis of interaction management in many web-based systems

Layered architecture












Separation and independence allow changes to be localized
System functionality: organized into separate layers
Each layer relies on the facilities and services offered by the layer immediately beneath it
Supports incremental development of systems
Architecture: changeable and portable (layers can be easily replaced as long as the interface is
constant)
Easier to provide multi-platform implementations of an application system (machine
dependencies in inner layers)
Disadvantages:
o Clean separation between layers often difficult
o High-level layer may have to interact directly with lower-level layers (rather than
through the layers immediately below)
o Performance penalty (multiple levels of interpretation of a service request)
Sample: a generic layered architecture
o User interface
o User interface management; authentication and authorization
o Core business logic; application functionality; system utilities
o System support (OS, database etc.)
Sample: LIBSYS
o 5 layers
o Allows controlled electronic access to copyright material from a group of university
libraries

Repository architecture






All data in a system is managed in a central repository (accessible to all system components)
Components do not interact directly (through repository instead)
When to use
o System with large volumes of information generated (stored for a long time)
o Data-driven systems (inclusion of data in the repository triggers an action or tool)
Advantages
40

Overview | download.benjaminsommer.com
[SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011





o Components can be independent
o Changes made by one component can be propagated to all components
o All data can be managed consistently (in one place)
Disadvantages
o Single point of failure: problems in the repository affect the whole system
o Inefficiencies in organizing all communication through the repository
o Difficult to distribute the repository across several computers
Sample: architecture for an IDE
o UML editors
o Code generators
o Java editor
o Python editor
o Report generator
o Design analyzer
o Design translator

Client-server architecture










System’s functionality is organized into services (each services delivered from a separate server)
Clients: users of these services; they access servers to make use of them
When to use
o Data in a shared database has to be accessed from a range of locations
o Load on a system is variable (servers can be replicated)
Advantages
o Servers can be distributed across a network
o General functionality can be available to all clients (does not need to implemented by all
services)
Disadvantages
o Each service is a single point of failure
o Susceptible to denial of service attacks or server failure
o Performance: unpredictable (depends on the network and system)
o Management problems possible (servers owned by a different organization)
Sample: video/DVD library
o Catalogue server
o Video server
o Picture server
o Web server

Pipe and filter architecture




Run-time organization of a system
Functional transformations process their inputs and produce outputs
Data flows from one to another and is transformed as it moves through the sequence
download.benjaminsommer.com | Overview

41
October 21, 2011







[SOFTWARE ENGINEERING LECTURE NOTES]

Each processing component (filter) is discrete (carries out one type of data transformation)
Wen to use
o Data processing applications (batch- and transaction-based)
o Applications where inputs are processed in separate stages to generate related outputs
Advantages
o Easy to understand
o Supports transformation reuse
o Workflow style matches structure of many business processes
o Evolution by adding transformation is straightforward
o Implemented as sequential or concurrent system
Disadvantages
o Format of data transfer has to be agreed upon between communicating transformations
o Each transformation must parse input and unparsed output to the agreed form
o Increases system overhead
o Possibly impossible to reuse functional transformations that use incompatible data
structures

Application architectures
 Intended to meet a business or organizational need
 Business characteristics: Hire people, issue invoices, keep accounts etc.
 Business operating: use common sector-specific applications
 Encapsulate the principal characteristics of a class of systems
 May be re-implemented when developing new systems
 Possible application reuse without reimplementation for many business systems (ERP, SAP,
Oracle, COTS)
 Identify stable structural features of the system architectures
Ways of using models of application architectures:










As a starting point for the architectural design process
o If unfamiliar with type of application
o Base initial design on a generic application architecture (specialization required)
As a design checklist
o Compare developed architectural design with generic application architecture
o Check consistency
As a way of organizing the work of the development team
o Possible to develop application architectures in parallel
o Assign work to group members to implement components within the architecture
As a means of assessing components for reuse
o Compare available components with generic structures
o Comparable components in the application architecture?
As a vocabulary for talking about types of applications
42

Overview | download.benjaminsommer.com
[SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011
o

Use concepts identified in the generic architecture to talk about the applications

Transaction processing systems










Abbreviation: TP systems
Designed to process user requests for information from a database, or requests to updated a
database
Database transaction: a sequence of operations that is treated as a single unit (an atomic unit)
(and all of the operations have to be completed before the database changes are made
permanent)
Prevent inconsistencies in the database
Transaction: a coherent sequence of operations that satisfies a goal
TP systems are usually interactive systems (users make asynchronous requests for services)
Possible organization: pipe and filter architecture
Sample: ATM system

Information systems







Allows controlled access to a large base of information
Samples: library catalog, flight timetable, records of patients in a hospital
Increasingly web-based systems
Possible implementation: layered architecture
o Top layer: user interface (UI)
o Second layer: UI functionality (delivered through web browser) (log in, checking
components, data validation components, menu management components)
o Third layer: functionality of the system (components of system security etc.)
o Lowest layer: database management system
Often implemented as multi-tier client-server architectures
o Web server: responsible for all user communications
o Application server: application-specific logic, information storage, information retrieval
request
o Database server: moves information to/from database, handles transaction
management

Language processing systems




Translate natural/artificial languages into another representation of that language
May execute resulting code for programming languages (e.g. script languages)
Samples:
o Compilers translate a programming language into machine code
o Translate an XML data description into commands to query a database to an alternative
XML representation
o Natural language processing systems may translate one natural language to another
download.benjaminsommer.com | Overview

43
October 21, 2011


[SOFTWARE ENGINEERING LECTURE NOTES]

Possible architecture (programming language)
o Source language instructions: define the program to be executed
o Translator: converts source language instructions into instructions for an abstract
machine
o Interpreter: fetches the instructions for execution; executes them using data from the
environment (if required) (usually hardware unit processing machine instructions or
software component)
o Output of the process: result of interpreting the instructions on the input data

Pipe and filter compiler architecture (components):













Lexical analyzer
o Takes input language tokens
o Converts them to an internal form
Symbol table
o Holds information about the names of entities (variables, class names, object names
etc.)
Syntax analyzer
o Checks syntax of the language being translated
o Uses a defined grammar of the language
o Builds a syntax tree
Syntax tree
o An internal structure representing the program being compiled
Semantic analyzer
o Uses information from the syntax tree and symbol table
o Checks semantic correctness of the input language text
Code generator
o Walks the syntax tree
o Generates abstract machine code
Additional components:
o Analyze and transform the syntax tree (improve efficiency and remove redundancy from
generated machine code)
o Dictionaries

Design and implementation





Develop and executable software system
A stage in software engineering process
Software design and implementation activities are invariably interleaved
Software design
o Creative activity
o Identify software components and their relationships
o Take implementation issues into account when developing a design
44

Overview | download.benjaminsommer.com
[SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011



Software implementation
o Process of realizing the design as a program
Important implementation decision
o Buy or build the application software? (COTS vs. open-source)

Object-oriented design using the UML
 Object-oriented system
o Made up of interacting objects that maintain their own local state (provide operations
on that state)
 Design object classes and the relationships between them
 What to do to develop a system design
o Understand and define the context and external interactions with the system
o Design the system architecture
o Identify the principal objects in the system
o Develop design models
o Specify interfaces
 Design is not a clear-cut, sequential process (ideas, propose solutions, refine solutions, ideas
etc.)
System context and interactions







Understand relationships between software and external environment
Decide how to provide required system functionality, how to structure the system to
communicate with its environment
Set the system boundaries helps to decide what features are implemented
System context: a structural model that demonstrates other systems in the environment
o May be represented using associations (relationships)
o Nature of relationships are specified
o Using a simple block diagram
Interaction model: a dynamic model that shows how the system interacts with its environment
o Model with an abstract approach (not too much detail)
o Use a case model
o Cases should be described in structured natural language

Architectural design




Base knowledge: system context and interactions plus general knowledge of principles of
architectural design (with more detailed domain knowledge)
Identify major components and their interactions
Organize components using an architectural pattern (layered, client-server etc.; optional)

Object class identification


Prerequisites:
download.benjaminsommer.com | Overview

45
October 21, 2011










[SOFTWARE ENGINEERING LECTURE NOTES]

o Ideas about the essential objects in the system to be designed
High-level system objects are needed to encapsulate the system interactions defined in the use
cases (usually)
Methods how to identify object classes
o Grammatical analysis of a natural language description of the system to be constructed
(nouns: objects, attributes; verbs: operations, services)
o Tangible entities in the application domain (aircraft, roles, events, interactions, locations
etc.)
o Scenario-based analysis where various scenarios of system use are identified and
analyzed in turn (team responsible for the analysis must identify the required objects,
attributes and operations)
Use several knowledge sources to discover object classes
Information from application domain knowledge or scenario analysis to refine/extend initial
objects (can be collected from requirements documents, discussions with users, from analyses
of existing systems)
Focus on objects themselves (without thinking about how these might be implemented)
Look for common features (then design inheritance hierarchy for the system)

Design models










Show objects or object classes in the system
Show associations and relationships between objects
Synonym: system models
A bridge between the system requirements and the implementation of a system
They have to be abstract (to focus on relationships)
They have to include enough detail for programmers (to make implementation decisions)
Solution: develop models at different levels of detail
Important step: decide on the needed design models and the level of detail required in these
models (depends on type of system)
With UML, develop 2 kinds of models
o Structural models: static structure of the system using objects and relationships
o Dynamic models: dynamic structure of the system; show interactions between system
objects

Useful models for adding detail to use case and architectural models:




Subsystem models
o Show logical groupings of objects into coherent subsystems
o Represented using a form of class diagram (each subsystem shown as a package with
enclosed objects)
o Subsystem models are static models (structural)
Sequence models
46

Overview | download.benjaminsommer.com
[SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011



o Show sequence of object interactions
o Represented using a UML sequence / collaboration diagram
o Sequence models are dynamic models
State machine models
o Show how individual objects change their state in response to events
o Represented using state diagrams (in the UML)
o State machine models are dynamic models

Interface specification












Important part of an design process
To design objects and subsystem in parallel
Concerned with specifying the detail of the interface to an object / group of objects
Define signatures and semantics of the services (provided by the object / group of objects)
Can be specified in the UML (same notation as a class diagram)
UML stereotype <<interface>> should be included
No attribute section
Semantics of the interface
o Defined using the object constraint language (OCL)
Do not include details of the data representing in an interface design (no attributes in the
specification)
Design that is more maintainable
Not a simple 1:1 relationship between objects and interfaces
o One object may have several interfaces
o Supported directly in Java
o Group of objects may all be accessed through a single interface

Design patterns
 Pattern is
o A description of the problem and the essence of its solution (solution may be reused in
different settings)
o Not a detailed specification
o A description of “accumulated wisdom and experience”
o A well-tried solution to a common problem
 Usually associated with object-oriented design
 Published patterns often rely on object characteristics (e.g. inheritance, polymorphism)
 A way of reusing the knowledge and experience of other designers
 Essential elements of design patterns
o A name (unique, meaningful)
o A description of the problem area (when to apply the pattern)
o A solution description of the parts of the design solution, their relationships and their
responsibilities (not a concrete design description; a template for a design solution)
download.benjaminsommer.com | Overview

47
October 21, 2011

[SOFTWARE ENGINEERING LECTURE NOTES]

o

A statement of the consequences (results, trade-offs); helps to decide whether or not to
use the design pattern
Any design problem may have an associated pattern that can be applied
Patterns support high-level concept reuse
A great idea, but requires experience of software design to use them effectively
o Recognize situations where patterns can be applied
Sample: observer pattern






Implementation issues
 Create an executable version of the software
 May involve
o developing programs in high- or low-level programming languages
o Tailoring and adapting generic, off-the-shelf systems to meet the specific requirements
of an organization
Reuse




Due to costs and schedule pressure
Develop new systems more quickly, with fewer development risks and lower costs
Software should be more reliable

Possible at a number of different levels:








Abstraction level
o Don’t reuse software directly
o Use knowledge of successful abstractions in the design of your software
o Ways of representing abstract knowledge for reuse: design patterns and architectural
patterns
Object level
o Directly reuse objects from a library (rather than writing code)
o Find appropriate libraries and discover if objects and methods offer the functionality
needed
o Sample: process mail messages (in Java)
Component level
o Components: collections of objects and object classes
o Adapt and extend components by adding some source code
o Sample: user interface
System level
o Reuse entire application systems
o Involves some kind of configuration of these systems
o Done by adding/modifying code or by using system’s own configuration interface
o Used by most commercial systems (generic COTS systems are adapted and reused)

48

Overview | download.benjaminsommer.com
[SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011
Costs associated with reuse:





Costs of time spent in looking for software to reuse and assessing whether or not it meets the
needs
Costs of buying the reusable software (can be very high for large COTS systems)
Costs of adapting and configuring the reusable software components or systems to reflect the
requirements
Costs of integrating reusable software elements with each other and with the new code that has
been developed

Configuration management








Change management is absolutely essential
General process of managing a changing software system
Aim: support the system integration process so that all developers can
o Access the project code and documents in a controlled way
o Find out what changes have been made
o Compile and link components to create a system
Fundamental configuration activities
o Version management (keep track of different versions; stop overwriting code being
submitted by someone else)
o System integration (define what versions of components are used to create each version
of a system; description is used to build a system automatically by compiling and linking
the requirements components)
o Problem tracking (allow users to report bugs and other problems)
See: software configuration management tools (integrated or separate)

Host-target development









Most software development is based on host-target model
o Software is developed on one machine (host)
o Software runs on separate machines (targets)
Alternate perspective: development-execution platform
Often use of simulators in case of development for
o Embedded systems
o Different platforms or expensive hard drive
Simulators
o Speed up development process for embedded systems
o Are expensive to develop
o Usually only available for most popular hardware architectures
In case middleware is being used, the software is usually transferred to the execution platform
for testing (due to license restrictions, etc.)

download.benjaminsommer.com | Overview

49
October 21, 2011





[SOFTWARE ENGINEERING LECTURE NOTES]

Integrated tools of a software development platform (to support software engineering
processes)
o An integrated compiler and syntax-directed editing systems
o Language debugging system
o Graphical editing tools (edit UML models)
o Testing tools (JUnit) to automatically run a set of tests on a new version of a program
o Project support tools (help to organize code for different development projects)
o Advanced tools like static analyzers
IDE: an integrated development environment, made up of several software development tools
and that support different aspects of software development
Document decisions on hardware and software deployment using UML deployment diagrams

Issues to consider when to decide how the developed software will be deployed for distributed systems:






Hardware and software requirements of a component
o A component must be deployed on a platform that provides the required
hardware/software support (in case the component has been designed for a specific
hardware architecture or relies somehow on it)
Availability requirements of the system
o High-availability systems may require components to be deployed on more than one
platform
o An alternative implementation of the component is available in case of platform failure
Component communications
o Deploy components on the same platform (or those physically close) in case of high
level of communications traffic between components
o Reduces communications latency, delay between the time a message is sent by one
component and received by another

Open source development
 An approach to software development in which the source code of a software system is
published and volunteers are invited to participate in the development process
 Roots: Free Software Foundation
 Successful open source system sill rely on a core group of developers who control changes to
the software
 Samples: Linux, Java, Apache, MySQL (IBM, Sun)
 Fairly cheap/free to acquire open source software
 Emerging/common business models: selling support for a product rather than selling a software
product
Open source licensing


Common licenses: GPL, LGPL, BSD

50

Overview | download.benjaminsommer.com
[SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011








Establish a system for maintaining information about pen source components that are
downloaded and used
Be aware of the different types of licenses and understand how a component is licensed before
it is used
Be aware of evolution pathways for components
Educate people about open source
Have auditing systems in place
Participate in the open source community
Trend:
o Increasingly difficult to build a business by selling specialized software systems
o Sell support and consultancy to software users for their open source software

Software testing















Intended
o To show that a program does what it is intended to do
o To discover program defects before it is put into use
Goals of the testing process
o Validation testing: demonstrate that the software meets its requirements (to the
developer and customer)
o Defect testing: discover incorrect, undesirable or specification non-conform behavior of
the software
Usually, not all software defects or incorrect required behaviors (according to specification) are
found
Testing can only show the presence of errors, not their absence
Part of software verification and validation (V&V) processes
o Concerned with checking that software being developed meets its specification and
delivers the functionality expected by the people paying for the software
o May involve software inspections and reviews
Software verification
o Check that the software meets its stated functional and non-functional requirements
o Establish confidence that the software is fit for purpose
Software validation
o A more general process
o Ensure that the software meets the customer’s expectations
o Goes beyond simple conformance checks with the specification
o Essential: requirements specifications do not always reflect the real wishes or needs of
system customers and users
Software purpose
o The more critical the software, the more important that it is reliable
User expectations

download.benjaminsommer.com | Overview

51
October 21, 2011

[SOFTWARE ENGINEERING LECTURE NOTES]

o















Usually lower for newly installed software (users may tolerate failures because the
benefits of use outweigh the costs of failure recovery)
o More thorough testing of later versions may be required as software matures
Marketing environment
o Competing products
o Price that customers are willing to pay for a system
o Required schedule for delivering that system
o Competitive environment: release program before it has been fully tested and
debugged (be the first into the market)
Inspections and reviews (static V&V)
o Analyze and check the system requirements, design models, the program source code
and even proposed system tests
Inspections
o Focus on the source code of a system
o Any readable representation can be inspected (requirements, design model)
o Use knowledge of the system, its application domain and the programming / modeling
language to discover errors
o Cannot replace software testing (unexpected interactions, timing problems, system
performance)
Advantages of software inspection over testing
o A single inspection session can discover many errors in a system (static process)
o During testing, errors can mask other errors (side effects of the original error or new
error)
o Incomplete versions of a system can be inspected without additional costs
o Can also consider broader quality attributes of a program (compliance with standards,
portability, maintainability)
o Can look for inefficiencies, inappropriate algorithms, poor programming style (could
make the system difficult to maintain and update)
Test cases
o Specifications of the inputs to the test and the expected output from the system, plus a
statement of what is being tested
Stages of testing
o Development testing (tested during development)
o Release testing (separate testing team tests a complete versions before it is released)
o User testing (potential users test the system in their own environment)
Usually involves a mixture of manual and automated testing

Development testing
 Includes all testing activities that are carried out by the team developing the system
 Testing at 3 levels:
o Unit testing: individual program units or object classes are tested
52

Overview | download.benjaminsommer.com
[SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011
o





Component testing: several individual units are integrated to create composite
components (should focus on testing component interfaces)
o System testing: some or all of the components in a system are integrated and the
system is tested as a whole (should focus on testing component interactions)
Primarily a defect testing process
Discover bugs in the software
Usually interleaved with debugging

Unit testing








Testing program components (methods, object classes)
Test all operations associated with the object
Set and check the value of all attributes associated with the object
Put the object into all possible states (simulate all events that cause a state change)
Automated test has three parts
o Setup: initialize the system with the test case (inputs and expected outputs)
o Call: call the object/method to be tested
o Assertion: compare the results of the call with the expected result
Use mock objects if objects to be tested depend on other, yet untested objects
o Objects with the same interface as the external objects being used that simulate its
functionality
o Sample: a mock object simulating a database may have only a few data items that are
organized in an array
o Can be used to simulate abnormal operations or rare events

Choosing unit test cases










Important to choose effective unit test cases (testing is expensive and time consuming)
o Test cases should show that the component does what it is supposed to do
o Defects in the component should be revealed by test cases
Two kinds of test case:
o Normal operation of the program (show that the component works)
o Based on testing experience of where common problems arise (use abnormal inputs)
Strategies for choosing test cases:
o Partition testing (identify groups of inputs with common characteristics)
o Guideline-based testing (use testing guidelines to choose test cases; guidelines reflect
previous experience of errors component programmers often make)
Equivalence partitions / domains:
o Classes with common characteristics
o Programs normally behave in a comparable way for all members of a class
o Sample: positive numbers, negative numbers, menu selections
Partition testing
download.benjaminsommer.com | Overview

53
October 21, 2011

[SOFTWARE ENGINEERING LECTURE NOTES]

o
o
o
o
o





A systematic approach to test case design
Identify all input and output partitions for a system / component
Test cases are designed so that the inputs / outputs lie within these partitions
Can be used for systems and components
Identify partitions by using the program specification or user documentation and from
experience where you predict the classes of input value that are likely to detect errors
o Black-box testing: use the specification of a system to identify equivalence partitions
o White-box testing: look at the code of the program to find other possible tests
Testing guidelines
o Test software with sequences that have only a single value
o Use different sequences of different sizes in different tests
o Derive tests so that the first, middle and last elements of the sequence are accessed
(reveals problems at partition boundaries)
General guidelines
o Choose inputs that force the system to generate all error messages
o Design inputs that cause input buffers to overflow
o Repeat the same input/series of inputs numerous times
o Force invalid outputs to be generated
o Force computation results to be too large / too small

Component testing







Components are often made up of several interacting objects
Component interface testing:
o Parameter interfaces (data / function references are passed from one component to
another)
o Shared memory interfaces (block of memory is shared between components; often used
in embedded systems)
o Procedural interfaces (one component encapsulates a set of procedures that can be
called by other components)
o Message passing interfaces (one component requests a service from another
component by passing a message to it; a return message includes the results of
executing the service; see client-server systems)
Interface errors are one of the most common forms of error in complex systems:
o Interface misuse: a calling component makes an error in the use of the called
component’s interface (often found in parameter interfaces with wrong parameters)
o Interface misunderstanding: a calling component misunderstands the specification of
the interface of the called component and makes assumptions about its behavior (e.g.:
binary search on an unordered array)
o Timing errors: often occur in real-time systems using a shared memory / messagepassing interface (consumer may access out-of-date information)
General guidelines for interface testing:
54

Overview | download.benjaminsommer.com
[SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011
o






Examine the code to be tested and explicitly list each call to an external component
extreme values are most likely to reveal interface inconsistencies)
o Always test the interface with null pointer parameters (where pointers are passed
across an interface)
o Design tests that deliberately cause the component to fail (where a component is called
through a procedural interface)
o Use stress testing in message passing systems
o Design tests that vary the order in which components that interact through shared
memory are activated (may reveal implicit assumptions made by the programmer about
the order in which the shared data is produced and consumed)
Inspections and reviews can sometimes be more cost effective than testing for discovering
interface errors
Inspections can concentrate on component interfaces
Static analyzers can detect a wide range of interface errors
A strongly typed language (Java, C/C++) allows many interface errors to be trapped by the
compiler

System testing














Involves integrating components to create a version of the system
Testing the integrated system
Checks that
o Components are compatible
o Interact correctly
o Transfer the right data at the right time across their interfaces
Differences with component testing
o Reusable components may be integrated with newly developed components (that have
been separately developed and off-the-shelf systems; during system testing)
o Components developed by different team members / groups may be integrated at this
stage (a collective rather than an individual process)
Emergent behavior when components are integrated to create a system
o Some elements of system functionality only become obvious when put together
o May be planned emergent behavior
o Sometimes, its unplanned/unwanted emergent behavior (develop checks that the
system is only doing what it is supposed to do)
Should focus on testing the interactions between the components and objects that make up the
system
Optional: test reusable components / systems (check that they work as expected when they are
integrated with new components)
Should discover component bugs that are only revealed when a component is used by another
Helps finding misunderstandings about other components (made by component developers)
Use case-based testing is an effective approach to system testing
download.benjaminsommer.com | Overview

55
October 21, 2011

[SOFTWARE ENGINEERING LECTURE NOTES]

o
o
o





Each use case is implemented by several components / objects
Use case forces these interactions to occur
See the objects/components being involved in the interaction in a sequence diagram (to
model the use case implementation)
Exhaustive testing is impossible
Companies may have policies for choosing subsets of possible test cases
Automated system testing is usually more difficult than automated unit/component testing

Test-driven development
 Abbreviation: TDD
 An approach to program development in which testing and code development is interleaved
 Incremental code development alongside with test development for each increment
 Introduced as part of agile methods (Extreme Programming)
 Can also be used in plan-driven development processes
 Steps in the TDD process:
o Identify new functionality: should normally be small and implementable in a few lines of
code
o Write test: implement this as an automated test
o Run test: the new test will fail (have not implemented the new functionality yet)
o Implement the functionality and re-run the test: may involve refactoring existing code to
improve it and add new code to what’s already there
o Move on to implementing the next chunk of functionality (once all tests run
successfully)
 An automated testing environment is essential for TDD
 Advantages:
o Better problem understanding
o Code coverage: all the code in the system has actually been executed by at least one
associated test
o Regression testing: run regression tests to check that changes to the program hove not
introduced new bugs
o Simplified debugging: easy to find bug/problem if a test fails (the newly written code
needs to be checked and modified)
o System documentation: tests act as a form of documentation that describe what the
code should be doing
o Reduces cost of regression testing (very expensive and often impractical when a system
is manually tested)
 May be ineffective with multi-threaded systems (interleaved threads at different times in
different test runs may produce different results)
 A successful approach for small and medium-sized projects
 No evidence that TDD leads to poorer quality code

56

Overview | download.benjaminsommer.com
[SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011
Release testing
 Process of testing a particular release of a system that is intended for use outside of the
development team
 Distinctions between release testing and system testing
o A separate team should be responsible for release testing
o System testing is defect testing; release testing is validation testing
 Convince the supplier of the system that it is good enough for use
 Usually a black-box testing process (see functional testing; tester is only concerned with
functionality and not with implementation)
Requirements-based testing








Requirements should be testable (a general principle of good requirements engineering
practice)
A systematic approach to test case design
Consider each requirement and derive a set of tests for it
A validation testing (rather than a defect testing)
Does not mean just writing a single test
Normally have to write several tests to ensure that you have coverage of the requirements
Also maintain traceability records of your requirements-based testing (link the tests to the
specific requirements that are being tested)

Scenario testing








An approach to release testing where you devise typical scenarios of use and use these to
develop test cases
Scenario:
o A story that describes one way in which the system might be used
o Should be realistic
o Real system users should be able to relate to them
o Possible reuse scenarios as part of the requirements engineering process
Should be a narrative story that is credible and fairly complex
Should motivate stakeholders (they should believe that it is important that the system passes
the test)
Should be easy to evaluate
Normally testing several requirements within the same scenario (automatically checks
combinations of requirements)

Performance testing




Once a system has been completely integrated
Test for emergent properties (performance, reliability)
To ensure that the system can process its intended load
download.benjaminsommer.com | Overview

57
October 21, 2011







[SOFTWARE ENGINEERING LECTURE NOTES]

Usually involves running a series of tests where you increase the load until the system
performance becomes unacceptable
Concerned with
o Demonstrating that the system meets its requirements
o Discovering problems and defects in the system
May have to construct an operational profile
o A set of tests that reflect the actual mix of work that will be handled by the system
o Not the best approach for defect testing
Stress testing: design tests around the limits of the system (stressing the system by making
demands that are outside the design limits of the software)
o Tests the failure behavior of the system (see fail-soft)
o Stresses the system and may cause defects to come to light that would not normally be
discovered
o Particularly relevant to distributed systems based on a network of processors (often
exhibit severe degradation when loaded heavily)

User testing
 A stage in the testing process in which users/customers provide input and advice on system
testing
 May involve formally testing a system that has been commissioned from an external supplier
 Could be an informal process where users experiment with a new software product to see if
they like it and that it does what they need
 Essential (even when comprehensive system and release testing have been carried out)
o Influences from the user’s working environment have a major effect on the reliability,
performance, usability and robustness of a system
 Practically impossible to replicate the system’s working environment of the customer/user
 Types of user testing
o Alpha testing: users of software work with the development team to test the software
at the developer’s site
o Beta testing: release of the software is made available to users to allow them to
experiment and to raise problems that they discover with the system developers
o Acceptance testing: customers test a system to decide whether or not it is ready to be
accepted from the system developers and deployed in the customers environment
(after release testing)
Stages in acceptance testing process


Define acceptance criteria
o Should take place early in the process before the contract for the system is signed
o May be difficult to define criteria early in the process
o Detailed requirements may not be available
o May be significant requirements change during development process
58

Overview | download.benjaminsommer.com
[SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011










Plan acceptance testing
o Involves deciding on the resources, time and budget for acceptance testing and
establishing a testing schedule
o Should discuss the required coverage of the requirements and the order in which
system features are tested
o Should define risks to the testing process (system crashes, inadequate performance)
o Discuss how these risks can be mitigated
Derive acceptance tests
o Tests have to be designed to check whether or not a system is acceptable
o Should aim to test both the functional and non-functional characteristics (performance)
o Should provide complete coverage of the system requirements
o Difficult to establish completely objective acceptance criteria
o Often scope for argument about whether or not a test shows that a criterion has
definitely been met
Run acceptance tests
o Agreed acceptance tests are executed on the system
o Should take place in the actual environment (where the system will be used)
o User testing environment may be required to run these tests
o Difficult to automate this process as part of the acceptance tests may involve testing the
interactions between end-users and the system
o Some training of end-users may be required
Negotiate test results
o Very unlikely that all of the defined acceptance tests will pass
o Some problems will be discovered (more commonly)
o Developer and customer have to negotiate to decide if the system is good enough to be
put into use
o Must agree on the developer’s response to identified problems
Reject/accept system
o Involves a meeting between the developers and the customer to decide on whether or
not the system should be accepted
o Further development may be required to fix identified problems (once completed,
acceptance testing phase is repeated)

Software evolution




A system has to change if it is to remain useful (after deployment)
o New requirements for existing software by business change and changes to user
expectations
o Modifications to correct errors being found in operation
o To adapt it for changes to its hardware and software platform
o To improve its performance or other non-functional characteristics
Software evolution is important
download.benjaminsommer.com | Overview

59
October 21, 2011

[SOFTWARE ENGINEERING LECTURE NOTES]

o









Organizations have invested large amounts of money and time in their software (are
now completely dependent on these systems)
o Their systems are critical business assets
o They have to invest in system change to maintain the value of their assets
o Most large companies spend more time on maintenance than on development of new
systems
o About 2/3 of software costs are evolution costs
Evolution of a system can rarely be considered in isolation
o Changes to the environment lead to system change (may trigger further environment
change)
o ‘systems-rich’ environment further increase evolution costs
Useful software systems often have a very long lifetime
o Large military / infrastructure systems (air traffic control systems): 30 years or more
o Business systems: about 10 years old
Software engineering as a spiral process with requirements, design, implementation, testing
going on throughout the lifetime of the system
o Implies: a single organization is responsible for initial software development and
evolution of the software (most packaged software products)
o Custom software: a software company develops software for a customer and the
customer’s own development staff then take over the system (likely: discontinuities in
the spiral process)
Alternative view of software evolution (Rajlich and Bennet, 2000):
o Initial development
o Evolution: software is used successfully and there is a constant stream of proposed
requirements changes (over time: structure tends to degrade, changes become more
and more expensive)
o Servicing: implementing new requirements become less and less cost effective
(software still useful; but only small tactical changes; company considers software
replacement)
o Phase-out: software may still be used but no further changes are being implemented
(users have to work around any problems that they discover)

Evolution processes
 Vary depending on
o The type of software being maintained
o The development processes used in an organization
o The skills of the people involved
 May be an informal process: change requests mostly come from conversations between the
system users and developers
 Formalized process: structured documentation produced at each stage in the process
 Driver for system evolution: system change proposals
o From existing requirements (not yet implemented in the released version)
60

Overview | download.benjaminsommer.com
[SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011
o
o
o
o

From requests for new requirements
From bug reports from system stakeholders
From new ideas for software improvement (from system development team)
Should be linked to the components of the system (cost and impact of the change to be
assessed) (see change management)

Software evolution process:









Change requests
Change analysis (impact analysis)
o Assess cost and impact of changes
o Prototyping of proposed changes may be carried out
Release planning
o Possible changes: fault repair, adaptation, new functionality
o Decision: which changes to implement in the next version of the system
Change implementation and validation
o An iteration of the development process
o Revisions to the system are design, implemented and tested
o Should modify the system specification, design and implementation to reflect changes
to the system
System release

Reasons for urgent changes:




Serious system fault: restore normal operation to continue
Changes to systems operating environment: unexpected affects that disrupt normal operation
Unanticipated changes to the business running the system

Potential problematic situations in case of a handover to a separate team for evolution:




Development team used an agile approach, but the evolution team prefers a plan-based
approach
o Missing detailed documentation to support evolution
o May be no definitive statement of the system requirements
Development team used a plan-based approach, but the evolution team uses an agile approach
o Missing automated tests from agile methods
o Code may not have been refactored and simplified as is expected in agile development
o Some reengineering may be required to improve the code before it can be used in an
agile development process

Program evolution dynamics
 The study of system change
Lehman’s laws:
download.benjaminsommer.com | Overview

61
October 21, 2011














[SOFTWARE ENGINEERING LECTURE NOTES]

Continuing change
o A program in real-world environment must necessarily change
o Or it becomes progressively less useful in that environment
Increasing complexity
o Structure of an evolving program tends to become more complex
o Extra resources are required to preserve and simplify the structure
Large program evolution
o Program evolution is a self-regulating process
o System attributes is approximately invariant for each system release (e.g. size, time
between releases, number of reported errors)
Organizational stability
o Rate of development is approximately constant and independent of the resources
devoted to system development
Conservation of familiarity
o The incremental change in each release is approx. constant
Continuing growth
o Offered functionality has to continually increate to maintain user satisfaction
Declining quality
o Quality of systems will decline unless they are modified to reflect changes in their
operational environment
Feedback system
o Evolution processes incorporate multi-agent, multi-loop feedback systems
o Treat them as feedback system to achieve significant product improvement

Software maintenance
 The general process of changing a system after it has been delivered
 Usually applied to custom software (separate development groups are involved before and after
delivery)
 Different types of software maintenance
o Fault repairs / corrective maintenance
o Environmental adaptation / adaptive maintenance
o Functionality addition / perfective maintenance
 Not a clear-cut distinction between these types of maintenance
 Takes up a higher proportion of IT budgets than new development (approx. 2/3)
 More of the maintenance budget is spent on implementing new requirements than on fixing
bugs
 Maintenance costs are relatively high for embedded real-time systems (about 4 times higher)
 Cost effective to invest effort in designing and implementing a system to reduce the costs of
future changes
 Usually more expensive to add functionality after a system is in operation than it is to
implement the same functionality during development. Reasons:
62

Overview | download.benjaminsommer.com
[SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011
o
o
o
o

Team stability: people work for new projects
Poor development practice: maintenance contract usually separate from system
development contract
Staff skills: maintenance staff often relatively inexperience and unfamiliar with the
application domain
Program age and structure: program’s structure tends to degrade with changes

Maintenance prediction










Maintenance costs: estimate overall maintenance costs for a system in a given time period
System changes: predict what system changes might be proposed
Maintainability: what parts of the system are likely to be the most difficult to maintain
Predict number of change request (gives understanding of the relationship between the system
and its external environment)
Issues to be assess to evaluate the relationships between a system and its environment
o Number and complexity of system interfaces
o Number of inherently volatile system requirements
o Business processes in which the system is used
Sample process metrics for assessing maintainability:
o Number of requests for corrective maintenance (decline in maintainability if more errors
are being introduced into the program than are being repaired during maintenance
process)
o Average time required for impact analysis (decline in maintainability if number of
program components being affected by change requests increases and this time
increases)
o Average time taken to implement a change request (decline in maintainability if amount
of time needed to modify the system and its documentation increases)
o Number of outstanding change request (decline in maintainability if the number of
change requests increases)
Model of cost estimation: COCOMO 2
An estimate for software maintenance effort can be based on the effort
o To understand existing code
o To develop the new code

Software reengineering




Reengineer legacy software systems
o To improve their structure and understandability
o To make maintenance easier
May involve
o Re-documenting the system
o Refactoring the system architecture
o Translating programs to a modern programming language
download.benjaminsommer.com | Overview

63
October 21, 2011











[SOFTWARE ENGINEERING LECTURE NOTES]

o Modifying and updating the structure and values of the system’s data
Functionality of the software is not changes
Avoid making major changes to the system architecture
Benefits from reengineering rather than replacement
o Reduced risk: high risk in redeveloping business-critical software (errors in system
specification or development problems)
o Reduced cost
Activities in the reengineering process
o Source code translation (usually automated)
o Reverse engineering (usually automated; helps to documents its organization and
functionality)
o Program structure improvement (partially automated; analyze and improve control
structure; easier to read and understand)
o Program modularization (manual process; group together related parts; remove
redundancy; may involve architectural refactoring)
o Data reengineering (tools available; redefine database schemas; convert existing
databases; clean up data; finding and correcting mistakes; removing duplicate records)
May have to develop adapter services
o Hide original interface of the software system and present new, better-structure
interfaces
o A legacy system wrapping process
o An important technique for developing large-scale reusable services
Problem of software reengineering:
o Practical limits to how much you can improve a system be reengineering
o Impossible to convert a system from functional to object-oriented approach
o Major architectural changes / radical reorganizing of the system data management
connect be carried out automatically
o Less maintainable as a new system developed using modern software engineering
methods

Preventative maintenance by refactoring







Refactoring: process of making improvements to a program to show down degradation through
change
o Improve structure
o Reduce complexity
o Make it easier to understand
Should not add functionality
Should concentrate on program improvement
Reduces problems of future change (therefore preventative maintenance)
Reengineering:
o After a system has been maintained for some time
64

Overview | download.benjaminsommer.com
[SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011









o When maintenance costs are increasing
o Use of automated tools
Refactoring
o A continuous process of improvement throughout the development and evolution
process
o Intended to avoid structure and code degradation (otherwise increases costs and
difficulties)
o An inherent part of agile methods (extreme programming) (based around change)
o Can be used with any approach to development
Typical situations where refactoring can be applied (‘bad smells’)
o Duplicate code
o Long methods
o Switch / case statements
o Data clumping (when same group of data items reoccur in several places in a program,
e.g. fields in classes, parameters in methods; can be replaced with an object
encapsulating all of the data)
o Speculative generality (when developers include generality in a program in case it is
required in future; can simply be removed)
Some methods of refactoring
o Extract method (duplicate code)
o Consolidate conditional expression (replace a sequence of test with a single test)
o Pull up method (replace similar methods in subclasses with one method in a superclass)
Effective way to reduce long-term maintenance costs of a program

Legacy system management
 For legacy systems: rather difficult to plan how to integrate evolution (system adaptation)
 Strategic options for evolving these systems
o Scrap the system completely (when system is not making an effective contribution to
business processes; changes business processes)
o Leave the system unchanged and continue with regular maintenance (when system is
still required but is fairly stable and system users make relatively few change requests)
o Reengineer the system to improve tis maintainability (when the system quality has been
degraded by changed and where new changes are still being proposed)
o Replace all or part of the system with a new system (when factors mean that old system
cannot continue in operation; when new hardware)
 Business perspective
o Decide: business really needs the system
 Technical perspective
o Assess: quality of the application software
o Assess: the system’s support and hardware
 4 clusters of systems
o Low quality, low business value (scrap the system)
download.benjaminsommer.com | Overview

65
October 21, 2011

[SOFTWARE ENGINEERING LECTURE NOTES]

o









Low quality, high business value (reengineer to improve quality; use off-the-shelf
systems)
o High quality, low business value (normal maintenance; scrap system if expensive
changes become necessary)
o High quality, high business value (normal maintenance)
Issues for discussions on assessing the business value of a system
o Use of the system
o Business processes that are supported
o System dependability
o System outputs
Factors used in environment assessment
o Supplier stability (exists the supplier? Supplier likely to exists in future? If not in
business, who can maintain the system?)
o Failure rate (high rate of reported failures of the hardware? Support software crashes
and forces system restarts?)
o Age (how old is hardware and software? Significant economic and business benefits
when moving to more modern systems?)
o Performance (adequate performance? Significant effect on system users?)
o Support requirements (local support required by hardware and software? High costs
associated with support? Considering system replacement?)
o Maintenance costs (costs of hardware maintenance and support software licenses? High
annual licensing costs?)
o Interoperability (problems interfacing the system to other systems? Use of compilers
with current versions of the OS? Hardware emulation required?)
Factors used in application assessment
o Understandability (difficult to understand the source code?)
o Documentation (complete, consistent, current documentation?)
o Data (explicit data model for the system? Up-to-date and consistent data?)
o Performance (adequate performance? Significant effect of performance problems on
system users?)
o Programming language (modern compilers available? Programming language still used
for new system development?)
o Configuration management (explicit description of the versions of components?
Managed by a configuration management system?)
o Test data (exist test data? Record of regression tests available?)
o Personnel skills (who can maintain the application? Who have experience with the
system?)
Optional: collect data to judge the quality of the system
o Number of system change requests
o Number of user interfaces
o Volume of data used by the system
66

Overview | download.benjaminsommer.com
[SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011

Dependability and security
Sociotechnical system










A system is more than the sum of its parts
Software engineering: an intrinsic part of more general systems engineering
Take a system-level view when designing software that has to be secure and dependable
Consequences of failure are more significant
o Extra work to contain / recover from the failure
Critical to understand consequences of software failures to other elements in the system
Usually the real problem: system failure rather than software failure
o Need to examine how the software interacts with its immediate environment
Software failures should be contained within its enclosing layers of the system stack
Understand how faults and failure sin the non-software layers of the systems stack may affect
the software
Enterprise systems
o Indented to help deliver a business goal

Sociotechnical system stack: layers to understand it better













Equipment layer: hardware devices
Operating system layer:
o interacts with hardware
o provides a set of common facilities for higher software layers
Communications and data management layer:
o Extends operating system facilities
o Provides an interface: interaction with more extensive functionality (access to remote
system, databases)
o Middleware (layer between application and operating system)
Application layer
o Delivers application-specific functionality
o Many different application programs in this layer (possibly)
o May not be able to provide required level of privacy (need be implemented in layer
below)
Business process layer
o Defined and enact organizational business processes
o Make use of software system
Organizational layer
o Higher-level strategic processes
o Business rules, policies, norms (should be followed when using the system)
Social layer
o Laws and regulations of society are defined (govern operation of the system)
download.benjaminsommer.com | Dependability and security

67
October 21, 2011

[SOFTWARE ENGINEERING LECTURE NOTES]

Characteristics of the sociotechnical system stack:



Most interactions between neighboring layers
Unexpected interactions between layers (may result in problems for the system)

Systems engineering: the process of designing entire systems (not just the software in these systems)
Complex systems
 A system is a purposeful collection of interrelated components, of different kinds, which work
together to achieve some objective
 Properties and behavior of the system components are inextricably intermingled
o Successful functioning of each system component depends on the functioning of other
components
 Usually hierarchical: they include other systems
o Included systems: subsystems (can operate as independent systems)
 Systems that include software:
o Technical computer-based systems: include hardware, software; but not procedures,
processes
o Sociotechnical systems: include one/more technical systems, people (understand
purpose of the system within the system itself)
 Understand organizational environment when developing sociotechnical systems
o To meet business needs
o Users / managers should not reject the system
Organizational factors from system’s environment affecting requirements, design and operation:






Process changes
o System may require changes to the work processes in the environment
o Training will be required
o Users might resists introduction of a system in case its changes are significant
Job changes
o New systems may de-skill the users in an environment
o New systems may cause them to change the way they work
o Users may actively resist the introduction of the system into the organization
Organizational changes
o System may change political power structure in an organization

Characteristics of sociotechnical systems when considering security and dependability:


Emergent properties
o Properties of the system as a whole
o Depend on system components and relationships between them
o Can only be evaluated once the system has been assembled
o Sample: security, dependability
68

Dependability and security | download.benjaminsommer.com
[SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011


Nondeterministic characteristics
o Variable output for constant input
o System’s behavior depends on human operators

Emergent system properties













Cannot be attributed to any specific part of the system
They merge once the system components have been integrated
Usually result from complex subsystem interrelationships
Types of emergent properties
o Functional emergent properties: when the purpose of the system only emerges after its
components are integrated
o Non-functional emergent properties: relate to the behavior of the system in its
operational environment (reliability, performance, safety, security)
Reliability from 3 perspectives:
o Hardware reliability
o Software reliability
o Operator reliability
Failures at one level can be propagated to other levels in the system
Often difficult to anticipate how these component failures will affect other components
Reliability of a system depends on the context in which the system is used
o System’s environment cannot be completely specified
o Restrictions on that environment for operational systems cannot be placed by system
designers
Performance or usability
o are hard to assess
o Can be measured after the system is operational

Non-determinism






A system that is not (completely) predictable
o Hardware can be thought of as (nearly) predictable
o People are rather unpredictable
Sociotechnical systems are non-deterministic
o Include people
o Changes to the hardware, software and data in these systems are so frequent
Interactions between changes are complex
o Behavior of the system is unpredictable

Success criteria


Wicked problem: no definite problem specification since the problem is so complex and involves
so many related entities
download.benjaminsommer.com | Dependability and security

69
October 21, 2011

[SOFTWARE ENGINEERING LECTURE NOTES]

o
o



Difficult to define success criteria for a system
Judgment of success I based on whether or not the system is effective at the time it is
deployed
o Multiple conflicting goals that are interpreted differently by different stakeholders
Nature of security and dependability attributes (makes it sometimes even more difficult to
decide if a system is successful)

Systems engineering
 Encompasses all of the activities involved in procuring, specifying, designing, implementing,
validating, deploying, operating, maintaining sociotechnical system
 System engineers are concerned with
o Software
o Hardware
o System’s interactions with users and its environment
o Services that the system provides
o Constraints under which the system must be built and operated
o Ways in which the system is used to fulfill its purpose
 Overall security and dependability of a system is influenced by activities at all stages
 Important difference between systems and software engineering
o Involvement of a range of professional disciplines throughout the lifetime of the system
(essential, because of many different aspects of complex sociotechnical systems)
 Differences between disciplines can introduce vulnerabilities into systems (compromise security
and dependability of the system)
o Different disciplines use the same words to mean different things
o Each discipline makes assumptions about what can or can’t be done by other disciplines
o Disciplines try to protect their professional boundaries and may argue for certain design
decisions because these decisions will call for their professional expertise
Overlapping stages in the lifetime of large/complex sociotechnical systems




Procurement or acquisition
o Decided purpose of a system
o Established high-level system requirements
o Made decisions on how functionality will be distributed across hardware, software and
people
o Purchased components making up the systems
Development
o Requirements definition
o System design
o Hardware and software engineering
o System integration
o Testing
70

Dependability and security | download.benjaminsommer.com
[SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011


Operation
o System is deployed
o Users are trained
o Change of planned operational processes
o System evolves as new requirements are identified
o System declines in value and is decommissioned and replaced

System procurement
 The initial phase of systems engineering
 Called: system acquisition
 Decisions
o System that is to be purchased
o System budgets and timescales
o High-level system requirements
o Type of system required
o The supplier(s) of the system
o Whether to procure a system
 Drivers for these decisions
o State of other organizational systems (replacement system in case of a mixture of
systems having troubles to communicate with each other; or maintenance problems)
o Need to comply with external regulations (business is increasingly regulated)
o External competition (increase effectiveness in competition; maintain competitive
position)
o Business reorganization (lead to changes in business processes that require new systems
support)
o Available budget
 Procurer deals with the contractor rather than the subcontractors (a single procurer/supplier
interface)
 Decisions have a profound effect on the security and dependability of a system
 Procure a custom system: significant effort to understand and define security and dependability
requirements
System procurement processes






Define business requirements
Survey market for existing systems
Off-the-shelf system available
o Adapt requirements
o Assess existing systems
o Choose system supplier
o Negotiate contract
Custom system required
download.benjaminsommer.com | Dependability and security

71
October 21, 2011
o
o
o
o

[SOFTWARE ENGINEERING LECTURE NOTES]

Define requirements
Issue request to tender
Select tender
Negotiate contract

System development
 Goals
o Develop / acquire all of the components of a system
o Integrate these components to create the final system
 Requirements: the bridge between procurement and development processes
 See: waterfall model
 Plan-driven processes are used
o Different parts of the system are being developed at the same time
 Processes of requirements development and system design are inextricably linked
System development process:











Requirements development
o Develop (in more detail) high-level and business requirements (identified during
procurement)
System design
o Establish overall architecture of the system
o Identify different system components
o Understand relationships between them
Subsystem engineering
o Hardware and software components of the system are implemented
o Configure off-the-shelf hardware and software
o Design special-purpose hardware (if required)
o Define operational processes for the system
o Redesign essential business processes
System integration
o Put together components to create a new system
System testing
o An extensive, prolonged activity
o Tune performance of the system
System deployment
o Make system available to its users
o Transfer data from existing systems
o Establish communications with other systems in the environment

Requirements and design spiral:


Elements
72

Dependability and security | download.benjaminsommer.com
[SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011




o Domain and problem understanding
o Requirements elicitation and analysis
o Architectural design
o Require and assessment
Each round of the spiral may add detail to the requirements and the design
Some rounds may focus on requirements, some on design

System operation
 Operational processes: processes involved in using the system for its defined purpose
 Key benefit of having system operators
o People have a unique capability of being able to respond effectively to unexpected
situations
o Use local knowledge to adapt and improve processes
o Usually improve the process
 Actual operational processes differ from those anticipated by the system designers
 Possible problem
o Operation of the new system alongside existing systems
o Possibly difficult to transfer data form one system to another
 New systems may increase operator error rate
Human error





Non-determinism
Latent conditions
o Contribute to system failure
o Lead to system failure when the defenses built into the system do not trap an active
failure by a system operator
o See: Reason’s Swiss cheese model of system failure
Reduce the probability that system failure will result from human error:
o Use different types of barriers
o Minimize number of latent conditions in a system

Ways to view the problem of human error




Person approach
o Errors: responsibility of the individual and ‘unsafe acts’
o Consequence of carelessness / reckless behavior
System approach
o Assumption: people are fallible and will make mistakes
o Errors: consequence of system design decisions (lead to erroneous ways of working)
o Good systems: recognize the possibility of human error, include barriers and safeguards

System evolution
download.benjaminsommer.com | Dependability and security

73
October 21, 2011


[SOFTWARE ENGINEERING LECTURE NOTES]

System evolution is inherently costly:
o Proposed changes have to be analyzed very carefully from a business and a technical
perspective (changes should not simply be technically motivated)
o Changes to subsystems may be needed (may adversely affect performance / behavior of
other subsystems)
o Reasons for original design decisions often unrecorded (evolution team have to figure
out these)
o Structure typically becomes corrupted by change (old systems)

Dependability and security







Dependability of systems usually more important than detailed functionality
o System failures affect a large number of people
o Users often reject systems that are unreliable, unsafe or insecure
o System failure costs may be enormous
o Undependable systems may cause information loss
Issues to consider when designing a dependable system
o Hardware failure: mistakes in its design, manufacturing errors, natural end of life
o Software failure: mistakes in its specification, design or implementation
o Operational failure: human error (might be significant)
Failures are often interrelated
Holistic systems perspective required during design phase

Dependability properties
 Dependability: a property of the system that reflects its trustworthiness
 Trustworthiness: degree of confidence a user has that the system will operate as they expect;
not fail in ‘normal’ use
 Principal dimensions of dependability
o Availability: probability to be up and running and giving services at any time
o Reliability: probability that the system is doing what is expected by users (correctness,
precision, timeliness)
o Safety: judgment of how likely the system causes damage to people / environment
o Security: judgment of how likely the system can resist accidental/deliberate intrusions
(integrity, confidentiality)
 Other system properties (dependability properties)
o Reparability
o Maintainability
o Survivability
o Error tolerance
 Things to ensure when developing dependable software
o Avoid introduction of accidental errors into the system during software specification
and development

74

Dependability and security | download.benjaminsommer.com
[SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011
o





Design verification and validation processes being effective in discovering residual errors
that affect the dependability of the system
o Design protection mechanism that guard against external attacks that can compromise
the availability or security of the system
o Configure the deployed system and its supporting software correctly for tis operating
environment
Need for fault tolerance
o Need to include redundant code to help them monitor themselves, detect erroneous
stats and recover from faults before failure occurs
Increases development costs
o Extra design, implementation, validation costs
o High validation costs for ultra-dependable systems (safety-critical control systems)
o Testing

Availability and reliability
 Closely related properties
 Can be expressed as numerical probabilities
 Reliability: probability of failure-free operation over a specified time, in a given environment, for
a specific purpose
 Availability: probability that a system, at a point in time, will be operational and able to deliver
the requested service
 Standard definitions do not take into account
o The severity of failure
o The consequences of unavailability
 Users often accept minor failures
 Users rarely accept failures with high consequential costs
 Reliability terminology
o Human error or mistake (see above)
o System fault: characteristic of a system that can lead to a system error
o System error: erroneous system state that can lead to system behavior that is
unexpected by system users
o System failure: event that occurs at some point in time when the system does not
deliver a service as expected by its users
 Practical reliability of a program depends on
o The number of inputs causing erroneous outputs during normal use
 Practical reliability does not really depend on
o Software faults occurring in exceptional situations (do not always result in system
errors)
 Complementary approaches used to improve the reliability of a system
o Fault avoidance: avoid error-prone programming language constructs (pointers), use
static analysis to detect program anomalies
download.benjaminsommer.com | Dependability and security

75
October 21, 2011
o
o

[SOFTWARE ENGINEERING LECTURE NOTES]

Fault detection and removal: use of verification and validation techniques (systematic
testing and debugging)
Fault tolerance: incorporate self-checking facilities in a system, use redundant system
modules (techniques that ensure that faults in a system do not result in system errors or
vice versa)

Safety
 Safety-critical system:
o Essential that system operation is always safe
o System should never damage people or system’s environment
o Sample: control- and monitoring systems in aircraft, process control system in chemical
and pharmaceutical plants, automobile control systems
 Software control is essential
o Need to manage large numbers of sensors and actuators with complex control laws
o Sample: advanced, aerodynamically unstable, military aircraft
 Classes of safety-critical software
o Primary safety-critical software: embedded as a controller in a system (malfunctioning
cause hardware malfunction causing human injury / environmental damage)
o Secondary safety-critical software: can indirectly result in an injury (computer-aided
engineering design system, mental health care management systems)
 Reasons why reliable software systems are not necessarily safe
o No certainty that a system is fault-free and fault-tolerant
o Specification may be incomplete (no description of required behavior of the system in
some critical situations)
o Hardware malfunctions (causing the system to behave in an unpredictable way)
 Safety terminology
o Accident / mishap: an unplanned event or sequence of events resulting in human death
/ injury, damage to property or environment
o Hazard: condition with the potential for causing or contributing to an accident (failure of
sensors)
o Damage: measure of the loss resulting from a mishap (can range from many people
being killed to minor injury or property damage)
o Hazard severity: assessment of the worst possible damage that could result from a
particular hazard (range from catastrophic to minor)
o Hazard probability: probability of the events occurring which create a hazard (tend to be
arbitrary, range from probably to implausible)
o Risk: a measure of the probability that the system will cause an accident
 How to assure safety or reduce consequences of accidents
o Hazard avoidance
o Hazard detection and removal
o Damage limitation

76

Dependability and security | download.benjaminsommer.com
[SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011
Security
 A system attribute
 Reflects the ability of the system to protect itself from external attacks (may be accidental or
deliberate)
 Security terminology
o Asset: something of value which has to be protected (software system, data used by
that system)
o Exposure: possible loss or harm to a computing system (loss/damage to data, loss of
time and effort if recovery is necessary after a security breach)
o Vulnerability: weakness in a computer-based system that may be exploited to cause loss
or harm
o Attack: exploitation of a system’s vulnerability
o Threats: circumstances that have potential to cause loss or harm (see system
vulnerability that is subjected to an attack)
o Control: protective measure that reduces a system’s vulnerability (e.g.: encryption)
 Samples:
o Military system
o Systems for electronic commerce
o Systems that involve the processing and interchange of confidential information
 Main types of security threats in any networked system
o Threats to the confidentiality of the system and its data
o Threats to the integrity of the system and its data (can damage or corrupt software /
data)
o Threats to the availability of the system and its data (can restrict access to the software
/ data for authorized users)
 Sample security threats created by human failings
o Easy-to-guess passwords, writing down passwords
o System administrators: setting up access control or configuration files, users don’t install
protection software
 Controls to enhance system security
o Vulnerability avoidance
o Attack detection and neutralization
o Exposure limitation and recovery

Dependability and security specification


Attention to detail when system requirements are derived

Risk-driven requirements specification
 Dependability and security requirements: protection requirements
o How system should protect itself from internal faults
o Stop system failures
o Stop accidents or attacks
download.benjaminsommer.com | Dependability and security

77
October 21, 2011









[SOFTWARE ENGINEERING LECTURE NOTES]

o Facilitate recovery
Risk-driven approach to requirements specification takes into account
o Dangerous events that may occur
o Probability that these will actually occur
o Probability that damage will result from such events
o Extent of the damage caused
Analyze possible causes of dangerous events
Establish security and dependability requirements
Stages in a general risk-driven specification process
o Risk identification: interactions between systems, care conditions in its operating
environment (risk description)
o Risk analysis and classification: each risk is considered separately; serious/implausible
risks are selected for further analysis (risk assessment)
o Risk decomposition: discover potential root causes for selected risk (root cause analysis)
o Risk reduction: proposals to reduce/eliminate identified risks (dependability
requirements)
Phases of risk analysis (for large systems)
o Preliminary risk analysis: identify major risks from the system’s environment
o Life-cycle risk analysis: concerned with risks arising from system design decisions (during
system development)
o Operational risk analysis: concerned with system user interface and risks from operator
errors

Safety specification
 Safety-critical system:
o Failures may affect the environment of the system
o Failures may cause injury/death to people in that environment
 Principal concern: identify requirements that will minimize the probability that such system
failures will occur
 Safety requirements
o Protection requirements
o Not concerned with normal system operation
o May specify system shutdown to maintain safety
 Avoid overprotection
 Find balance between safety and functionality
 Safety specification process
o Risk identification
o Risk analysis
o Risk decomposition
o Risk reduction
Hazard identification
78

Dependability and security | download.benjaminsommer.com
[SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011






Can lead to an accident
Consider different types of hazards (physical, electrical, biological, radiation hazards, service
failure hazards etc.)
Identify hazards
o From previous experience
o From an analysis of the application domain
o Group working techniques (brainstorming)
Software-related hazards are normally concerned with
o Failure to deliver a system service
o Failure of monitoring and protection systems (included in a device; e.g.: low battery
levels)

Hazard assessment








Focuses on
o Understanding the probability that a hazard will occur
o The consequences of an accident / incident associated with that hazard
Understand seriousness of a given hazard
Risk categories to be used in hazard assessment
o Intolerable risks: threaten human life
o As low as reasonably practical risks (ALARP): less serious consequence; serious but very
low probability of occurrence
o Acceptable risk: minor damage (possibly reduce all of them)
Boundaries depend on social and political factors
Hazard assessment involves estimating hazard probability and risk severity (usually difficult)

Hazard analysis






Process of discovering the root causes of hazards in a safety-critical system
Use of top-down (deductive) or bottom-up approach
Techniques
o Hazard decomposition / analysis
o Reviews and checklists
o Formal techniques
o Formal logic
o Fault tree analysis
Fault trees are also used to identify potential hardware problems

Risk reduction



Derive safety requirements from identified potential risks that manage the risks and ensure that
incidents / accidents do not occur
Possible strategies
download.benjaminsommer.com | Dependability and security

79
October 21, 2011

[SOFTWARE ENGINEERING LECTURE NOTES]

o
o



Hazard avoidance: system is design that hazards cannot occur
Hazard detection and removal: hazards are detected and neutralized before they result
in an accident
o Damage limitation: system is design so that consequences of an accident are minimized
Possible solutions
o Arithmetic error: an arithmetic computation causes a representation failure
o Algorithmic error: more difficult situation as there is no clear program exception that
must be handled

Reliability specification
 Reliability of a system depends on
o Hardware reliability
o Software reliability
o Reliability of system operators
 Reliability: a measurable system attribute
 Reliability requirements are of two kinds
o Non-functional requirements: number of failures (quantitative reliability requirements)
o Functional requirements: system/software functions to avoid/detect/tolerate faults
(qualitative reliability requirements)
 Process of reliability specification can be based on general risk-driven specification processes
o Risk identification (identify types of system failures)
o Risk analysis (estimate cost and consequences)
o Risk decomposition (root cause analysis)
o Risk reduction (generate quantitative reliability specifications)
Reliability metrics






Important metrics used to specify reliability plus an additional metric (used to specify related
system attribute of availability)
o Probability of failure on demand (POFOD): define the probability that a demand for
service from a system will result in a system failure
o Rate of occurrence of failures (ROCOF): probable number of system failures being likely
to be observed relative to a certain time period
o Availability (AVAIL): reflects a system’s ability to deliver services when requested
To assess the reliability of a system
o Capture data about its operation (number of system failures; time/number of
transactions between system failures plus total elapsed time of transactions;
repair/restart time after system failure)
Use calendar time for system being in continuous operation (monitoring systems)

Non-functional reliability requirements


Quantitative specification of the required reliability and availability of a system
80

Dependability and security | download.benjaminsommer.com
[SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011









Calculated using one of the metrics described above
Advantages in deriving quantitative reliability specifications
o Process of deciding what required level of reliability helps to clarify what stakeholders
really need
o Provides a basis for assessing when to stop testing a system
o A means for assessing different design strategies intended to improve the reliability of a
system
Consider associated losses that could result from a system failure
Problem of specifying reliability using metrics
o Possible to over-specify reliability
o Incur high development and validation costs
Organizations must be realistic about whether it is worth specifying and validating a very high
level of reliability
Steps to take to avoid over-specification of system reliability
o Specify availability and reliability requirements for different types of failures
o Specify availability and reliability requirements for different services separately
o Decide whether high reliability in a software system is really needed

Functional reliability specification






Involves identifying requirements that define constraints and features that contribute to system
reliability
Types of functional reliability requirements for a system
o Checking requirements (identify checks on inputs to the system to ensure that incorrect
/ out-of-range inputs are detected before being processed by the system)
o Recovery requirements (help the system recover after a failure has occurred)
o Redundancy requirements (specify redundant features of the system that ensure that a
single component failure does not lead to a complete loss of service)
May include process requirements for reliability
No simple rules for deriving functional reliability requirements

Security specification
 Some commonalities with safety requirements
 Impractical to specify them quantitatively
 Security is a more challenging problem than safety.
 Security requirements need to be more extensive than safety requirements
 Possible security requirements
o Identification requirements (whether to identify users before interaction)
o Authentication requirements (how users are identified)
o Authorization requirements (privileges and access permissions of identified users)
o Immunity requirements (show a system protects itself against viruses, worms and
similar threats)
download.benjaminsommer.com | Dependability and security

81
October 21, 2011

[SOFTWARE ENGINEERING LECTURE NOTES]

o
o
o





Integrity requirements (how to avoid data corruption)
Intrusion detection requirements (mechanisms on how to detect attacks on the system)
Non-repudiation requirements (a party in a transaction cannot deny its involvement in
that transaction)
o Privacy requirements (how to maintain data privacy)
o Security auditing requirements (how to audit and check system use)
o System maintenance security requirements (how to prevent authorized changes from
accidentally defeating security mechanisms)
Stages in risk analysis and assessment process (see above)
o Preliminary risk analysis
o Life-cycle risk analysis
o Operational risk analysis
Process stages for security requirements
o Assess identification
o Asset value assessment
o Exposure assessment
o Threat identification
o Attack assessment
o Control identification
o Feasibility assessment
o Security requirements definition

Formal specification
 Mathematically-based approaches to software development where you define a formal model
of the software
 Eliminate software failure by proving that a program is consistent with a given model
 Usually developed as part of a plan-based software process
 Not just essential for a verification of the design and implementation of software
 Automated support for analyzing a formal specification has been developed
 Formal specification in a plan-based software process
o User requirements definition
o System requirements specification
o Architectural design
o Formal specification
o High-level design
 Arguments against formal system specification
o Problems owners and domain experts cannot understand a formal specification (cannot
check that it accurately represents their requirements)
o Difficult to estimate the possible cost savings that will result from its use
o Most software engineers have not been trained to use formal specification languages
o Difficult to scale current approaches to formal specification up to very large systems
o Formal specification is not compatible with agile methods of development
82

Dependability and security | download.benjaminsommer.com
[SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011

Dependability engineering









Critical systems have a high level of dependability
o Process control systems, protection systems, medical systems, telecommunications
switches, flight control systems
Special development tools and techniques required to enhance dependability
Concerned with the techniques being used to enhance dependability of both critical and noncritical systems
Complementary approached being supported by these techniques
o Fault avoidance (approaches to avoid design and programming errors)
o Fault detection and correction (verification and validation processes discover and
remove faults in a program before being deployed)
o Fault tolerance (faults are detected at run-time and are managed to prevent system
failure)
Software development companies accept that their software will always contain some residual
faults
Must product the evidence that can convince a regulator that the system is dependable

Redundancy and diversity
 Fundamental strategies for enhancing the dependability of any type of system
 Redundancy: spare capacity is included in a system that can be used if part of that system fails
 Diversity: redundant components of the system are of different types

download.benjaminsommer.com | Dependability and security

83
Ad

More Related Content

What's hot (20)

software project management Waterfall model
software project management Waterfall modelsoftware project management Waterfall model
software project management Waterfall model
REHMAT ULLAH
 
Software development process models
Software development process modelsSoftware development process models
Software development process models
Muhammed Afsal Villan
 
Software design
Software designSoftware design
Software design
Zulqarnaintayyab
 
Software Engineering Process Models
Software Engineering Process Models Software Engineering Process Models
Software Engineering Process Models
Satya P. Joshi
 
Software Deployment Principles & Practices
Software Deployment Principles & PracticesSoftware Deployment Principles & Practices
Software Deployment Principles & Practices
Thyagarajan Krishnan
 
Unit 1 - Introduction to Software Engineering.ppt
Unit 1 - Introduction to Software Engineering.pptUnit 1 - Introduction to Software Engineering.ppt
Unit 1 - Introduction to Software Engineering.ppt
DrTThendralCompSci
 
Ch3. agile sw dev
Ch3. agile sw devCh3. agile sw dev
Ch3. agile sw dev
software-engineering-book
 
Extreme Programming
Extreme ProgrammingExtreme Programming
Extreme Programming
pearlcatcharro
 
Design and Implementation in Software Engineering
Design and Implementation in Software EngineeringDesign and Implementation in Software Engineering
Design and Implementation in Software Engineering
Kourosh Sajjadi
 
Ch5- Software Engineering 9
Ch5- Software Engineering 9Ch5- Software Engineering 9
Ch5- Software Engineering 9
Ian Sommerville
 
requirement gathering
requirement gatheringrequirement gathering
requirement gathering
SaeedMat
 
Requirement Analysis
Requirement AnalysisRequirement Analysis
Requirement Analysis
SADEED AMEEN
 
Ian Sommerville, Software Engineering, 9th Edition Ch 4
Ian Sommerville,  Software Engineering, 9th Edition Ch 4Ian Sommerville,  Software Engineering, 9th Edition Ch 4
Ian Sommerville, Software Engineering, 9th Edition Ch 4
Mohammed Romi
 
Ch1 introduction
Ch1 introductionCh1 introduction
Ch1 introduction
software-engineering-book
 
Ch7-Software Engineering 9
Ch7-Software Engineering 9Ch7-Software Engineering 9
Ch7-Software Engineering 9
Ian Sommerville
 
Feature Driven Development
Feature Driven DevelopmentFeature Driven Development
Feature Driven Development
dcsunu
 
Design engineering
Design engineeringDesign engineering
Design engineering
Vikram Dahiya
 
Software Cost Estimation in Software Engineering SE23
Software Cost Estimation in Software Engineering SE23Software Cost Estimation in Software Engineering SE23
Software Cost Estimation in Software Engineering SE23
koolkampus
 
Software Metrics
Software MetricsSoftware Metrics
Software Metrics
swatisinghal
 
System testing
System testingSystem testing
System testing
KarthigaGunasekaran1
 
software project management Waterfall model
software project management Waterfall modelsoftware project management Waterfall model
software project management Waterfall model
REHMAT ULLAH
 
Software Engineering Process Models
Software Engineering Process Models Software Engineering Process Models
Software Engineering Process Models
Satya P. Joshi
 
Software Deployment Principles & Practices
Software Deployment Principles & PracticesSoftware Deployment Principles & Practices
Software Deployment Principles & Practices
Thyagarajan Krishnan
 
Unit 1 - Introduction to Software Engineering.ppt
Unit 1 - Introduction to Software Engineering.pptUnit 1 - Introduction to Software Engineering.ppt
Unit 1 - Introduction to Software Engineering.ppt
DrTThendralCompSci
 
Design and Implementation in Software Engineering
Design and Implementation in Software EngineeringDesign and Implementation in Software Engineering
Design and Implementation in Software Engineering
Kourosh Sajjadi
 
Ch5- Software Engineering 9
Ch5- Software Engineering 9Ch5- Software Engineering 9
Ch5- Software Engineering 9
Ian Sommerville
 
requirement gathering
requirement gatheringrequirement gathering
requirement gathering
SaeedMat
 
Requirement Analysis
Requirement AnalysisRequirement Analysis
Requirement Analysis
SADEED AMEEN
 
Ian Sommerville, Software Engineering, 9th Edition Ch 4
Ian Sommerville,  Software Engineering, 9th Edition Ch 4Ian Sommerville,  Software Engineering, 9th Edition Ch 4
Ian Sommerville, Software Engineering, 9th Edition Ch 4
Mohammed Romi
 
Ch7-Software Engineering 9
Ch7-Software Engineering 9Ch7-Software Engineering 9
Ch7-Software Engineering 9
Ian Sommerville
 
Feature Driven Development
Feature Driven DevelopmentFeature Driven Development
Feature Driven Development
dcsunu
 
Software Cost Estimation in Software Engineering SE23
Software Cost Estimation in Software Engineering SE23Software Cost Estimation in Software Engineering SE23
Software Cost Estimation in Software Engineering SE23
koolkampus
 

Viewers also liked (20)

Software engineering lecture notes
Software engineering lecture notesSoftware engineering lecture notes
Software engineering lecture notes
Siva Ayyakutti
 
software engineering notes for cse/it fifth semester
software engineering notes for cse/it fifth semestersoftware engineering notes for cse/it fifth semester
software engineering notes for cse/it fifth semester
rajesh199155
 
Software engineering Questions and Answers
Software engineering Questions and AnswersSoftware engineering Questions and Answers
Software engineering Questions and Answers
Bala Ganesh
 
SOFTWARE ENGINEERING
SOFTWARE ENGINEERINGSOFTWARE ENGINEERING
SOFTWARE ENGINEERING
Mahalakshmi Seenaswamy
 
CSC426 - Software Engineering Lecture Note Cont'd
CSC426   - Software Engineering Lecture Note Cont'dCSC426   - Software Engineering Lecture Note Cont'd
CSC426 - Software Engineering Lecture Note Cont'd
Bro Shola Ajayi
 
Software Engineering ppt
Software Engineering pptSoftware Engineering ppt
Software Engineering ppt
shruths2890
 
Introduction To Software Engineering
Introduction To Software EngineeringIntroduction To Software Engineering
Introduction To Software Engineering
Leyla Bonilla
 
CSC426 - Software Engineering Lecture Note
CSC426   - Software Engineering Lecture NoteCSC426   - Software Engineering Lecture Note
CSC426 - Software Engineering Lecture Note
Bro Shola Ajayi
 
Software engineering lecture notes
Software engineering   lecture notesSoftware engineering   lecture notes
Software engineering lecture notes
Garima Singh
 
Notes of Software engineering and Project Management
Notes of Software engineering and Project ManagementNotes of Software engineering and Project Management
Notes of Software engineering and Project Management
NANDINI SHARMA
 
software engineering
software engineeringsoftware engineering
software engineering
ramyavarkala
 
Software Engineering Sample Question paper for 2012
Software Engineering Sample Question paper for 2012Software Engineering Sample Question paper for 2012
Software Engineering Sample Question paper for 2012
Neelamani Samal
 
Software engineering project management
Software engineering project managementSoftware engineering project management
Software engineering project management
jhudyne
 
Change Impact Analysis for Natural Language Requirements
Change Impact Analysis for Natural Language RequirementsChange Impact Analysis for Natural Language Requirements
Change Impact Analysis for Natural Language Requirements
Lionel Briand
 
PhD Thesis Presentation - Evaluating Requirements Engineering Tools and Catal...
PhD Thesis Presentation - Evaluating Requirements Engineering Tools and Catal...PhD Thesis Presentation - Evaluating Requirements Engineering Tools and Catal...
PhD Thesis Presentation - Evaluating Requirements Engineering Tools and Catal...
Juan Manuel Carrillo de Gea
 
C:\Documents And Settings\Fredlin\Desktop\Ic Design\Synthesis200301
C:\Documents And Settings\Fredlin\Desktop\Ic Design\Synthesis200301C:\Documents And Settings\Fredlin\Desktop\Ic Design\Synthesis200301
C:\Documents And Settings\Fredlin\Desktop\Ic Design\Synthesis200301
guest77988fe
 
X Windows
X WindowsX Windows
X Windows
a71_barletta
 
Advance data structure & algorithm
Advance data structure & algorithmAdvance data structure & algorithm
Advance data structure & algorithm
K Hari Shankar
 
Computer Networks Foundation - Study Notes
Computer Networks Foundation - Study NotesComputer Networks Foundation - Study Notes
Computer Networks Foundation - Study Notes
Marius FAILLOT DEVARRE
 
Software engineering note
Software engineering noteSoftware engineering note
Software engineering note
Neelamani Samal
 
Software engineering lecture notes
Software engineering lecture notesSoftware engineering lecture notes
Software engineering lecture notes
Siva Ayyakutti
 
software engineering notes for cse/it fifth semester
software engineering notes for cse/it fifth semestersoftware engineering notes for cse/it fifth semester
software engineering notes for cse/it fifth semester
rajesh199155
 
Software engineering Questions and Answers
Software engineering Questions and AnswersSoftware engineering Questions and Answers
Software engineering Questions and Answers
Bala Ganesh
 
CSC426 - Software Engineering Lecture Note Cont'd
CSC426   - Software Engineering Lecture Note Cont'dCSC426   - Software Engineering Lecture Note Cont'd
CSC426 - Software Engineering Lecture Note Cont'd
Bro Shola Ajayi
 
Software Engineering ppt
Software Engineering pptSoftware Engineering ppt
Software Engineering ppt
shruths2890
 
Introduction To Software Engineering
Introduction To Software EngineeringIntroduction To Software Engineering
Introduction To Software Engineering
Leyla Bonilla
 
CSC426 - Software Engineering Lecture Note
CSC426   - Software Engineering Lecture NoteCSC426   - Software Engineering Lecture Note
CSC426 - Software Engineering Lecture Note
Bro Shola Ajayi
 
Software engineering lecture notes
Software engineering   lecture notesSoftware engineering   lecture notes
Software engineering lecture notes
Garima Singh
 
Notes of Software engineering and Project Management
Notes of Software engineering and Project ManagementNotes of Software engineering and Project Management
Notes of Software engineering and Project Management
NANDINI SHARMA
 
software engineering
software engineeringsoftware engineering
software engineering
ramyavarkala
 
Software Engineering Sample Question paper for 2012
Software Engineering Sample Question paper for 2012Software Engineering Sample Question paper for 2012
Software Engineering Sample Question paper for 2012
Neelamani Samal
 
Software engineering project management
Software engineering project managementSoftware engineering project management
Software engineering project management
jhudyne
 
Change Impact Analysis for Natural Language Requirements
Change Impact Analysis for Natural Language RequirementsChange Impact Analysis for Natural Language Requirements
Change Impact Analysis for Natural Language Requirements
Lionel Briand
 
PhD Thesis Presentation - Evaluating Requirements Engineering Tools and Catal...
PhD Thesis Presentation - Evaluating Requirements Engineering Tools and Catal...PhD Thesis Presentation - Evaluating Requirements Engineering Tools and Catal...
PhD Thesis Presentation - Evaluating Requirements Engineering Tools and Catal...
Juan Manuel Carrillo de Gea
 
C:\Documents And Settings\Fredlin\Desktop\Ic Design\Synthesis200301
C:\Documents And Settings\Fredlin\Desktop\Ic Design\Synthesis200301C:\Documents And Settings\Fredlin\Desktop\Ic Design\Synthesis200301
C:\Documents And Settings\Fredlin\Desktop\Ic Design\Synthesis200301
guest77988fe
 
Advance data structure & algorithm
Advance data structure & algorithmAdvance data structure & algorithm
Advance data structure & algorithm
K Hari Shankar
 
Computer Networks Foundation - Study Notes
Computer Networks Foundation - Study NotesComputer Networks Foundation - Study Notes
Computer Networks Foundation - Study Notes
Marius FAILLOT DEVARRE
 
Software engineering note
Software engineering noteSoftware engineering note
Software engineering note
Neelamani Samal
 
Ad

Similar to Software engineering lecture notes (20)

what is software Engineering for students
what is software Engineering for studentswhat is software Engineering for students
what is software Engineering for students
AssadLeo1
 
Elementary Probability theory Chapter 2.pptx
Elementary Probability theory Chapter 2.pptxElementary Probability theory Chapter 2.pptx
Elementary Probability theory Chapter 2.pptx
ethiouniverse
 
Se lec 3
Se lec 3Se lec 3
Se lec 3
Huda Alameen
 
Softweare Engieering
Softweare Engieering Softweare Engieering
Softweare Engieering
Huda Alameen
 
Software Engineering
Software EngineeringSoftware Engineering
Software Engineering
Mohamed Essam
 
Introduction to Software Engineering - What is Software Engineering?
Introduction to Software Engineering - What is Software Engineering?Introduction to Software Engineering - What is Software Engineering?
Introduction to Software Engineering - What is Software Engineering?
regalajohnraymond20
 
software engineering
software engineeringsoftware engineering
software engineering
subhakirthi
 
Software Process and Requirement
Software Process and RequirementSoftware Process and Requirement
Software Process and Requirement
cricket2ime
 
sw1.pdf
sw1.pdfsw1.pdf
sw1.pdf
Samehegazy2
 
Intro softwareeng
Intro softwareengIntro softwareeng
Intro softwareeng
PINKU29
 
Software process
Software processSoftware process
Software process
Jennifer Polack
 
Chapter 2.pptx
Chapter 2.pptxChapter 2.pptx
Chapter 2.pptx
AmnaAhsaan1
 
Formal Specification Ian Sommerville 9th Edition
Formal Specification Ian Sommerville 9th EditionFormal Specification Ian Sommerville 9th Edition
Formal Specification Ian Sommerville 9th Edition
RupeshShrestha28
 
Software Process in Software Engineering SE3
Software Process in Software Engineering SE3Software Process in Software Engineering SE3
Software Process in Software Engineering SE3
koolkampus
 
Ch4
Ch4Ch4
Ch4
Saad Gabr
 
Soft Eng - Software Process
Soft  Eng - Software ProcessSoft  Eng - Software Process
Soft Eng - Software Process
Jomel Penalba
 
Ch4
Ch4Ch4
Ch4
phanleson
 
Software Process Models
Software Process ModelsSoftware Process Models
Software Process Models
Jesse Manalansan
 
chapter no 2softwareprocess-160107000546.f
chapter no 2softwareprocess-160107000546.fchapter no 2softwareprocess-160107000546.f
chapter no 2softwareprocess-160107000546.f
DuaRajpoot2
 
Lecture 01.ppt
Lecture 01.pptLecture 01.ppt
Lecture 01.ppt
FaiZiTricks
 
what is software Engineering for students
what is software Engineering for studentswhat is software Engineering for students
what is software Engineering for students
AssadLeo1
 
Elementary Probability theory Chapter 2.pptx
Elementary Probability theory Chapter 2.pptxElementary Probability theory Chapter 2.pptx
Elementary Probability theory Chapter 2.pptx
ethiouniverse
 
Softweare Engieering
Softweare Engieering Softweare Engieering
Softweare Engieering
Huda Alameen
 
Software Engineering
Software EngineeringSoftware Engineering
Software Engineering
Mohamed Essam
 
Introduction to Software Engineering - What is Software Engineering?
Introduction to Software Engineering - What is Software Engineering?Introduction to Software Engineering - What is Software Engineering?
Introduction to Software Engineering - What is Software Engineering?
regalajohnraymond20
 
software engineering
software engineeringsoftware engineering
software engineering
subhakirthi
 
Software Process and Requirement
Software Process and RequirementSoftware Process and Requirement
Software Process and Requirement
cricket2ime
 
Intro softwareeng
Intro softwareengIntro softwareeng
Intro softwareeng
PINKU29
 
Formal Specification Ian Sommerville 9th Edition
Formal Specification Ian Sommerville 9th EditionFormal Specification Ian Sommerville 9th Edition
Formal Specification Ian Sommerville 9th Edition
RupeshShrestha28
 
Software Process in Software Engineering SE3
Software Process in Software Engineering SE3Software Process in Software Engineering SE3
Software Process in Software Engineering SE3
koolkampus
 
Soft Eng - Software Process
Soft  Eng - Software ProcessSoft  Eng - Software Process
Soft Eng - Software Process
Jomel Penalba
 
chapter no 2softwareprocess-160107000546.f
chapter no 2softwareprocess-160107000546.fchapter no 2softwareprocess-160107000546.f
chapter no 2softwareprocess-160107000546.f
DuaRajpoot2
 
Ad

More from Ammar Shafiq (7)

50 strategi pemasaran Internet
50 strategi pemasaran Internet50 strategi pemasaran Internet
50 strategi pemasaran Internet
Ammar Shafiq
 
Blueoceanstrategy | Youtube Strategy
Blueoceanstrategy | Youtube StrategyBlueoceanstrategy | Youtube Strategy
Blueoceanstrategy | Youtube Strategy
Ammar Shafiq
 
Management+accounting+in+public+sector
Management+accounting+in+public+sectorManagement+accounting+in+public+sector
Management+accounting+in+public+sector
Ammar Shafiq
 
Quality costing
Quality costingQuality costing
Quality costing
Ammar Shafiq
 
Skr+3200+chapter+3+(kweh)
Skr+3200+chapter+3+(kweh)Skr+3200+chapter+3+(kweh)
Skr+3200+chapter+3+(kweh)
Ammar Shafiq
 
Skr+3200+chapter+2+(kweh)
Skr+3200+chapter+2+(kweh)Skr+3200+chapter+2+(kweh)
Skr+3200+chapter+2+(kweh)
Ammar Shafiq
 
Skr+3200+chapter+1+(kweh)
Skr+3200+chapter+1+(kweh)Skr+3200+chapter+1+(kweh)
Skr+3200+chapter+1+(kweh)
Ammar Shafiq
 
50 strategi pemasaran Internet
50 strategi pemasaran Internet50 strategi pemasaran Internet
50 strategi pemasaran Internet
Ammar Shafiq
 
Blueoceanstrategy | Youtube Strategy
Blueoceanstrategy | Youtube StrategyBlueoceanstrategy | Youtube Strategy
Blueoceanstrategy | Youtube Strategy
Ammar Shafiq
 
Management+accounting+in+public+sector
Management+accounting+in+public+sectorManagement+accounting+in+public+sector
Management+accounting+in+public+sector
Ammar Shafiq
 
Skr+3200+chapter+3+(kweh)
Skr+3200+chapter+3+(kweh)Skr+3200+chapter+3+(kweh)
Skr+3200+chapter+3+(kweh)
Ammar Shafiq
 
Skr+3200+chapter+2+(kweh)
Skr+3200+chapter+2+(kweh)Skr+3200+chapter+2+(kweh)
Skr+3200+chapter+2+(kweh)
Ammar Shafiq
 
Skr+3200+chapter+1+(kweh)
Skr+3200+chapter+1+(kweh)Skr+3200+chapter+1+(kweh)
Skr+3200+chapter+1+(kweh)
Ammar Shafiq
 

Recently uploaded (20)

DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptxDevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
Justin Reock
 
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdfThe Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
Abi john
 
Cyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of securityCyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of security
riccardosl1
 
AI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global TrendsAI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global Trends
InData Labs
 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
 
How analogue intelligence complements AI
How analogue intelligence complements AIHow analogue intelligence complements AI
How analogue intelligence complements AI
Paul Rowe
 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
Mobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi ArabiaMobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi Arabia
Steve Jonas
 
Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025
Splunk
 
What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
 
Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)
Ortus Solutions, Corp
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
Alan Dix
 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
 
How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?
Daniel Lehner
 
Drupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy ConsumptionDrupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy Consumption
Exove
 
Semantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AISemantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AI
artmondano
 
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Impelsys Inc.
 
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptxDevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
Justin Reock
 
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdfThe Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
Abi john
 
Cyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of securityCyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of security
riccardosl1
 
AI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global TrendsAI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global Trends
InData Labs
 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
 
How analogue intelligence complements AI
How analogue intelligence complements AIHow analogue intelligence complements AI
How analogue intelligence complements AI
Paul Rowe
 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
Mobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi ArabiaMobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi Arabia
Steve Jonas
 
Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025
Splunk
 
What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
 
Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)
Ortus Solutions, Corp
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
Alan Dix
 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
 
How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?
Daniel Lehner
 
Drupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy ConsumptionDrupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy Consumption
Exove
 
Semantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AISemantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AI
artmondano
 
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Impelsys Inc.
 

Software engineering lecture notes

  • 1. 2011 download.benjaminsommer.com Benjamin Sommer [SOFTWARE ENGINEERING LECTURE NOTES] Brief and detailed notes from lectures held at the Ludwig-Maximilian-University, Faculty of Computer Science in Germany. This document neither claims completeness, nor correctness of the presented topic. Please let me know in case of errors or missing information: contact.benjaminsommer.com
  • 2. [SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011 OVERVIEW 3 SOFTWARE PROCESSES SOFTWARE PROCESS MODELS PROCESS ACTIVITIES COPING WITH CHANGE THE RATIONAL UNIFIED PROCESS AGILE SOFTWARE DEVELOPMENT AGILE METHODS PLAN-DRIVEN AND AGILE DEVELOPMENT EXTREME PROGRAMMING AGILE PROJECT MANAGEMENT SCALING AGILE METHODS REQUIREMENTS ENGINEERING FUNCTIONAL AND NON-FUNCTIONAL REQUIREMENTS THE SOFTWARE REQUIREMENTS DOCUMENT REQUIREMENTS SPECIFICATION REQUIREMENTS ENGINEERING PROCESSES REQUIREMENTS ELICITATION AND ANALYSIS REQUIREMENTS VALIDATION REQUIREMENTS MANAGEMENT SYSTEM MODELING CONTEXT MODELS INTERACTION MODELS STRUCTURAL MODELS BEHAVIORAL MODELS MODEL-DRIVEN ENGINEERING ARCHITECTURAL DESIGN ARCHITECTURAL DESIGN DECISIONS ARCHITECTURAL VIEWS ARCHITECTURAL PATTERNS APPLICATION ARCHITECTURES DESIGN AND IMPLEMENTATION OBJECT-ORIENTED DESIGN USING THE UML DESIGN PATTERNS IMPLEMENTATION ISSUES OPEN SOURCE DEVELOPMENT SOFTWARE TESTING DEVELOPMENT TESTING TEST-DRIVEN DEVELOPMENT RELEASE TESTING 5 5 7 10 13 16 16 17 17 19 20 21 21 23 24 25 26 29 30 31 32 32 33 34 35 37 38 39 39 42 44 45 47 48 50 51 52 56 57 download.benjaminsommer.com | 1
  • 3. October 21, 2011 [SOFTWARE ENGINEERING LECTURE NOTES] USER TESTING SOFTWARE EVOLUTION EVOLUTION PROCESSES PROGRAM EVOLUTION DYNAMICS SOFTWARE MAINTENANCE LEGACY SYSTEM MANAGEMENT 58 59 60 61 62 65 DEPENDABILITY AND SECURITY 67 SOCIOTECHNICAL SYSTEM COMPLEX SYSTEMS SYSTEMS ENGINEERING SYSTEM PROCUREMENT SYSTEM DEVELOPMENT SYSTEM OPERATION DEPENDABILITY AND SECURITY DEPENDABILITY PROPERTIES AVAILABILITY AND RELIABILITY SAFETY SECURITY DEPENDABILITY AND SECURITY SPECIFICATION RISK-DRIVEN REQUIREMENTS SPECIFICATION SAFETY SPECIFICATION RELIABILITY SPECIFICATION SECURITY SPECIFICATION FORMAL SPECIFICATION DEPENDABILITY ENGINEERING REDUNDANCY AND DIVERSITY 67 68 70 71 72 73 74 74 75 76 77 77 77 78 80 81 82 83 83 2 | download.benjaminsommer.com
  • 4. [SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011 Overview Software Engineering is concerned with        Technical processes of software development Software project management Development of tools, methods and theories to support software production Getting results of the required quality within the schedule and budget Often involves making compromises Often adopt a systematic and organized approach Less formal development is particularly appropriate for the development of web-based systems Software Engineering is important because    Individuals and society rely on advanced software systems Produce reliable and trustworthy systems economically and quickly Cheaper in the long run to use software engineering methods and techniques for software systems Fundamental activities being common to all software processes:     Software specification: customers and engineers define software that is to be produced and the constraints on its operation 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 modified to reflect changing customer and market requirements Software Engineering is related to computer science and systems engineering:    Computer science o Concerned with theories and methods Software Engineering o Practical problems of producing software Systems engineering o Aspects of development and evolution of complex systems o Specifying the system, defining its overall architecture, integrating the different parts to create the finished system General issues that affect many different types of software:  Heterogeneity o Operate as distributed systems across networks o Running on general-purpose computers and mobile phones o Integrate new software with older legacy systems written in different programming languages download.benjaminsommer.com | Overview 3
  • 5. October 21, 2011   [SOFTWARE ENGINEERING LECTURE NOTES] o Challenge: build dependable software that is flexible enough to cope with heterogeneity Business and social change o Change existing software and rapidly develop new software o Traditional software engineering techniques are time consuming o Goal: reduce time to adapt to changing needs Security and trust o Software is intertwined with all aspects of our lives o See remote software systems (web page, web service interface) o Make sure malicious users cannot attack software and information security is maintained Essential attributes of good software     Maintainability o Evolve to meet the changing needs of customers o Software change is inevitable (see changing business environment) Dependability and security o Includes reliability, security and safety o Should not cause physical or economic damage in case of system failure o Take special care for malicious users Efficiency o Includes responsiveness, processing time, memory utilization o Care about memory and processor cycles Acceptability o Acceptable to the type of users for which it is designed o Includes understandable, usable and compatible with other systems Application types         Stand-alone applications Interactive transaction-based applications Embedded control systems Batch processing systems Entertainment systems Systems for modeling and simulation Data collection systems Systems of systems Software engineering ethics:  Confidentiality: respect confidentiality or employers and clients (whether or not a formal confidentiality agreement has been signed) 4 Overview | download.benjaminsommer.com
  • 6. [SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011    Competence: do not misrepresent your level of competence (never accept work being outside of your competence) Intellectual property rights: be aware of local laws governing the use of intellectual property such as patents and copyright Computer misuse: do not use technical skills to misuse other people’s computers Software processes Main software processes     Specification Design and implementation Validation Evolution Software process models    Waterfall model Incremental development Reuse-oriented software engineering Waterfall model:     Requirements analysis and definition o Consult system users to establish system’s services, constrains and goals o They are then defined in detail and serve as a system specification System and software design o Establish an overall system architecture to allocate the requirements to either hardware or software systems o Involves identifying and describing the fundamental software system abstractions and their relationships Implementation and unit testing o Integrate and test individual program units or programs into complete systems o Ensure the software requirements has been met o Software system is delivered to the customer (after testing) Operation and maintenance o Normally the longest life cycle phase o System is installed and put into practical use o Involves correcting errors, improving the implementation of system units and enhancing the system’s services as new requirements are discovered Incremental development: Idea download.benjaminsommer.com | Overview 5
  • 7. October 21, 2011    [SOFTWARE ENGINEERING LECTURE NOTES] Develop and initial implementation Expose this to user comment Evolve this through several versions until an adequate system has been developed Characteristics      Start with an outline description of the software to develop Specification, development and validation activities are interleaved (concurrent activities) rather than separate More rapid feedback across activities Fundamental part of agile approaches Better for most business, e-commerce and personal systems than waterfall approaches Benefits compared to waterfall model    Reduced cost of accommodating changing customer requirements Easier to get customer feedback on the development work that has been done Possibly more rapid delivery and deployment of useful software to the customer. Customers use and gain value from the software earlier than with water model Problems   Process is not visible o How to measure progress (see managers) o Producing documents that reflect every version of the system is not cost-effective System structure tends to degrade as new increments are added o Time and money is required on refactoring to improve the software o Regular changes tend to corrupt its structure o Further software changes become increasingly difficult and costly Reuse-oriented software engineering      Requirements specification Component analysis o Search for components to implement this specification o Usually exact matches are not found Requirements modification o Analyze requirements using information about the found components o They are modified to reflect the available components o Restart with component analysis in case found components cannot be modified System design with reuse o Design the framework of the system or reuse an existing framework o Some new software may have to be designed if reusable components are not available Development and integration 6 Overview | download.benjaminsommer.com
  • 8. [SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011  o Develop software that cannot be externally procured o Integrate components and COTS (commercial off-the-shelf systems) o System integration may be part of development process rather than a separate activity System validation Types of software components to be used in a reuse-oriented process:    Web services o Developed according to service standards o Available for remote invocation Collections of objects in a package (e.g. from .NET or J2EE) Stand-alone software systems that are configured for use in a particular environment Advantages    Reduce the amount of software to be developed Reduce cost and risks Usually leads to faster delivery of the software Disadvantages   May lead to a system that does not meet the real needs of users (requirements compromises are inevitable) Lost control over the system evolution as new versions of the reusable components are not under the control of the organization using them Process activities Software specification Definition: the process of understanding and defining what services are required from the system and identifying the constraints on the system’s operation and development Requirements engineering: critical stage of the software process as errors at this stage inevitably lead to later problems in the system design and implementation Requirements engineering process   Feasibility study o Estimate whether the identified user needs may be satisfied using current software and hardware technologies o Considerations: cost-effective, development within existing budgetary constraints o Should be relatively cheap and quick Requirements elicitation and analysis o Derive the system requirements through observation of existing systems, discussions with potential users and procurers, task analysis download.benjaminsommer.com | Overview 7
  • 9. October 21, 2011   [SOFTWARE ENGINEERING LECTURE NOTES] o Development of one or more system models and prototypes possible o Help to understand the system to be specified Requirements specification o Activity of translating the information gathered during the analysis activity into a document that defines a set of requirements o User requirements: abstract statements of the system requirements for the customer and end-user of the system o System requirements: more detailed description of the functionality to be provided Requirements validation o Checks the requirements for realism, consistency and completeness o Errors are discovered to correct the specification These process are usually interleaved (see agile methods) Software design and implementation Software implementation: process of converting a system specification into an executable system Characteristics:   Always involves processes of software design and programming May refine software specification if incremental approach is used Software design: a description of the structure of the software to be implemented, the data models and structures used by the system, the interfaces between system components and the algorithms used. Characteristics:      Designers develop the design interactively Add formality and detail as they develop their design with constant backtracking to correct earlier designs Process activities are interleaved: feedback from one stage to another and consequent design rework Requires detailed knowledge about the software platform (environment in which the software will execute; e.g. operating system, database, middleware etc.) Activities in the design process vary, depending on the type of system being developed (see realtime systems vs. services vs. database systems) Possible activities of the design process of information systems:   Architectural design o Identify the overall structure of the system, the principal components (sub-systems, modules), their relationships and how they are distributed Interface design o Define the interfaces between system components 8 Overview | download.benjaminsommer.com
  • 10. [SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011 o o   Interface specification must be unambiguous (precise interface) After interface specifications are agreed, components can be designed and developed concurrently Component design o Take each system component and design how it will operate o May be a simple statement of the expected functionality to be implemented (specific design left to the programmer) o May be a list of changes to be made to a reusable component or a detailed design model o Design model may be used to automatically generate an implementation Database design o Design the system data structures and how these are to be represented in a database o Work depends on whether existing database is to be reused or a new database is to be created Software validation Definition: validation (verification and validation, V&V) is intended to show that a system both conforms to its specification and that is meets the expectations of the system customer Stages in the testing process:    Development testing o Components making up the system are tested by the people developing the system o Individual/separate tests o Test of functions, classes or coherent groupings of these entities o Test automation tools (JUnit) are commonly used (when new versions of the components are created) System testing o System components are integrated to create a complete system o Concerned with finding errors that result from unanticipated interactions between components and component interface problems o Concerned with showing that the system meets its function and non-functional requirements o Testing the emergent system properties o May be a multi-stage process for large systems Acceptance testing o Final stage in the testing process before system is accepted for operational use o Tested with data supplied by the customer rather than with simulated test data Characteristics:  Component development and testing processes are interleaved (normally) download.benjaminsommer.com | Overview 9
  • 11. October 21, 2011     [SOFTWARE ENGINEERING LECTURE NOTES] Incremental approach: each increment should be tested as it is developed Plan-driven approach: testing is driving by a set of test plans. Use of an independent team of testers Acceptance testing is sometimes called ‘alpha testing’ ‘Beta testing’ involves delivering a system to a number of potential customers who agree to use that system. They report problems to the system developers. This exposes the product to real use and detect errors that may not have been anticipated by the system builders Software evolution Distinction between software development and maintenance is increasingly irrelevant (software engineering as an evolutionary process where software is continually changed over tis lifetime in response to changing requirements and customer needs) Coping with change Reasons for change    Business procuring the system responds to external pressures and management priorities change New technologies become available New design and implementation possibilities emerge Rework: work that has been completed has to be redone (software development, design, requirements analysis, redesign, re-test etc.) Approaches to reduce cost of rework:   System prototyping o Version of the system or part of the system is developed quickly to check the customer’s requirements and feasibility of some design decisions o Supports change avoidance as it allows users to experiment with the system before delivery (refine their requirements) o Reduced number requirements change proposals made after delivery Incremental delivery o Increments are delivered to the customer for comment and experimentation o Supports both change avoidance and change tolerance o Avoids premature commitment to requirements for the whole system and allows changes to be incorporated into later increments at relatively low costs Refactoring: improving structure and organization of a program (an important mechanism to support change tolerance) Prototyping 10 Overview | download.benjaminsommer.com
  • 12. [SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011 Prototype: an initial version of a software system that is used to demonstrate concepts, try out design options and find out more about the problem and its possible solutions. Rapid, iterative development of the prototype is essential (to control costs; system stakeholders can experiment with the prototype early in the software process) How software prototyping can help:        Requirements engineering process: elicitation and validation of system requirements System design process: explore particular software solutions; support user interface design Get new ideas for requirements Find areas of strength and weakness in the software (to propose new system requirements) May reveal errors and omissions in the requirements Carry out design experiments to check the feasibility of a proposed design Essential part of the user interface design process (dynamic nature of user interfaces) Delivering throwaway prototypes is usually unwise:     May be impossible to tune the prototype to meet non-functional requirements: performance, security, robustness, reliability requirements Undocumented prototype due to rapid change during development; prototype code as the only design specification (bad for long-time maintenance) Probably degraded system structure due to changes made during prototype development. System will be difficult and expensive to maintain. Relaxed organizational quality standards for prototype development Examples:   Paper-based mock-ups of the system user interface (help users refine an interface design and work through usage scenarios) Wizard of Oz prototype (extension to the one above): only the user interface is developed Incremental delivery Definition: an approach to software development where some of the developed increments are delivered to the customer and deployed for use in an operational environment Characteristics:  Customers identify o the services to be provided by the system (in outline) o importance of the system’s services to them Processes  Define outline requirements download.benjaminsommer.com | Overview 11
  • 13. October 21, 2011         [SOFTWARE ENGINEERING LECTURE NOTES] Assign requirements to increments Design system architecture Develop system increment Validate increment Integrate increment Validate system Deploy increment: if system is incomplete, restart with development of system increments Final system if system is complete Advantages     Customers can use early increments as prototypes and gain experience that informs their requirements for later system increments. No re-learning for users when system is available (part of the real system, unlike prototypes) Less waiting time for customers until entire system is delivered before they can gain value from it. Use the software immediately, which satisfies their most critical requirements Relatively easy to incorporate changes into the system (see incremental development) Most important system services receive the most testing (highest-priority services are delivered first). Customers less likely to encounter failures in the most important parts of the system Problems with incremental delivery:    Can be hard to identify common facilities that are needed by the increments (requirements are not defined in detail until an increment is to be implemented). Note that most systems require a set of basic facilities that are used by different parts of the system. Iterative development can also be difficult when a replacement system is being developed. Getting useful customer feedback is difficult (users want all the functionality of the old system and are often unwilling to experiment with an incomplete new system) Requires a new form of contract, which large customers (government agencies) may find difficult to accommodate o Specification is developed in conjunction with the software o No complete system specification until the final increment is specified o Conflicts with procurement model of many organizations: complete system specification is part of the system development contract! Incremental development and delivery should not be used for (suffer from the same problems of uncertain and changing requirements)    Very large systems where development may involve teams working in different locations Some embedded systems where software depends on hardware development Some critical systems where all the requirements must be analyzed to check for interactions that may compromise the safety or security of the system 12 Overview | download.benjaminsommer.com
  • 14. [SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011 Boehm’s spiral model      Is a risk-driven software process framework Software process is represented as a spiral Each loop in the spiral represents a phase of the software process It combines change avoidance with change tolerance It assumes that changes are a result of project risks and includes explicit risk management activities to reduce these risks Each loop is split into four sectors:     Objective setting o To determine specific objectives, alternatives and constraints o Constraints on the process and the product are identified o A detailed management plan is drawn up o Project risks are identified o Alternative strategies may be planned Risk assessment and reduction o A detailed analysis for each identified project risk is carried out o Measurements to reduce these risks Development and validation o A development model for the system is chosen o Throwaway prototyping: user interface risks are dominant o Development based on formal transformations: safety risks are the main consideration o Waterfall model: main identified risk is a sub-system integration Planning o Project is reviewed o Decision: continue with a further loop of the spiral? If so, plans are drawn up for the next phase of the project Advantages:  Explicit recognition of risk Characteristics:    Begin of cycle of the spiral: elaborating objectives such as performance and functionality Enumerate alternative ways of achieving these objectives and dealing with the constraints Development is carried out after risks have been assessed The Rational Unified Process  A modern process model that has been derived from work on the UML and the associated Unified software Development Process  A hybrid process model download.benjaminsommer.com | Overview 13
  • 15. October 21, 2011  [SOFTWARE ENGINEERING LECTURE NOTES] Brings together elements from all of the generic process models, illustrates good practice in specification and design and supports prototyping and incremental delivery A phase model that identifies four discrete phases in the software process Phases are more closely related to business rather than technical convers (unlike the waterfall model where phases are equated with process activities) Separation of phases and workflows Recognizes that deploying software in a user’s environment is part of the process Phases are dynamic and have goals Workflows are static and are technical activities that are not associated with a single phase (used throughout the development to achieve goals of each phase)       RUP described from three perspectives:   Dynamic perspective: shows the phases of the model over time Static perspective: shows the process activities that are enacted o Called ‘workflows’ in the RUP description o 6 core process workflows and 3 core supporting workflows Practice perspective: suggests good practices to be used during the process  Phases:     Inception o Goal: establish a business case for the system o Identify all external entities (people and systems) that will interact with the system and define these interactions o Assess the contribution that the system makes to the business o Project may be cancelled after this phase if contribution is minor Elaboration o Goal: develop an understanding of the problem domain, establish an architectural framework for the system, develop the project plan and identify key project risks o On completion: requirements model for the system (may be a set of UML use-cases, an architectural description, and a development plan for the software) Construction o Involves system design, programming and testing o Parts of the system developed in parallel and integrated during this phase o On completion: working software system and associated documentation that is ready for delivery to users Transition o Moving the system from the development community to the user community and making it work in a real environment o Sometimes ignored in most software process models o An expensive and sometimes problematic activity 14 Overview | download.benjaminsommer.com
  • 16. [SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011 o On completion: a documented software system that is working correctly in its operational environment Advantage of dynamic and static views:  Phases of the development process are not associated with specific workflows (all workflows may be active at all stages of the process) Static workflows in the RUP:          Business modeling o Business processes are modeled using business use cases Requirements o Actors who interact with the system are identified o Use cases are developed to model the system requirements Analysis and design o A design model is created and documented o Used tools: architectural models, component models, object models and sequence models Implementation o Components in the system are implemented and structured into implementation subsystems o Automatic code generation from design models helps accelerate this process Testing o Carried out in conjunction with implementation (an iterative process) o Follows the completion of the implementation Deployment o A product release is created, distributed to users and installed in their workplace Configuration and change management o Manages changes to the system (supporting workflow) Project management o Manages the system development (supporting working) Environment o Makes appropriate software tools available to the software development team Practice perspective and its recognized fundamental best practices (describes good software engineering practices):      Develop software iteratively: plan increments of the system based on customer priorities Manage requirements: explicitly document the customer’s requirements Use component-based architectures Visually model software: use UML models for static and dynamic views of the software Verify software quality download.benjaminsommer.com | Overview 15
  • 17. October 21, 2011  [SOFTWARE ENGINEERING LECTURE NOTES] Control changes to software RUP is not suitable for  Embedded software development Agile software development Fundamental characteristics:      Processes of specification, design and implementation are interleaved o No detailed system specification o Design documentation is minimized or generated automatically by the programming environment o User requirements document only defines the most important characteristics of the system System is developed in a series of versions o End-users and other system stakeholders are involved in specifying and evaluating each version System user interfaces are often developed using an interactive development system o System may then generate a web-based interface for a browser or an interface for a specific platform Incremental development methods Minimize documentation by using informal communications (rather than formal meetings with written documents) Agile methods Typical types of system development:   Small or medium-sized product for sale, developed by a software company Custom system development within an organization, o with a clear commitment from the customer to become involved in the development process o without massive external rules and regulations Principles of agile methods:    Customer involvement o Provide and prioritize new system requirements o Evaluate the iterations of the system Incremental delivery o Customer specifies the requirements to be included in each increment People not process o Recognize and exploit the skills of the development team 16 Overview | download.benjaminsommer.com
  • 18. [SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011 o   Team members should develop their own ways of working without prescriptive processes Embrace change o Perspective: system requirements will change overtime o System design should accommodate these changes Maintain simplicity o Simplicity for the software and for the development process o Actively work to eliminate complexity from the system Non-technical problems:      Maintaining simplicity requires extra work Prioritizing changes can be extremely difficult (esp. for stakeholders; see OpenGL) Individual team members may not have suitable personalities for the intense involvement that is typical of agile methods Many organizations (large companies) are less likely to switch to more informal working environments (investigated a lot of time to structure and define processes) Writing contracts between the customer and the supplier may be difficult, since software requirements documents are usually part of the contract Questions when considering agile methods and maintenance:   Are systems that are developed using an agile approach maintainable, given the emphasis in the development process of minimizing formal documentation? Can agile methods be used effectively for evolving a system in response to customer change requests? Plan-driven and agile development  Iteration occurs within activities with formal documents used to communicate between stages of the process  Can support incremental development and delivery Extreme programming  Several new versions of a system may be developed by different programmers, integrated and tested in a day  Requirements are expressed as scenarios (user stories), which are implemented directly as a series of tasks  Programmers work in pairs and develop tests for each task before writing the code Characteristics / practices:   Incremental development by small, frequent releases of the system Customer involvement by continuous engagement of the customer in the development team download.benjaminsommer.com | Overview 17
  • 19. October 21, 2011    [SOFTWARE ENGINEERING LECTURE NOTES] Might avoid excessively long working hours by using pair programming, collective ownership of the system code and by sustainable development process Change is embraced through regular system releases to customers Maintaining simplicity by constant refactoring Extreme programming practices:           Incremental planning Small releases Simple design Test-first development Refactoring Pair programming Collective ownership Continuous integration Sustainable pace On-site customer Testing practices     Test-first development o Writing the tests before writing the code o Run the test as the code is being written and discover problems during development o Reduces interface misunderstanding o Task implementers have to thoroughly understand the specification to write tests for the system o Avoids the problem of ‘test-lag’ Incremental test development from scenarios User involvement in the test development and validation o Help develop acceptance tests for the stories that are to be implemented in the next release of the system o Acceptance testing is incremental The use of automated testing frameworks o Essential for test-first development o Tests are written as executable components before the task is implemented o Should be stand-alone o Should simulate the submission of input to be tested o Widely used testing framework: Junit Pair programming Advantages: 18 Overview | download.benjaminsommer.com
  • 20. [SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011      Idea of collective ownership and responsibility for the system (egoless programming); team has collective responsibility for resolving these problems Informal review process: each line is looked at by at least two people Support refactoring (as a process of software improvement) Discuss software before development: probably have fewer false starts and less rework Less time spent repairing bugs by informal inspection Agile project management Scrum approach: a general agile method but with its focus on managing iterative development rather than specific technical approaches to agile software engineering Phases:    Outline planning phase o Establish the general objectives for the project o Design the software architecture Sprint cycles o Each cycle develops an increment of the system o Cycles: assess, select, review and develop Project closure phase o Wraps up the project o Completes required documentation (system help frames and user manuals) o Assesses the lessons learned from the project Key characteristics of sprint cycles:       Sprints are fixed length (2-4 weeks) Starting point for planning: product backlog (list of work to be done on the project) Assessment phase: work is reviewed, priorities and risks are assigned o Customer is closely involved in this process and can introduce new requirements or tasks at the beginning of each spring Selection phase: involves all of the project team o Select the features and functionality to be developed during the sprint Develop the software o Short daily meetings involving all team members to review progress and reprioritize work (if required) o Team is isolated from the customer and the organization o Communications are channeled through the ‘Scrum master’ (to protect the development team from external distractions) o No specific suggestions on how to write requirements, test-first development etc. End of sprint: work is reviewed and presented to stakeholders Idea behind Scrum: download.benjaminsommer.com | Overview 19
  • 21. October 21, 2011    [SOFTWARE ENGINEERING LECTURE NOTES] Empower the whole team to make decisions Deliberately avoid the term ‘project manager’ ‘Scrum master’: a facilitator who arranges daily meetings, tracks the backlog of work to be done, records decisions, measures progress against the backlog and communicates with customers and management outside of the team Advantages:      Product is broken down into a set of manageable und understandable chunks Unstable requirements do not hold up progress Whole team has visibility of everything (improves team communication) Customers see on-time delivery of increments (gain feedback on how the product works) Established trust between customers and developers Scaling agile methods Characteristics of large software system development:       Collections of separate, communicating systems (in different places and time zones) ‘brownfield systems’: include and interact with a number of existing systems (political issues can be significant) Significant fraction of the development is concerned with system configuration rather than original code development (not necessarily compatible with incremental development and frequent system integration) Constrained by external rules and regulations limiting the way that they can be developed (system document required somehow) Long procurement and development time Diverse set of stakeholders (practically impossible to involve all of these different stakeholders in the development process) Two perspectives on the scaling of agile methods:   ‘scaling up’ o Concerned with using these methods for developing large software systems that cannot be developed by a small team ‘scaling down’ o Concerned with how agile methods can be introduced across a large organization with many years of software development experience Critical adaptions:  Up-front design and system documentation: o software architecture has to be designed o documentation to describe critical aspects of the system (database schemas, work breakdown across teams) 20 Overview | download.benjaminsommer.com
  • 22. [SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011   cross-team communication mechanisms o regular phone and video conferences o short electronic meetings o communication channels: emails, instant messaging, wikis, social networking systems continuous integration o practically impossible: whole system is build every time any developer checks in a change o Essential: maintain frequent system builds and regular releases of the system o New configuration management tools that support multi-team software development have to be introduced Difficulties in introducing agile methods to large companies:     Project managers: reluctant to accept the risk of a new approach (if they do not have experience of agile methods, and since they do not know how this will affect their particular projects) Large organizations: have quality procedures and standards for all of their projects A wide range of skills and abilities: agile methods seem to work best when team members have a relatively high skill level Cultural resistance to agile methods (organizations with long history of using conventional system engineering processes) Requirements engineering Requirements: descriptions of what the system should do> the services that it provides and the constraints on its operation. Requirements Engineering (RE): the process of finding out, analyzing, documenting and checking these services and constraints User requirements: statements of what services the system is expected to provide to system users and the constraints under which it must operate, in a natural language plus diagrams System requirements: more detailed descriptions of the software system’s functions, services and operational constraints. The system requirements document / functional specification defines exactly what is to be implemented. It may be part of a contract between the system buyer and the software developers. Functional and non-functional requirements  Functional requirements: o Statements of services the system should provide o How the system should react to particular inputs o How the system should behave in particular situations o Optional: what the system should do o Examples: security (user authentication facilities in the system)  Non-functional requirements: download.benjaminsommer.com | Overview 21
  • 23. October 21, 2011 o o o o [SOFTWARE ENGINEERING LECTURE NOTES] Constraints on the services or functions offered by the system Include constraints concerning timing, development process and standards Often apply to the system as a whole (unlike individual features or services) Example: security (limiting access to authorized users) Functional requirements      Vary from general to very specific requirements (what the system should do vs. local ways of working/organization of an existing system) May by expressed as user or system requirements or both Imprecisions may cause software engineering problems (see ambiguous user requirements) Function requirements specification should be complete and consistent (no contradictory definitions) ( Completeness and consistency practically impossible for large complex systems o Easy to make mistakes and omissions when writing specifications for complex systems o Many stakeholders in a large system (they often have inconsistent needs) Non-functional requirements          May relate to emergent system properties: reliability, response time and store occupancy May define constraints on the system implementation: I/O device capabilities, data representations used in interfaces Specify or constrain characteristics of the system as a whole: performance security, availability Often more critical than individual function requirements Whole system may be unusable when failing to meet a non-functional requirement Often more difficult to relate components to nonfunctional requirements Implementation of these requirements may be diffused o May affect the overall architecture of a system (rather than the individual components) o May generate a number of related functional requirements that define new system services that are required (e.g. security) o May also generate requirements that restrict existing requirements Arise through user needs: budget constraints, organizational policies, need for interoperability with other software/hardware, external factors (safety regulations, privacy legislation) May come from o Product requirements: specify/constrain the behavior of the software  Usability requirements  Efficiency requirements (performance, space)  Dependability requirements  Security requirements o Organizational requirements: broad system req. derived from policies and procedures in the customer’s and developer’s organization.  Environmental requirement (operating environment of the system) 22 Overview | download.benjaminsommer.com
  • 24. [SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011   o Operational process requirement (how the system will be used) Development process requirement (programming language, development environment, process standards) External requirements: from factor external to the system and its development process  Regulatory requirements (what must be done for the system to be used by a regulator)  Ethical requirements (ensure the system will be acceptable to its user and the general public)  Legislative requirements (ensure the system operates within the law) Metrics for specifying non-functional requirements: speed, size, ease of use, reliability, robustness, portability The software requirements document Synonyms: software requirements specification, SRS Definition: official statement of what the system developers should implement. It should include user and system requirements. Diverse set of users:      System customers who specify the req. and read them to check that they meet their needs (they also may make changes) (Senior) management of the organization that is paying for the system System Engineers responsible for developing the software System test engineers to develop validation tests for the system System maintenance engineers to understand the system and the relationships between its parts Structure of a requirements document:    Preface o Define the expected readership of the document o Describe its version history o A rational for the creation of a new version o A summary of the changes made in each version Introduction o Describe the need for the system o Describe the system’s functions o Explain how it will work with other systems o Describe how the system fits into the overall business or strategic objectives of the organization commissioning the software Glossary o Define the technical terms used in the document download.benjaminsommer.com | Overview 23
  • 25. October 21, 2011        [SOFTWARE ENGINEERING LECTURE NOTES] o Should not make assumptions about the experience or expertise of the reader User requirements definition o Describe the services provided for the user o Non-functional system requirements should also be described o May use natural language, diagrams or other notations that are understandable to customers o Product and process standards should be specified (if applicable) System architecture o A high-level overview of the anticipated system architecture o Showing the distribution of functions across system modules o Architectural components should be highlighted (that are reused) System requirements specification o Describe the functional and non-functional requirements in more detail o Optional: further detail to the non-functional requirements o Optional: interfaces to other systems System models o Include graphical system models showing the relationships between the system components, the system and its environment o Examples: object models, data-flow models, semantic data models System evolution o Describe the fundamental assumptions on which the system is based o Any anticipated changes due to hardware evolution, changing user needs etc. o Useful for system designers: may help to avoid design decisions Appendices o Provide detailed, specific information that is related to the application being developed o Example: hardware and database descriptions o Hardware requirements: minimal and optional configurations for the system o Database requirements: logical organization of the data used by the system and the relationships between data Index o A normal alphabetic index o An index of diagrams o An index of functions etc. Requirements specification  Should be clear, unambiguous, easy to understand, complete, consistent  Use of natural language, simple tables, forms and intuitive diagrams  A complete and detailed specification of the whole system How to write a system requirement specification:  Natural language 24 Overview | download.benjaminsommer.com
  • 26. [SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011     Structured natural language Design description languages Graphical notations Mathematical specifications Natural language specification Guidelines:       Is expressive, intuitive and universal Use a standard format Use language consistently to distinguish between mandatory and desirable requirements Use text highlighting Do not assume that readers understand technical software engineering language Try to associate a rationale with each user requirement Structures specifications     A way of writing system requirements where the freedom of the requirements writer is limited and all requirements are written in a standard way Maintains most of the expressiveness and understandability of natural language Ensures that some uniformity is imposed on the specification Define one or more standard templates for requirements and represent these templates as structured forms Information in a standard form for specifying functional requirements:        Description of the function or entity being specified Inputs and where these come from Outputs and where these go to Information about the information that is needed for the computation or other entities in the system that are used Action to be taken Pre- and post-condition before and after the function is called Side effects of the operation Requirements engineering processes High-level activities:     Feasibility study Elicitation and analysis Specification Validation download.benjaminsommer.com | Overview 25
  • 27. October 21, 2011 [SOFTWARE ENGINEERING LECTURE NOTES] Characteristics of a spiral view    Activities are organized as an iterative process around a spiral Output is the system requirements document Amount of time and effort for each activity depends on current stage and type of system to be developed Requirements engineering: the process of applying a structured analysis method (e.g. object-oriented analysis).   Involves analyzing the system and developing a set of graphical system models (case models for system specification) Set of models describes the behavior of the system (annotated with additional information; e.g. system’s required performance or reliability) Requirements elicitation: a human-centered activity (unlike constraints by rigid system models) Requirements management: process of managing changing requirements, e.g. modifications to the system’s hardware, software or organizational environment. Requirements elicitation and analysis  Software engineers work with customers and system end-users to find out about o the application domain o what services the system should the system provide o the required performance of the system o hardware constraints The requirements elicitation and analysis process:    Requirements discovery o Interact with stakeholders of the system to discover their requirements (domain requirements and documentation) o Several complementary techniques available Requirements classification and organization o Takes unstructured collection of requirements o Groups related requirements o Organizes them into coherent clusters o Most common way: model of the system architecture to identify sub-systems and to associate requirements with ach sub-system o Practice: requirements engineering and architectural design hard to separate Requirements prioritization and negotiation o Conflict of requirements with several stakeholders o Prioritize requirements o Find and resolve requirements conflicts through negotiation 26 Overview | download.benjaminsommer.com
  • 28. [SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011  o Compromises inevitable Requirements specification o Document requirements (formal or informal) Eliciting and understanding requirements from stakeholders is difficult:        Difficult to articulate Possibly unrealistic demands (stakeholders may don’t know what is and isn’t feasible) Stakeholders might not know what they want from a computer system (expect in most general terms) Requirements engineers may not understand the naturally expressed requirements of stakeholders (in their own terms and with implicit knowledge) Different stakeholders have different requirements Political factors Dynamic economic and business environment (where the analysis takes place) Requirements discovery     Synonym: requirements elicitation The process of gathering information about the required system and existing systems Distilling the user and system requirements from this information Sources of information: documentation, system stakeholders, specifications of similar systems (plus interviews, observations) Interviewing          Formal and informal interviews Closed interviews: stakeholder answers a pre-defined set of questions Open interviews o No pre-defined agenda o Requirements engineering team explores a range of issues with system stakeholders o Develop a better understanding of their needs Practice: mixture of open and closed interviews Part of most requirements engineering processes Questions to stakeholders about the system that they currently use and the system to be developed Difficult to elicit domain knowledge through interviews (possibly) o Impossible to discuss domain requirements without using terminology. Inadequate knowledge leads to misunderstandings o ‘basis’/fundamental (but professional) knowledge might be difficult to explain to nonprofessionals (in terms of software engineering or computer science) Ineffective technique for eliciting knowledge about organizational requirements and constraints Characteristics of effective interviews download.benjaminsommer.com | Overview 27
  • 29. October 21, 2011 [SOFTWARE ENGINEERING LECTURE NOTES] o  Open-minded: avoid pre-conceived ideas about the requirements (surprising requirements) o Prompt the interviewee to get discussions (using a springboard questions, requirements proposal, b working together on a prototype system) Should be used with other requirements elicitation techniques (not to miss essential information) Scenarios        Often easier to relate to real-life examples rather than abstract descriptions Useful for adding detail to an outline requirements description Covers one or a small number of possible interactions Starts with an outline of the interaction May include o What the system and users expect when the scenario start o Normal flow of events in the scenario o What can go wrong and how this is handled o Information about other activities going on at the same time o System state when the scenario finishes Involves working with stakeholders to identify scenarios and to capture details to be included in these scenarios May be written as texts, supplemented by diagrams, screen shots etc. Use cases          A requirements discovery technique that were first introduced in the Object method A fundamental feature of the unified modeling language Identifies the actors involved in an interaction and names the type of interaction (supplemented by additional information describing the interaction with the system) Documented using a high-level use case diagram No hard and fast distinction between scenarios and use cases Identify the individual interactions between the system and its users or other systems Should be documented with a textual description (may be linked to other models in the UML) Effective technique (along with scenarios) for eliciting requirements form stakeholders who interact directly with the system UML is a de facto standard for object-oriented modeling Ethnography   Software systems are used in social and organizational contexts (may constrain or influence software system requirements) Successful systems: satisfy social and organizational requirements 28 Overview | download.benjaminsommer.com
  • 30. [SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011     Definition: an observational technique that can be used to understand operational processes and help derive support requirements for these processes Effective for discovering 2 types of requirements: o Requirements that are derived from the way in which people actually work (rather than the way in which process definitions say they ought to work) o Requirements that are derived from cooperation and awareness of other people’s activities Can be combined with prototyping Ethnographic studies can reveal critical process details that are often missed by other requirements elicitation techniques) Requirements validation  The process of checking that requirements actually define the system that the customer really wants  Overlaps with analysis: it is concerned with finding problems with the requirements  Important because errors in a requirements document can lead to extensive rework costs  Process should not be underestimated Checks during the validation process:      Validity checks Consistency checks o Requirements in the document should not conflict Completeness checks o Requirements that define all functions and constraints intended by the system user Realism checks o Check to ensure that requirements can actually be implemented Verifiability o System requirements should always be written so that they are verifiable o Reduces the potential for dispute between customer and contract Requirements techniques to be used individually or in conjunction:    Requirements reviews o Systematic analysis by a team of requires to check for errors and inconsistencies Prototyping o Demonstration of an executable model of the system o Personal experimentation to check if it meets their real needs Test-case generation o Requirements should be testable o Difficult or impossible design often means difficult implementation download.benjaminsommer.com | Overview 29
  • 31. October 21, 2011 [SOFTWARE ENGINEERING LECTURE NOTES] Requirements management Definition: the process of understanding and controlling changes to system requirements      Requirements for large systems are always changing. Reasons: o These systems are usually developed to address ‘wicked’ problems (software requirements are bound to be incomplete) Keep track of individual requirements Maintain links between dependent requirements Establish a formal process for making change proposals and linking these to system requirements Start planning how to manage changing requirements during the requirements elicitation process Reasons why change is inevitable:    Business and technical environment of the system always changes after installation People how pay for a system and the users of that system are rarely the same people Large systems usually have a diverse user community o Many users have different requirements and priorities that may be conflicting or contradictory o Final system requirements: a compromise Requirements management planning    Establishes the level of requirements management detail that is required Required decisions to be made o Requirements identification: each requirements must be uniquely identified o A change management process: set of activities that assess the impact and cost of changes o Traceability policies: define the relationships between each requirement and between the requirements and the system design that should be recorded o Tool support: process large amounts of information about the requirements (specialist requirements management systems, spreadsheets, simple database systems) Required tool support for o Requirements storage: requirements should be maintained in a secure, managed data store that is accessible to everyone involved in the requirements engineering process o Change management: process of change management is simplified if active tool support is available o Traceability management: some tools help discover possible relationships between requirements Requirements change management 30 Overview | download.benjaminsommer.com
  • 32. [SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011    Should be applied to all proposed changes to a system’s requirements (after they have been approved) Essential because o Need to decide if the benefits of implementing new requirements are justified by the costs of implementation Advantage of a formal change management o Change proposals are treated consistently o Changes to the requirements document are made in a controlled way Principal stages to a change management process:    Problem analysis and change specification Change analysis and costing Change implementation System modeling Definition: the process of developing abstract models of a system, with each model presenting a different view or perspective of that system.    Represent the system through graphical notation (UML) or formal models (mathematics) Used during requirements engineering process: help derive the requirements for a system Used during design process: describe the system to engineers implementing the system and after implementation to document the systems structure and operation System models:  Abstraction of the system; leaves out details Perspectives for creating models:     External perspective: model the context/environment of the system Interaction perspective: model the interactions between a system and its environment or between the components of a system Structural perspective: model the organization of a system or the structure of the data Behavioral perspective: model the dynamic behavior of the system and how it responds to events Type of diagrams representing the essentials of a system:     Activity diagrams: activates involved in a process or in data processing Case diagrams: interactions between a system and its environment Sequence diagrams: interactions between actors and the system and between system components Class diagrams: object classes in the system and the associations between these classes download.benjaminsommer.com | Overview 31
  • 33. October 21, 2011  [SOFTWARE ENGINEERING LECTURE NOTES] State diagrams: how the system reactions to internal and external events Why graphical models are used:    A means of facilitating discussions about an existing or proposed system A way of documenting an existing system A detailed system description that can be used to generate a system implementation Context models  Normally show that the environment includes several other automated systems  Do not show types of relationships between the systems in the environment and the system to be specified  Used along with other models (business process models) UML activity diagrams:         Show the activities that make up a system process Show the flow of control from one activity to another Start of process: indicated by a filled circle End of process: filled circle inside another circle Activities: rectangles with round corners Arrows represent the flow of work from one activity to another Arrows annotated with guards: indicate the condition when that flow is taken Solid bar: indicate activity coordination Interaction models Some types of interaction:   User interaction: user inputs and outputs System interaction: systems and components Modeling user interaction:  Helps to understand if a proposed system structure is likely to deliver the required system performance and dependability Use case modeling    Used to model interactions between a system and external actors (users, other systems) Used to support requirements elicitation Gives a fairly simple overview of an interaction (you have to provide more detail to understand what is involved: textual description, structured description in a table, sequence diagram) Use case: 32 Overview | download.benjaminsommer.com
  • 34. [SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011   Represents a discrete task (involves external interaction with a system) Shown as an ellipse with the actors involved in the use case Key elements often involved in use cases: actors, description, data, stimulus, response, comments Sequence diagrams         Used to model the interactions between o the actors and the objects in a system o the objects themselves Shows the sequence of interactions that take place during a particular use case or use case instance Objects and actors involved are listed along the top of the diagram Interactions between objects are indicated by annotated arrows Rectangle on the dotted lines indicates the lifeline of the object concerned Read the sequence of interactions from top to bottom Annotations on the arrows indicate the calls to the objects, their parameters and the return values Include every interaction in sequence diagrams for code generation or detailed documentation Structural models  Display the organization of a system in terms of the components that make up that system and their relationships  Static models: show the structure of the system design  Dynamic models: show the organization of the system when it is executing o May be very different from a static model of the system components (for a dynamic organization of a system as a set of interacting threads)  Creation of structural models: o Through discussions and system architecture designs Class diagrams     Used when developing an object-oriented system model to show the classes in a system and the associations between these classes Association: a link between classes that indicates that there is a relationship between these classes o Each class may have some knowledge of its associated class Expressed at different levels of detail o World: develop of model (essential objects) Types of relationship: 1 to 1, m to 1, m to n Generalization  An everyday technique that we use to manage complexity download.benjaminsommer.com | Overview 33
  • 35. October 21, 2011    [SOFTWARE ENGINEERING LECTURE NOTES] Easier to identify common characteristics Possible to make general statements that apply to all class members UML has a specific type of association to denote generalization o Shown as an arrowhead pointing up to the more general class o Attributes and operations associated with higher-level classes are also associated with the lower-level classes o Lower-level classes are subclasses inherit the attributes and operations from their superclasses o Lower-level classes add more specific attributes and operations Aggregation    UML provides a special type of association between classes called aggregation One object is composed of other objects Use a diamond shape next to the class that represents the whole Behavioral models  Show what happens or what is supposed to happen when a system responds to a stimulus from its environment o Data: data arrives that has to be processed by the system o Events: event happens that triggers system processing (may have associated data)  Dynamic behavior of the system (as it is executing) Data-driven modeling     Show the sequence of actions involved in processing input data and generating an associated output Useful during the analysis of requirements as they can be used to show end-to-end processing in a system Data-flow models: o Illustrate processing steps in a system o Tracking and documenting how the data associated with a particular process moves through the system o Helps analysts and designers understand what is going on o Simple and intuitive o Possible to explain them to potential system users who can then participate in validating the model o Focus on system functions o Do not recognize system objects (therefore, data flow models not included in UML) o Similar to activity diagrams in UML 2.0 (data-driven systems are common in business) o Highlight functions Alternate way: use UML sequence diagrams o Highlight objects in a system 34 Overview | download.benjaminsommer.com
  • 36. [SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011 Event-driven modeling     Shows how a system responds to external and internal events Based on the assumption that o A system has a finite number of states o Events may cause a transition from one state to another Particularly appropriate for real-time systems State diagrams (UML): o Show system states and events that cause transitions from one state to another o Do not show the flow of data within the system o May include additional information on the computations carried out in each state o Rounded rectangles: represent system states (may include a brief description of the actions taken in that state) o Labeled arrows: represent stimuli that force a transition o Optional: start and end states using filled circles (see activity diagrams) Model-driven engineering  An approach to software development where models rather than programs are the principal outputs of the development process  Programs (execute on hardware/software platform) are generated automatically from models  Raises level of abstraction in software engineering (no longer have to concerned with programming language details or specifics of execution platforms)  Roots in model-driven architecture (MDA); was proposed by the Object Management Group (OMG)  Concerned with all aspects of the software engineering process (including model-based requirements engineering, software processes for model-based development, model-based testing) Advantages:       Allows engineers to think about systems at a high level of abstraction No concern for the details of their implementation Reduces the likelihood of errors Speeds up the design and implementation process Allows for the creation of reusable, platform-independent application models Only a translator for a platform is required to adapt the system to some new platform technology Disadvantages:  Abstractions that are supported by the models are not always the right abstractions for implementations (using an off-the-shelf, configurable package) download.benjaminsommer.com | Overview 35
  • 37. October 21, 2011    [SOFTWARE ENGINEERING LECTURE NOTES] Arguments for platform independence are only valid for large long-lifetime systems where the platforms become obsolete during a system’s lifetime (for this class of systems, implementation is not the major problem) Requirements engineering, security and dependability, integration with legacy systems, and testing are more significant Not clear whether the costs and risks of model-driven approaches outweigh the possible benefits Model-driven architecture        Is a model-focused approach to software design and implementation Uses a sub-set of UML models to describe the system Models at different levels of abstraction are created Generate a working program without manual intervention from a high-level platform independent model (in principle) Complete automated translation tools are unlikely to be available in the near future Translation of PIMs to PSMs is more mature (several commercial tools exists) An uneasy relationship between agile methods and model-driven architecture Types of abstract system models    Computation independent model (CIM): o Models the important domain abstractions used in the system o Sometimes called domain models Platform independent model (PIM): o Models the operation of the system without reference to its implementation o Usually described using UML models that show the static system structure and how it responds to external and internal events Platform specific models (PSM): o Transformations of the platform-independent model with a separate PSM for each application platform o Layers of PSM may add some platform-specific detail o First-level PSM: middleware-specific, database independent Executable UML     Have to be able to construct graphical models whose semantics are well defined Need to add information to graphical models about the ways in which the operations defined in the model are implemented Supported by xUML or Executable UML UML is more concerned with software design and expressiveness, rather than programming language or semantic details of the language 36 Overview | download.benjaminsommer.com
  • 38. [SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011   Number of model types has been dramatically reduced to 3 key model types (to create executable sub-set of UML): o Domain models: identify the principal concerns in the system (UML class diagrams with objects, attributes and associations) o Class models: classes are defined (along with their attributes and operations) o State models: a state diagram is associated with each class and is used to describe the lifecycle of the class Dynamic behavior of the system may be o Specified declaratively using the object constraint language (OCL) o Expressed using UMLs action language (a very high-level programming language) Architectural design         Concerned with understanding how a system should be organized and designing the overall structure of that system The first stage in the software design process The critical link between design and requirements engineering (identifies the main structural components in a system and the relationships between them) Output: architectural model (describes how the system is organized as a set of communicating components) A significant overlap between the processes of requirements engineering and architectural design (in practice) (a system specification should not include any design information) Different levels of abstraction o Individual program architectures o Distributed system architectures (composed of several programs, components) Affects performance, robustness, disreputability, maintainability of a system Modeled using o Simple block diagrams (a box represents a component) o Arrows (signals or data flow between components) Advantages of explicitly designing and documenting software architectures:    Stakeholder communication (high-level presentation; focus discussions) System analysis (effect on design’s critical requirements: performance, reliability, maintainability) Large-scale reuse (system architecture often the same for systems with similar requirements) Ways an architectural model is used:   Facilitate discussions about the system design Document an designed architecture download.benjaminsommer.com | Overview 37
  • 39. October 21, 2011 [SOFTWARE ENGINEERING LECTURE NOTES] Architectural design decisions  A creative process: design a system organization that will satisfy the functional and nonfunctional requirements of a system  Activities within the process depend on the o Type of system being developed o Background and experience of the system architect o Specific requirements for the system  A series of decisions to be made rather than a sequence of activities  Architecture may be based on a particular pattern or style Architectural pattern   A description of a system organization (client-server organization, layered organization) Capture the essence of an architecture that has been used in different software systems Architectural style  Choose most appropriate structure (client-server, layered) Architectural pattern and style should depend on the non-functional system requirements:      Performance o Localize critical operations within a small number of components o Deployed on the same computer (rather than distributed) o Use a few relatively large components and fine-grain components o Reduce component communications o Consider run-time system organizations (allows the system to be replicated and executed on different processors) Security o Layered structure should be used o Most critical assets protected in the innermost layers o A high level of security validation applied to these layers Safety o Safety-related operations should be located in either a simple components or in a small number of components o Reduces the cost and problems of safety validation o Provides related protection systems (safely shut down system if failure) Availability o Include redundant components (replace and update components without stopping the system) Maintainability o Use fine-grain, self-contained components o Separate producers of data from consumers 38 Overview | download.benjaminsommer.com
  • 40. [SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011 o Shared data structures should be avoided Architectural views  Impossible to represent all relevant information about a system’s architecture in a single architectural model  Views might be: o How the system is decomposed into modules o How the run-time processes interact  Logical view o Key abstractions in the system (as objects, object classes) o Relate system requirements to entities in this logical view  Process view o How system is composed of interacting processes (at run-time) o Useful for making judgments about non-functional system characteristics (performance, availability)  Development view o How the software is decomposed for development o Shows the breakdown of the software into components (implemented by a single developer or developer team) o Useful for software managers and programmers  Physical view o How software components are distributed across the processors in the system o Shows system hardware o Useful for system engineers planning a system deployment  Conceptual view o Abstract view of the system o Bases for decomposing high-level requirements into more detailed specifications o Help engineers make decisions about components (that can be reused) o Represent a product line rather than a single system o Used to support architectural decision making o A way of communicating the essence of a system to different stakeholders o Possible to associate architectural patterns with different view of a system  Languages to describe views o UML (might remain most commonly used way of documenting system architectures) o ADLs (specialized architectural description languages) (components and connectors, rules, guidelines) Architectural patterns  Patterns as a way of presenting, sharing and reusing knowledge about software system is widely used  Patterns for organizational design, usability, interaction, configuration management download.benjaminsommer.com | Overview 39
  • 41. October 21, 2011    [SOFTWARE ENGINEERING LECTURE NOTES] A stylized, abstract description of good practice (tried and testing in different systems and environments) Describe a system organization that has been successful in previous systems Include information of when it is and is not appropriate to use that pattern, the pattern’s strengths and weaknesses Model-View-Controller (MVC):  Basis of interaction management in many web-based systems Layered architecture          Separation and independence allow changes to be localized System functionality: organized into separate layers Each layer relies on the facilities and services offered by the layer immediately beneath it Supports incremental development of systems Architecture: changeable and portable (layers can be easily replaced as long as the interface is constant) Easier to provide multi-platform implementations of an application system (machine dependencies in inner layers) Disadvantages: o Clean separation between layers often difficult o High-level layer may have to interact directly with lower-level layers (rather than through the layers immediately below) o Performance penalty (multiple levels of interpretation of a service request) Sample: a generic layered architecture o User interface o User interface management; authentication and authorization o Core business logic; application functionality; system utilities o System support (OS, database etc.) Sample: LIBSYS o 5 layers o Allows controlled electronic access to copyright material from a group of university libraries Repository architecture     All data in a system is managed in a central repository (accessible to all system components) Components do not interact directly (through repository instead) When to use o System with large volumes of information generated (stored for a long time) o Data-driven systems (inclusion of data in the repository triggers an action or tool) Advantages 40 Overview | download.benjaminsommer.com
  • 42. [SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011   o Components can be independent o Changes made by one component can be propagated to all components o All data can be managed consistently (in one place) Disadvantages o Single point of failure: problems in the repository affect the whole system o Inefficiencies in organizing all communication through the repository o Difficult to distribute the repository across several computers Sample: architecture for an IDE o UML editors o Code generators o Java editor o Python editor o Report generator o Design analyzer o Design translator Client-server architecture       System’s functionality is organized into services (each services delivered from a separate server) Clients: users of these services; they access servers to make use of them When to use o Data in a shared database has to be accessed from a range of locations o Load on a system is variable (servers can be replicated) Advantages o Servers can be distributed across a network o General functionality can be available to all clients (does not need to implemented by all services) Disadvantages o Each service is a single point of failure o Susceptible to denial of service attacks or server failure o Performance: unpredictable (depends on the network and system) o Management problems possible (servers owned by a different organization) Sample: video/DVD library o Catalogue server o Video server o Picture server o Web server Pipe and filter architecture    Run-time organization of a system Functional transformations process their inputs and produce outputs Data flows from one to another and is transformed as it moves through the sequence download.benjaminsommer.com | Overview 41
  • 43. October 21, 2011     [SOFTWARE ENGINEERING LECTURE NOTES] Each processing component (filter) is discrete (carries out one type of data transformation) Wen to use o Data processing applications (batch- and transaction-based) o Applications where inputs are processed in separate stages to generate related outputs Advantages o Easy to understand o Supports transformation reuse o Workflow style matches structure of many business processes o Evolution by adding transformation is straightforward o Implemented as sequential or concurrent system Disadvantages o Format of data transfer has to be agreed upon between communicating transformations o Each transformation must parse input and unparsed output to the agreed form o Increases system overhead o Possibly impossible to reuse functional transformations that use incompatible data structures Application architectures  Intended to meet a business or organizational need  Business characteristics: Hire people, issue invoices, keep accounts etc.  Business operating: use common sector-specific applications  Encapsulate the principal characteristics of a class of systems  May be re-implemented when developing new systems  Possible application reuse without reimplementation for many business systems (ERP, SAP, Oracle, COTS)  Identify stable structural features of the system architectures Ways of using models of application architectures:      As a starting point for the architectural design process o If unfamiliar with type of application o Base initial design on a generic application architecture (specialization required) As a design checklist o Compare developed architectural design with generic application architecture o Check consistency As a way of organizing the work of the development team o Possible to develop application architectures in parallel o Assign work to group members to implement components within the architecture As a means of assessing components for reuse o Compare available components with generic structures o Comparable components in the application architecture? As a vocabulary for talking about types of applications 42 Overview | download.benjaminsommer.com
  • 44. [SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011 o Use concepts identified in the generic architecture to talk about the applications Transaction processing systems         Abbreviation: TP systems Designed to process user requests for information from a database, or requests to updated a database Database transaction: a sequence of operations that is treated as a single unit (an atomic unit) (and all of the operations have to be completed before the database changes are made permanent) Prevent inconsistencies in the database Transaction: a coherent sequence of operations that satisfies a goal TP systems are usually interactive systems (users make asynchronous requests for services) Possible organization: pipe and filter architecture Sample: ATM system Information systems      Allows controlled access to a large base of information Samples: library catalog, flight timetable, records of patients in a hospital Increasingly web-based systems Possible implementation: layered architecture o Top layer: user interface (UI) o Second layer: UI functionality (delivered through web browser) (log in, checking components, data validation components, menu management components) o Third layer: functionality of the system (components of system security etc.) o Lowest layer: database management system Often implemented as multi-tier client-server architectures o Web server: responsible for all user communications o Application server: application-specific logic, information storage, information retrieval request o Database server: moves information to/from database, handles transaction management Language processing systems    Translate natural/artificial languages into another representation of that language May execute resulting code for programming languages (e.g. script languages) Samples: o Compilers translate a programming language into machine code o Translate an XML data description into commands to query a database to an alternative XML representation o Natural language processing systems may translate one natural language to another download.benjaminsommer.com | Overview 43
  • 45. October 21, 2011  [SOFTWARE ENGINEERING LECTURE NOTES] Possible architecture (programming language) o Source language instructions: define the program to be executed o Translator: converts source language instructions into instructions for an abstract machine o Interpreter: fetches the instructions for execution; executes them using data from the environment (if required) (usually hardware unit processing machine instructions or software component) o Output of the process: result of interpreting the instructions on the input data Pipe and filter compiler architecture (components):        Lexical analyzer o Takes input language tokens o Converts them to an internal form Symbol table o Holds information about the names of entities (variables, class names, object names etc.) Syntax analyzer o Checks syntax of the language being translated o Uses a defined grammar of the language o Builds a syntax tree Syntax tree o An internal structure representing the program being compiled Semantic analyzer o Uses information from the syntax tree and symbol table o Checks semantic correctness of the input language text Code generator o Walks the syntax tree o Generates abstract machine code Additional components: o Analyze and transform the syntax tree (improve efficiency and remove redundancy from generated machine code) o Dictionaries Design and implementation     Develop and executable software system A stage in software engineering process Software design and implementation activities are invariably interleaved Software design o Creative activity o Identify software components and their relationships o Take implementation issues into account when developing a design 44 Overview | download.benjaminsommer.com
  • 46. [SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011   Software implementation o Process of realizing the design as a program Important implementation decision o Buy or build the application software? (COTS vs. open-source) Object-oriented design using the UML  Object-oriented system o Made up of interacting objects that maintain their own local state (provide operations on that state)  Design object classes and the relationships between them  What to do to develop a system design o Understand and define the context and external interactions with the system o Design the system architecture o Identify the principal objects in the system o Develop design models o Specify interfaces  Design is not a clear-cut, sequential process (ideas, propose solutions, refine solutions, ideas etc.) System context and interactions      Understand relationships between software and external environment Decide how to provide required system functionality, how to structure the system to communicate with its environment Set the system boundaries helps to decide what features are implemented System context: a structural model that demonstrates other systems in the environment o May be represented using associations (relationships) o Nature of relationships are specified o Using a simple block diagram Interaction model: a dynamic model that shows how the system interacts with its environment o Model with an abstract approach (not too much detail) o Use a case model o Cases should be described in structured natural language Architectural design    Base knowledge: system context and interactions plus general knowledge of principles of architectural design (with more detailed domain knowledge) Identify major components and their interactions Organize components using an architectural pattern (layered, client-server etc.; optional) Object class identification  Prerequisites: download.benjaminsommer.com | Overview 45
  • 47. October 21, 2011       [SOFTWARE ENGINEERING LECTURE NOTES] o Ideas about the essential objects in the system to be designed High-level system objects are needed to encapsulate the system interactions defined in the use cases (usually) Methods how to identify object classes o Grammatical analysis of a natural language description of the system to be constructed (nouns: objects, attributes; verbs: operations, services) o Tangible entities in the application domain (aircraft, roles, events, interactions, locations etc.) o Scenario-based analysis where various scenarios of system use are identified and analyzed in turn (team responsible for the analysis must identify the required objects, attributes and operations) Use several knowledge sources to discover object classes Information from application domain knowledge or scenario analysis to refine/extend initial objects (can be collected from requirements documents, discussions with users, from analyses of existing systems) Focus on objects themselves (without thinking about how these might be implemented) Look for common features (then design inheritance hierarchy for the system) Design models          Show objects or object classes in the system Show associations and relationships between objects Synonym: system models A bridge between the system requirements and the implementation of a system They have to be abstract (to focus on relationships) They have to include enough detail for programmers (to make implementation decisions) Solution: develop models at different levels of detail Important step: decide on the needed design models and the level of detail required in these models (depends on type of system) With UML, develop 2 kinds of models o Structural models: static structure of the system using objects and relationships o Dynamic models: dynamic structure of the system; show interactions between system objects Useful models for adding detail to use case and architectural models:   Subsystem models o Show logical groupings of objects into coherent subsystems o Represented using a form of class diagram (each subsystem shown as a package with enclosed objects) o Subsystem models are static models (structural) Sequence models 46 Overview | download.benjaminsommer.com
  • 48. [SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011  o Show sequence of object interactions o Represented using a UML sequence / collaboration diagram o Sequence models are dynamic models State machine models o Show how individual objects change their state in response to events o Represented using state diagrams (in the UML) o State machine models are dynamic models Interface specification            Important part of an design process To design objects and subsystem in parallel Concerned with specifying the detail of the interface to an object / group of objects Define signatures and semantics of the services (provided by the object / group of objects) Can be specified in the UML (same notation as a class diagram) UML stereotype <<interface>> should be included No attribute section Semantics of the interface o Defined using the object constraint language (OCL) Do not include details of the data representing in an interface design (no attributes in the specification) Design that is more maintainable Not a simple 1:1 relationship between objects and interfaces o One object may have several interfaces o Supported directly in Java o Group of objects may all be accessed through a single interface Design patterns  Pattern is o A description of the problem and the essence of its solution (solution may be reused in different settings) o Not a detailed specification o A description of “accumulated wisdom and experience” o A well-tried solution to a common problem  Usually associated with object-oriented design  Published patterns often rely on object characteristics (e.g. inheritance, polymorphism)  A way of reusing the knowledge and experience of other designers  Essential elements of design patterns o A name (unique, meaningful) o A description of the problem area (when to apply the pattern) o A solution description of the parts of the design solution, their relationships and their responsibilities (not a concrete design description; a template for a design solution) download.benjaminsommer.com | Overview 47
  • 49. October 21, 2011 [SOFTWARE ENGINEERING LECTURE NOTES] o A statement of the consequences (results, trade-offs); helps to decide whether or not to use the design pattern Any design problem may have an associated pattern that can be applied Patterns support high-level concept reuse A great idea, but requires experience of software design to use them effectively o Recognize situations where patterns can be applied Sample: observer pattern     Implementation issues  Create an executable version of the software  May involve o developing programs in high- or low-level programming languages o Tailoring and adapting generic, off-the-shelf systems to meet the specific requirements of an organization Reuse    Due to costs and schedule pressure Develop new systems more quickly, with fewer development risks and lower costs Software should be more reliable Possible at a number of different levels:     Abstraction level o Don’t reuse software directly o Use knowledge of successful abstractions in the design of your software o Ways of representing abstract knowledge for reuse: design patterns and architectural patterns Object level o Directly reuse objects from a library (rather than writing code) o Find appropriate libraries and discover if objects and methods offer the functionality needed o Sample: process mail messages (in Java) Component level o Components: collections of objects and object classes o Adapt and extend components by adding some source code o Sample: user interface System level o Reuse entire application systems o Involves some kind of configuration of these systems o Done by adding/modifying code or by using system’s own configuration interface o Used by most commercial systems (generic COTS systems are adapted and reused) 48 Overview | download.benjaminsommer.com
  • 50. [SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011 Costs associated with reuse:     Costs of time spent in looking for software to reuse and assessing whether or not it meets the needs Costs of buying the reusable software (can be very high for large COTS systems) Costs of adapting and configuring the reusable software components or systems to reflect the requirements Costs of integrating reusable software elements with each other and with the new code that has been developed Configuration management      Change management is absolutely essential General process of managing a changing software system Aim: support the system integration process so that all developers can o Access the project code and documents in a controlled way o Find out what changes have been made o Compile and link components to create a system Fundamental configuration activities o Version management (keep track of different versions; stop overwriting code being submitted by someone else) o System integration (define what versions of components are used to create each version of a system; description is used to build a system automatically by compiling and linking the requirements components) o Problem tracking (allow users to report bugs and other problems) See: software configuration management tools (integrated or separate) Host-target development      Most software development is based on host-target model o Software is developed on one machine (host) o Software runs on separate machines (targets) Alternate perspective: development-execution platform Often use of simulators in case of development for o Embedded systems o Different platforms or expensive hard drive Simulators o Speed up development process for embedded systems o Are expensive to develop o Usually only available for most popular hardware architectures In case middleware is being used, the software is usually transferred to the execution platform for testing (due to license restrictions, etc.) download.benjaminsommer.com | Overview 49
  • 51. October 21, 2011    [SOFTWARE ENGINEERING LECTURE NOTES] Integrated tools of a software development platform (to support software engineering processes) o An integrated compiler and syntax-directed editing systems o Language debugging system o Graphical editing tools (edit UML models) o Testing tools (JUnit) to automatically run a set of tests on a new version of a program o Project support tools (help to organize code for different development projects) o Advanced tools like static analyzers IDE: an integrated development environment, made up of several software development tools and that support different aspects of software development Document decisions on hardware and software deployment using UML deployment diagrams Issues to consider when to decide how the developed software will be deployed for distributed systems:    Hardware and software requirements of a component o A component must be deployed on a platform that provides the required hardware/software support (in case the component has been designed for a specific hardware architecture or relies somehow on it) Availability requirements of the system o High-availability systems may require components to be deployed on more than one platform o An alternative implementation of the component is available in case of platform failure Component communications o Deploy components on the same platform (or those physically close) in case of high level of communications traffic between components o Reduces communications latency, delay between the time a message is sent by one component and received by another Open source development  An approach to software development in which the source code of a software system is published and volunteers are invited to participate in the development process  Roots: Free Software Foundation  Successful open source system sill rely on a core group of developers who control changes to the software  Samples: Linux, Java, Apache, MySQL (IBM, Sun)  Fairly cheap/free to acquire open source software  Emerging/common business models: selling support for a product rather than selling a software product Open source licensing  Common licenses: GPL, LGPL, BSD 50 Overview | download.benjaminsommer.com
  • 52. [SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011        Establish a system for maintaining information about pen source components that are downloaded and used Be aware of the different types of licenses and understand how a component is licensed before it is used Be aware of evolution pathways for components Educate people about open source Have auditing systems in place Participate in the open source community Trend: o Increasingly difficult to build a business by selling specialized software systems o Sell support and consultancy to software users for their open source software Software testing          Intended o To show that a program does what it is intended to do o To discover program defects before it is put into use Goals of the testing process o Validation testing: demonstrate that the software meets its requirements (to the developer and customer) o Defect testing: discover incorrect, undesirable or specification non-conform behavior of the software Usually, not all software defects or incorrect required behaviors (according to specification) are found Testing can only show the presence of errors, not their absence Part of software verification and validation (V&V) processes o Concerned with checking that software being developed meets its specification and delivers the functionality expected by the people paying for the software o May involve software inspections and reviews Software verification o Check that the software meets its stated functional and non-functional requirements o Establish confidence that the software is fit for purpose Software validation o A more general process o Ensure that the software meets the customer’s expectations o Goes beyond simple conformance checks with the specification o Essential: requirements specifications do not always reflect the real wishes or needs of system customers and users Software purpose o The more critical the software, the more important that it is reliable User expectations download.benjaminsommer.com | Overview 51
  • 53. October 21, 2011 [SOFTWARE ENGINEERING LECTURE NOTES] o        Usually lower for newly installed software (users may tolerate failures because the benefits of use outweigh the costs of failure recovery) o More thorough testing of later versions may be required as software matures Marketing environment o Competing products o Price that customers are willing to pay for a system o Required schedule for delivering that system o Competitive environment: release program before it has been fully tested and debugged (be the first into the market) Inspections and reviews (static V&V) o Analyze and check the system requirements, design models, the program source code and even proposed system tests Inspections o Focus on the source code of a system o Any readable representation can be inspected (requirements, design model) o Use knowledge of the system, its application domain and the programming / modeling language to discover errors o Cannot replace software testing (unexpected interactions, timing problems, system performance) Advantages of software inspection over testing o A single inspection session can discover many errors in a system (static process) o During testing, errors can mask other errors (side effects of the original error or new error) o Incomplete versions of a system can be inspected without additional costs o Can also consider broader quality attributes of a program (compliance with standards, portability, maintainability) o Can look for inefficiencies, inappropriate algorithms, poor programming style (could make the system difficult to maintain and update) Test cases o Specifications of the inputs to the test and the expected output from the system, plus a statement of what is being tested Stages of testing o Development testing (tested during development) o Release testing (separate testing team tests a complete versions before it is released) o User testing (potential users test the system in their own environment) Usually involves a mixture of manual and automated testing Development testing  Includes all testing activities that are carried out by the team developing the system  Testing at 3 levels: o Unit testing: individual program units or object classes are tested 52 Overview | download.benjaminsommer.com
  • 54. [SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011 o    Component testing: several individual units are integrated to create composite components (should focus on testing component interfaces) o System testing: some or all of the components in a system are integrated and the system is tested as a whole (should focus on testing component interactions) Primarily a defect testing process Discover bugs in the software Usually interleaved with debugging Unit testing       Testing program components (methods, object classes) Test all operations associated with the object Set and check the value of all attributes associated with the object Put the object into all possible states (simulate all events that cause a state change) Automated test has three parts o Setup: initialize the system with the test case (inputs and expected outputs) o Call: call the object/method to be tested o Assertion: compare the results of the call with the expected result Use mock objects if objects to be tested depend on other, yet untested objects o Objects with the same interface as the external objects being used that simulate its functionality o Sample: a mock object simulating a database may have only a few data items that are organized in an array o Can be used to simulate abnormal operations or rare events Choosing unit test cases      Important to choose effective unit test cases (testing is expensive and time consuming) o Test cases should show that the component does what it is supposed to do o Defects in the component should be revealed by test cases Two kinds of test case: o Normal operation of the program (show that the component works) o Based on testing experience of where common problems arise (use abnormal inputs) Strategies for choosing test cases: o Partition testing (identify groups of inputs with common characteristics) o Guideline-based testing (use testing guidelines to choose test cases; guidelines reflect previous experience of errors component programmers often make) Equivalence partitions / domains: o Classes with common characteristics o Programs normally behave in a comparable way for all members of a class o Sample: positive numbers, negative numbers, menu selections Partition testing download.benjaminsommer.com | Overview 53
  • 55. October 21, 2011 [SOFTWARE ENGINEERING LECTURE NOTES] o o o o o   A systematic approach to test case design Identify all input and output partitions for a system / component Test cases are designed so that the inputs / outputs lie within these partitions Can be used for systems and components Identify partitions by using the program specification or user documentation and from experience where you predict the classes of input value that are likely to detect errors o Black-box testing: use the specification of a system to identify equivalence partitions o White-box testing: look at the code of the program to find other possible tests Testing guidelines o Test software with sequences that have only a single value o Use different sequences of different sizes in different tests o Derive tests so that the first, middle and last elements of the sequence are accessed (reveals problems at partition boundaries) General guidelines o Choose inputs that force the system to generate all error messages o Design inputs that cause input buffers to overflow o Repeat the same input/series of inputs numerous times o Force invalid outputs to be generated o Force computation results to be too large / too small Component testing     Components are often made up of several interacting objects Component interface testing: o Parameter interfaces (data / function references are passed from one component to another) o Shared memory interfaces (block of memory is shared between components; often used in embedded systems) o Procedural interfaces (one component encapsulates a set of procedures that can be called by other components) o Message passing interfaces (one component requests a service from another component by passing a message to it; a return message includes the results of executing the service; see client-server systems) Interface errors are one of the most common forms of error in complex systems: o Interface misuse: a calling component makes an error in the use of the called component’s interface (often found in parameter interfaces with wrong parameters) o Interface misunderstanding: a calling component misunderstands the specification of the interface of the called component and makes assumptions about its behavior (e.g.: binary search on an unordered array) o Timing errors: often occur in real-time systems using a shared memory / messagepassing interface (consumer may access out-of-date information) General guidelines for interface testing: 54 Overview | download.benjaminsommer.com
  • 56. [SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011 o     Examine the code to be tested and explicitly list each call to an external component extreme values are most likely to reveal interface inconsistencies) o Always test the interface with null pointer parameters (where pointers are passed across an interface) o Design tests that deliberately cause the component to fail (where a component is called through a procedural interface) o Use stress testing in message passing systems o Design tests that vary the order in which components that interact through shared memory are activated (may reveal implicit assumptions made by the programmer about the order in which the shared data is produced and consumed) Inspections and reviews can sometimes be more cost effective than testing for discovering interface errors Inspections can concentrate on component interfaces Static analyzers can detect a wide range of interface errors A strongly typed language (Java, C/C++) allows many interface errors to be trapped by the compiler System testing           Involves integrating components to create a version of the system Testing the integrated system Checks that o Components are compatible o Interact correctly o Transfer the right data at the right time across their interfaces Differences with component testing o Reusable components may be integrated with newly developed components (that have been separately developed and off-the-shelf systems; during system testing) o Components developed by different team members / groups may be integrated at this stage (a collective rather than an individual process) Emergent behavior when components are integrated to create a system o Some elements of system functionality only become obvious when put together o May be planned emergent behavior o Sometimes, its unplanned/unwanted emergent behavior (develop checks that the system is only doing what it is supposed to do) Should focus on testing the interactions between the components and objects that make up the system Optional: test reusable components / systems (check that they work as expected when they are integrated with new components) Should discover component bugs that are only revealed when a component is used by another Helps finding misunderstandings about other components (made by component developers) Use case-based testing is an effective approach to system testing download.benjaminsommer.com | Overview 55
  • 57. October 21, 2011 [SOFTWARE ENGINEERING LECTURE NOTES] o o o    Each use case is implemented by several components / objects Use case forces these interactions to occur See the objects/components being involved in the interaction in a sequence diagram (to model the use case implementation) Exhaustive testing is impossible Companies may have policies for choosing subsets of possible test cases Automated system testing is usually more difficult than automated unit/component testing Test-driven development  Abbreviation: TDD  An approach to program development in which testing and code development is interleaved  Incremental code development alongside with test development for each increment  Introduced as part of agile methods (Extreme Programming)  Can also be used in plan-driven development processes  Steps in the TDD process: o Identify new functionality: should normally be small and implementable in a few lines of code o Write test: implement this as an automated test o Run test: the new test will fail (have not implemented the new functionality yet) o Implement the functionality and re-run the test: may involve refactoring existing code to improve it and add new code to what’s already there o Move on to implementing the next chunk of functionality (once all tests run successfully)  An automated testing environment is essential for TDD  Advantages: o Better problem understanding o Code coverage: all the code in the system has actually been executed by at least one associated test o Regression testing: run regression tests to check that changes to the program hove not introduced new bugs o Simplified debugging: easy to find bug/problem if a test fails (the newly written code needs to be checked and modified) o System documentation: tests act as a form of documentation that describe what the code should be doing o Reduces cost of regression testing (very expensive and often impractical when a system is manually tested)  May be ineffective with multi-threaded systems (interleaved threads at different times in different test runs may produce different results)  A successful approach for small and medium-sized projects  No evidence that TDD leads to poorer quality code 56 Overview | download.benjaminsommer.com
  • 58. [SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011 Release testing  Process of testing a particular release of a system that is intended for use outside of the development team  Distinctions between release testing and system testing o A separate team should be responsible for release testing o System testing is defect testing; release testing is validation testing  Convince the supplier of the system that it is good enough for use  Usually a black-box testing process (see functional testing; tester is only concerned with functionality and not with implementation) Requirements-based testing        Requirements should be testable (a general principle of good requirements engineering practice) A systematic approach to test case design Consider each requirement and derive a set of tests for it A validation testing (rather than a defect testing) Does not mean just writing a single test Normally have to write several tests to ensure that you have coverage of the requirements Also maintain traceability records of your requirements-based testing (link the tests to the specific requirements that are being tested) Scenario testing       An approach to release testing where you devise typical scenarios of use and use these to develop test cases Scenario: o A story that describes one way in which the system might be used o Should be realistic o Real system users should be able to relate to them o Possible reuse scenarios as part of the requirements engineering process Should be a narrative story that is credible and fairly complex Should motivate stakeholders (they should believe that it is important that the system passes the test) Should be easy to evaluate Normally testing several requirements within the same scenario (automatically checks combinations of requirements) Performance testing    Once a system has been completely integrated Test for emergent properties (performance, reliability) To ensure that the system can process its intended load download.benjaminsommer.com | Overview 57
  • 59. October 21, 2011     [SOFTWARE ENGINEERING LECTURE NOTES] Usually involves running a series of tests where you increase the load until the system performance becomes unacceptable Concerned with o Demonstrating that the system meets its requirements o Discovering problems and defects in the system May have to construct an operational profile o A set of tests that reflect the actual mix of work that will be handled by the system o Not the best approach for defect testing Stress testing: design tests around the limits of the system (stressing the system by making demands that are outside the design limits of the software) o Tests the failure behavior of the system (see fail-soft) o Stresses the system and may cause defects to come to light that would not normally be discovered o Particularly relevant to distributed systems based on a network of processors (often exhibit severe degradation when loaded heavily) User testing  A stage in the testing process in which users/customers provide input and advice on system testing  May involve formally testing a system that has been commissioned from an external supplier  Could be an informal process where users experiment with a new software product to see if they like it and that it does what they need  Essential (even when comprehensive system and release testing have been carried out) o Influences from the user’s working environment have a major effect on the reliability, performance, usability and robustness of a system  Practically impossible to replicate the system’s working environment of the customer/user  Types of user testing o Alpha testing: users of software work with the development team to test the software at the developer’s site o Beta testing: release of the software is made available to users to allow them to experiment and to raise problems that they discover with the system developers o Acceptance testing: customers test a system to decide whether or not it is ready to be accepted from the system developers and deployed in the customers environment (after release testing) Stages in acceptance testing process  Define acceptance criteria o Should take place early in the process before the contract for the system is signed o May be difficult to define criteria early in the process o Detailed requirements may not be available o May be significant requirements change during development process 58 Overview | download.benjaminsommer.com
  • 60. [SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011      Plan acceptance testing o Involves deciding on the resources, time and budget for acceptance testing and establishing a testing schedule o Should discuss the required coverage of the requirements and the order in which system features are tested o Should define risks to the testing process (system crashes, inadequate performance) o Discuss how these risks can be mitigated Derive acceptance tests o Tests have to be designed to check whether or not a system is acceptable o Should aim to test both the functional and non-functional characteristics (performance) o Should provide complete coverage of the system requirements o Difficult to establish completely objective acceptance criteria o Often scope for argument about whether or not a test shows that a criterion has definitely been met Run acceptance tests o Agreed acceptance tests are executed on the system o Should take place in the actual environment (where the system will be used) o User testing environment may be required to run these tests o Difficult to automate this process as part of the acceptance tests may involve testing the interactions between end-users and the system o Some training of end-users may be required Negotiate test results o Very unlikely that all of the defined acceptance tests will pass o Some problems will be discovered (more commonly) o Developer and customer have to negotiate to decide if the system is good enough to be put into use o Must agree on the developer’s response to identified problems Reject/accept system o Involves a meeting between the developers and the customer to decide on whether or not the system should be accepted o Further development may be required to fix identified problems (once completed, acceptance testing phase is repeated) Software evolution   A system has to change if it is to remain useful (after deployment) o New requirements for existing software by business change and changes to user expectations o Modifications to correct errors being found in operation o To adapt it for changes to its hardware and software platform o To improve its performance or other non-functional characteristics Software evolution is important download.benjaminsommer.com | Overview 59
  • 61. October 21, 2011 [SOFTWARE ENGINEERING LECTURE NOTES] o     Organizations have invested large amounts of money and time in their software (are now completely dependent on these systems) o Their systems are critical business assets o They have to invest in system change to maintain the value of their assets o Most large companies spend more time on maintenance than on development of new systems o About 2/3 of software costs are evolution costs Evolution of a system can rarely be considered in isolation o Changes to the environment lead to system change (may trigger further environment change) o ‘systems-rich’ environment further increase evolution costs Useful software systems often have a very long lifetime o Large military / infrastructure systems (air traffic control systems): 30 years or more o Business systems: about 10 years old Software engineering as a spiral process with requirements, design, implementation, testing going on throughout the lifetime of the system o Implies: a single organization is responsible for initial software development and evolution of the software (most packaged software products) o Custom software: a software company develops software for a customer and the customer’s own development staff then take over the system (likely: discontinuities in the spiral process) Alternative view of software evolution (Rajlich and Bennet, 2000): o Initial development o Evolution: software is used successfully and there is a constant stream of proposed requirements changes (over time: structure tends to degrade, changes become more and more expensive) o Servicing: implementing new requirements become less and less cost effective (software still useful; but only small tactical changes; company considers software replacement) o Phase-out: software may still be used but no further changes are being implemented (users have to work around any problems that they discover) Evolution processes  Vary depending on o The type of software being maintained o The development processes used in an organization o The skills of the people involved  May be an informal process: change requests mostly come from conversations between the system users and developers  Formalized process: structured documentation produced at each stage in the process  Driver for system evolution: system change proposals o From existing requirements (not yet implemented in the released version) 60 Overview | download.benjaminsommer.com
  • 62. [SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011 o o o o From requests for new requirements From bug reports from system stakeholders From new ideas for software improvement (from system development team) Should be linked to the components of the system (cost and impact of the change to be assessed) (see change management) Software evolution process:      Change requests Change analysis (impact analysis) o Assess cost and impact of changes o Prototyping of proposed changes may be carried out Release planning o Possible changes: fault repair, adaptation, new functionality o Decision: which changes to implement in the next version of the system Change implementation and validation o An iteration of the development process o Revisions to the system are design, implemented and tested o Should modify the system specification, design and implementation to reflect changes to the system System release Reasons for urgent changes:    Serious system fault: restore normal operation to continue Changes to systems operating environment: unexpected affects that disrupt normal operation Unanticipated changes to the business running the system Potential problematic situations in case of a handover to a separate team for evolution:   Development team used an agile approach, but the evolution team prefers a plan-based approach o Missing detailed documentation to support evolution o May be no definitive statement of the system requirements Development team used a plan-based approach, but the evolution team uses an agile approach o Missing automated tests from agile methods o Code may not have been refactored and simplified as is expected in agile development o Some reengineering may be required to improve the code before it can be used in an agile development process Program evolution dynamics  The study of system change Lehman’s laws: download.benjaminsommer.com | Overview 61
  • 63. October 21, 2011         [SOFTWARE ENGINEERING LECTURE NOTES] Continuing change o A program in real-world environment must necessarily change o Or it becomes progressively less useful in that environment Increasing complexity o Structure of an evolving program tends to become more complex o Extra resources are required to preserve and simplify the structure Large program evolution o Program evolution is a self-regulating process o System attributes is approximately invariant for each system release (e.g. size, time between releases, number of reported errors) Organizational stability o Rate of development is approximately constant and independent of the resources devoted to system development Conservation of familiarity o The incremental change in each release is approx. constant Continuing growth o Offered functionality has to continually increate to maintain user satisfaction Declining quality o Quality of systems will decline unless they are modified to reflect changes in their operational environment Feedback system o Evolution processes incorporate multi-agent, multi-loop feedback systems o Treat them as feedback system to achieve significant product improvement Software maintenance  The general process of changing a system after it has been delivered  Usually applied to custom software (separate development groups are involved before and after delivery)  Different types of software maintenance o Fault repairs / corrective maintenance o Environmental adaptation / adaptive maintenance o Functionality addition / perfective maintenance  Not a clear-cut distinction between these types of maintenance  Takes up a higher proportion of IT budgets than new development (approx. 2/3)  More of the maintenance budget is spent on implementing new requirements than on fixing bugs  Maintenance costs are relatively high for embedded real-time systems (about 4 times higher)  Cost effective to invest effort in designing and implementing a system to reduce the costs of future changes  Usually more expensive to add functionality after a system is in operation than it is to implement the same functionality during development. Reasons: 62 Overview | download.benjaminsommer.com
  • 64. [SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011 o o o o Team stability: people work for new projects Poor development practice: maintenance contract usually separate from system development contract Staff skills: maintenance staff often relatively inexperience and unfamiliar with the application domain Program age and structure: program’s structure tends to degrade with changes Maintenance prediction        Maintenance costs: estimate overall maintenance costs for a system in a given time period System changes: predict what system changes might be proposed Maintainability: what parts of the system are likely to be the most difficult to maintain Predict number of change request (gives understanding of the relationship between the system and its external environment) Issues to be assess to evaluate the relationships between a system and its environment o Number and complexity of system interfaces o Number of inherently volatile system requirements o Business processes in which the system is used Sample process metrics for assessing maintainability: o Number of requests for corrective maintenance (decline in maintainability if more errors are being introduced into the program than are being repaired during maintenance process) o Average time required for impact analysis (decline in maintainability if number of program components being affected by change requests increases and this time increases) o Average time taken to implement a change request (decline in maintainability if amount of time needed to modify the system and its documentation increases) o Number of outstanding change request (decline in maintainability if the number of change requests increases) Model of cost estimation: COCOMO 2 An estimate for software maintenance effort can be based on the effort o To understand existing code o To develop the new code Software reengineering   Reengineer legacy software systems o To improve their structure and understandability o To make maintenance easier May involve o Re-documenting the system o Refactoring the system architecture o Translating programs to a modern programming language download.benjaminsommer.com | Overview 63
  • 65. October 21, 2011       [SOFTWARE ENGINEERING LECTURE NOTES] o Modifying and updating the structure and values of the system’s data Functionality of the software is not changes Avoid making major changes to the system architecture Benefits from reengineering rather than replacement o Reduced risk: high risk in redeveloping business-critical software (errors in system specification or development problems) o Reduced cost Activities in the reengineering process o Source code translation (usually automated) o Reverse engineering (usually automated; helps to documents its organization and functionality) o Program structure improvement (partially automated; analyze and improve control structure; easier to read and understand) o Program modularization (manual process; group together related parts; remove redundancy; may involve architectural refactoring) o Data reengineering (tools available; redefine database schemas; convert existing databases; clean up data; finding and correcting mistakes; removing duplicate records) May have to develop adapter services o Hide original interface of the software system and present new, better-structure interfaces o A legacy system wrapping process o An important technique for developing large-scale reusable services Problem of software reengineering: o Practical limits to how much you can improve a system be reengineering o Impossible to convert a system from functional to object-oriented approach o Major architectural changes / radical reorganizing of the system data management connect be carried out automatically o Less maintainable as a new system developed using modern software engineering methods Preventative maintenance by refactoring      Refactoring: process of making improvements to a program to show down degradation through change o Improve structure o Reduce complexity o Make it easier to understand Should not add functionality Should concentrate on program improvement Reduces problems of future change (therefore preventative maintenance) Reengineering: o After a system has been maintained for some time 64 Overview | download.benjaminsommer.com
  • 66. [SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011     o When maintenance costs are increasing o Use of automated tools Refactoring o A continuous process of improvement throughout the development and evolution process o Intended to avoid structure and code degradation (otherwise increases costs and difficulties) o An inherent part of agile methods (extreme programming) (based around change) o Can be used with any approach to development Typical situations where refactoring can be applied (‘bad smells’) o Duplicate code o Long methods o Switch / case statements o Data clumping (when same group of data items reoccur in several places in a program, e.g. fields in classes, parameters in methods; can be replaced with an object encapsulating all of the data) o Speculative generality (when developers include generality in a program in case it is required in future; can simply be removed) Some methods of refactoring o Extract method (duplicate code) o Consolidate conditional expression (replace a sequence of test with a single test) o Pull up method (replace similar methods in subclasses with one method in a superclass) Effective way to reduce long-term maintenance costs of a program Legacy system management  For legacy systems: rather difficult to plan how to integrate evolution (system adaptation)  Strategic options for evolving these systems o Scrap the system completely (when system is not making an effective contribution to business processes; changes business processes) o Leave the system unchanged and continue with regular maintenance (when system is still required but is fairly stable and system users make relatively few change requests) o Reengineer the system to improve tis maintainability (when the system quality has been degraded by changed and where new changes are still being proposed) o Replace all or part of the system with a new system (when factors mean that old system cannot continue in operation; when new hardware)  Business perspective o Decide: business really needs the system  Technical perspective o Assess: quality of the application software o Assess: the system’s support and hardware  4 clusters of systems o Low quality, low business value (scrap the system) download.benjaminsommer.com | Overview 65
  • 67. October 21, 2011 [SOFTWARE ENGINEERING LECTURE NOTES] o     Low quality, high business value (reengineer to improve quality; use off-the-shelf systems) o High quality, low business value (normal maintenance; scrap system if expensive changes become necessary) o High quality, high business value (normal maintenance) Issues for discussions on assessing the business value of a system o Use of the system o Business processes that are supported o System dependability o System outputs Factors used in environment assessment o Supplier stability (exists the supplier? Supplier likely to exists in future? If not in business, who can maintain the system?) o Failure rate (high rate of reported failures of the hardware? Support software crashes and forces system restarts?) o Age (how old is hardware and software? Significant economic and business benefits when moving to more modern systems?) o Performance (adequate performance? Significant effect on system users?) o Support requirements (local support required by hardware and software? High costs associated with support? Considering system replacement?) o Maintenance costs (costs of hardware maintenance and support software licenses? High annual licensing costs?) o Interoperability (problems interfacing the system to other systems? Use of compilers with current versions of the OS? Hardware emulation required?) Factors used in application assessment o Understandability (difficult to understand the source code?) o Documentation (complete, consistent, current documentation?) o Data (explicit data model for the system? Up-to-date and consistent data?) o Performance (adequate performance? Significant effect of performance problems on system users?) o Programming language (modern compilers available? Programming language still used for new system development?) o Configuration management (explicit description of the versions of components? Managed by a configuration management system?) o Test data (exist test data? Record of regression tests available?) o Personnel skills (who can maintain the application? Who have experience with the system?) Optional: collect data to judge the quality of the system o Number of system change requests o Number of user interfaces o Volume of data used by the system 66 Overview | download.benjaminsommer.com
  • 68. [SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011 Dependability and security Sociotechnical system          A system is more than the sum of its parts Software engineering: an intrinsic part of more general systems engineering Take a system-level view when designing software that has to be secure and dependable Consequences of failure are more significant o Extra work to contain / recover from the failure Critical to understand consequences of software failures to other elements in the system Usually the real problem: system failure rather than software failure o Need to examine how the software interacts with its immediate environment Software failures should be contained within its enclosing layers of the system stack Understand how faults and failure sin the non-software layers of the systems stack may affect the software Enterprise systems o Indented to help deliver a business goal Sociotechnical system stack: layers to understand it better        Equipment layer: hardware devices Operating system layer: o interacts with hardware o provides a set of common facilities for higher software layers Communications and data management layer: o Extends operating system facilities o Provides an interface: interaction with more extensive functionality (access to remote system, databases) o Middleware (layer between application and operating system) Application layer o Delivers application-specific functionality o Many different application programs in this layer (possibly) o May not be able to provide required level of privacy (need be implemented in layer below) Business process layer o Defined and enact organizational business processes o Make use of software system Organizational layer o Higher-level strategic processes o Business rules, policies, norms (should be followed when using the system) Social layer o Laws and regulations of society are defined (govern operation of the system) download.benjaminsommer.com | Dependability and security 67
  • 69. October 21, 2011 [SOFTWARE ENGINEERING LECTURE NOTES] Characteristics of the sociotechnical system stack:   Most interactions between neighboring layers Unexpected interactions between layers (may result in problems for the system) Systems engineering: the process of designing entire systems (not just the software in these systems) Complex systems  A system is a purposeful collection of interrelated components, of different kinds, which work together to achieve some objective  Properties and behavior of the system components are inextricably intermingled o Successful functioning of each system component depends on the functioning of other components  Usually hierarchical: they include other systems o Included systems: subsystems (can operate as independent systems)  Systems that include software: o Technical computer-based systems: include hardware, software; but not procedures, processes o Sociotechnical systems: include one/more technical systems, people (understand purpose of the system within the system itself)  Understand organizational environment when developing sociotechnical systems o To meet business needs o Users / managers should not reject the system Organizational factors from system’s environment affecting requirements, design and operation:    Process changes o System may require changes to the work processes in the environment o Training will be required o Users might resists introduction of a system in case its changes are significant Job changes o New systems may de-skill the users in an environment o New systems may cause them to change the way they work o Users may actively resist the introduction of the system into the organization Organizational changes o System may change political power structure in an organization Characteristics of sociotechnical systems when considering security and dependability:  Emergent properties o Properties of the system as a whole o Depend on system components and relationships between them o Can only be evaluated once the system has been assembled o Sample: security, dependability 68 Dependability and security | download.benjaminsommer.com
  • 70. [SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011  Nondeterministic characteristics o Variable output for constant input o System’s behavior depends on human operators Emergent system properties          Cannot be attributed to any specific part of the system They merge once the system components have been integrated Usually result from complex subsystem interrelationships Types of emergent properties o Functional emergent properties: when the purpose of the system only emerges after its components are integrated o Non-functional emergent properties: relate to the behavior of the system in its operational environment (reliability, performance, safety, security) Reliability from 3 perspectives: o Hardware reliability o Software reliability o Operator reliability Failures at one level can be propagated to other levels in the system Often difficult to anticipate how these component failures will affect other components Reliability of a system depends on the context in which the system is used o System’s environment cannot be completely specified o Restrictions on that environment for operational systems cannot be placed by system designers Performance or usability o are hard to assess o Can be measured after the system is operational Non-determinism    A system that is not (completely) predictable o Hardware can be thought of as (nearly) predictable o People are rather unpredictable Sociotechnical systems are non-deterministic o Include people o Changes to the hardware, software and data in these systems are so frequent Interactions between changes are complex o Behavior of the system is unpredictable Success criteria  Wicked problem: no definite problem specification since the problem is so complex and involves so many related entities download.benjaminsommer.com | Dependability and security 69
  • 71. October 21, 2011 [SOFTWARE ENGINEERING LECTURE NOTES] o o  Difficult to define success criteria for a system Judgment of success I based on whether or not the system is effective at the time it is deployed o Multiple conflicting goals that are interpreted differently by different stakeholders Nature of security and dependability attributes (makes it sometimes even more difficult to decide if a system is successful) Systems engineering  Encompasses all of the activities involved in procuring, specifying, designing, implementing, validating, deploying, operating, maintaining sociotechnical system  System engineers are concerned with o Software o Hardware o System’s interactions with users and its environment o Services that the system provides o Constraints under which the system must be built and operated o Ways in which the system is used to fulfill its purpose  Overall security and dependability of a system is influenced by activities at all stages  Important difference between systems and software engineering o Involvement of a range of professional disciplines throughout the lifetime of the system (essential, because of many different aspects of complex sociotechnical systems)  Differences between disciplines can introduce vulnerabilities into systems (compromise security and dependability of the system) o Different disciplines use the same words to mean different things o Each discipline makes assumptions about what can or can’t be done by other disciplines o Disciplines try to protect their professional boundaries and may argue for certain design decisions because these decisions will call for their professional expertise Overlapping stages in the lifetime of large/complex sociotechnical systems   Procurement or acquisition o Decided purpose of a system o Established high-level system requirements o Made decisions on how functionality will be distributed across hardware, software and people o Purchased components making up the systems Development o Requirements definition o System design o Hardware and software engineering o System integration o Testing 70 Dependability and security | download.benjaminsommer.com
  • 72. [SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011  Operation o System is deployed o Users are trained o Change of planned operational processes o System evolves as new requirements are identified o System declines in value and is decommissioned and replaced System procurement  The initial phase of systems engineering  Called: system acquisition  Decisions o System that is to be purchased o System budgets and timescales o High-level system requirements o Type of system required o The supplier(s) of the system o Whether to procure a system  Drivers for these decisions o State of other organizational systems (replacement system in case of a mixture of systems having troubles to communicate with each other; or maintenance problems) o Need to comply with external regulations (business is increasingly regulated) o External competition (increase effectiveness in competition; maintain competitive position) o Business reorganization (lead to changes in business processes that require new systems support) o Available budget  Procurer deals with the contractor rather than the subcontractors (a single procurer/supplier interface)  Decisions have a profound effect on the security and dependability of a system  Procure a custom system: significant effort to understand and define security and dependability requirements System procurement processes     Define business requirements Survey market for existing systems Off-the-shelf system available o Adapt requirements o Assess existing systems o Choose system supplier o Negotiate contract Custom system required download.benjaminsommer.com | Dependability and security 71
  • 73. October 21, 2011 o o o o [SOFTWARE ENGINEERING LECTURE NOTES] Define requirements Issue request to tender Select tender Negotiate contract System development  Goals o Develop / acquire all of the components of a system o Integrate these components to create the final system  Requirements: the bridge between procurement and development processes  See: waterfall model  Plan-driven processes are used o Different parts of the system are being developed at the same time  Processes of requirements development and system design are inextricably linked System development process:       Requirements development o Develop (in more detail) high-level and business requirements (identified during procurement) System design o Establish overall architecture of the system o Identify different system components o Understand relationships between them Subsystem engineering o Hardware and software components of the system are implemented o Configure off-the-shelf hardware and software o Design special-purpose hardware (if required) o Define operational processes for the system o Redesign essential business processes System integration o Put together components to create a new system System testing o An extensive, prolonged activity o Tune performance of the system System deployment o Make system available to its users o Transfer data from existing systems o Establish communications with other systems in the environment Requirements and design spiral:  Elements 72 Dependability and security | download.benjaminsommer.com
  • 74. [SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011   o Domain and problem understanding o Requirements elicitation and analysis o Architectural design o Require and assessment Each round of the spiral may add detail to the requirements and the design Some rounds may focus on requirements, some on design System operation  Operational processes: processes involved in using the system for its defined purpose  Key benefit of having system operators o People have a unique capability of being able to respond effectively to unexpected situations o Use local knowledge to adapt and improve processes o Usually improve the process  Actual operational processes differ from those anticipated by the system designers  Possible problem o Operation of the new system alongside existing systems o Possibly difficult to transfer data form one system to another  New systems may increase operator error rate Human error    Non-determinism Latent conditions o Contribute to system failure o Lead to system failure when the defenses built into the system do not trap an active failure by a system operator o See: Reason’s Swiss cheese model of system failure Reduce the probability that system failure will result from human error: o Use different types of barriers o Minimize number of latent conditions in a system Ways to view the problem of human error   Person approach o Errors: responsibility of the individual and ‘unsafe acts’ o Consequence of carelessness / reckless behavior System approach o Assumption: people are fallible and will make mistakes o Errors: consequence of system design decisions (lead to erroneous ways of working) o Good systems: recognize the possibility of human error, include barriers and safeguards System evolution download.benjaminsommer.com | Dependability and security 73
  • 75. October 21, 2011  [SOFTWARE ENGINEERING LECTURE NOTES] System evolution is inherently costly: o Proposed changes have to be analyzed very carefully from a business and a technical perspective (changes should not simply be technically motivated) o Changes to subsystems may be needed (may adversely affect performance / behavior of other subsystems) o Reasons for original design decisions often unrecorded (evolution team have to figure out these) o Structure typically becomes corrupted by change (old systems) Dependability and security     Dependability of systems usually more important than detailed functionality o System failures affect a large number of people o Users often reject systems that are unreliable, unsafe or insecure o System failure costs may be enormous o Undependable systems may cause information loss Issues to consider when designing a dependable system o Hardware failure: mistakes in its design, manufacturing errors, natural end of life o Software failure: mistakes in its specification, design or implementation o Operational failure: human error (might be significant) Failures are often interrelated Holistic systems perspective required during design phase Dependability properties  Dependability: a property of the system that reflects its trustworthiness  Trustworthiness: degree of confidence a user has that the system will operate as they expect; not fail in ‘normal’ use  Principal dimensions of dependability o Availability: probability to be up and running and giving services at any time o Reliability: probability that the system is doing what is expected by users (correctness, precision, timeliness) o Safety: judgment of how likely the system causes damage to people / environment o Security: judgment of how likely the system can resist accidental/deliberate intrusions (integrity, confidentiality)  Other system properties (dependability properties) o Reparability o Maintainability o Survivability o Error tolerance  Things to ensure when developing dependable software o Avoid introduction of accidental errors into the system during software specification and development 74 Dependability and security | download.benjaminsommer.com
  • 76. [SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011 o   Design verification and validation processes being effective in discovering residual errors that affect the dependability of the system o Design protection mechanism that guard against external attacks that can compromise the availability or security of the system o Configure the deployed system and its supporting software correctly for tis operating environment Need for fault tolerance o Need to include redundant code to help them monitor themselves, detect erroneous stats and recover from faults before failure occurs Increases development costs o Extra design, implementation, validation costs o High validation costs for ultra-dependable systems (safety-critical control systems) o Testing Availability and reliability  Closely related properties  Can be expressed as numerical probabilities  Reliability: probability of failure-free operation over a specified time, in a given environment, for a specific purpose  Availability: probability that a system, at a point in time, will be operational and able to deliver the requested service  Standard definitions do not take into account o The severity of failure o The consequences of unavailability  Users often accept minor failures  Users rarely accept failures with high consequential costs  Reliability terminology o Human error or mistake (see above) o System fault: characteristic of a system that can lead to a system error o System error: erroneous system state that can lead to system behavior that is unexpected by system users o System failure: event that occurs at some point in time when the system does not deliver a service as expected by its users  Practical reliability of a program depends on o The number of inputs causing erroneous outputs during normal use  Practical reliability does not really depend on o Software faults occurring in exceptional situations (do not always result in system errors)  Complementary approaches used to improve the reliability of a system o Fault avoidance: avoid error-prone programming language constructs (pointers), use static analysis to detect program anomalies download.benjaminsommer.com | Dependability and security 75
  • 77. October 21, 2011 o o [SOFTWARE ENGINEERING LECTURE NOTES] Fault detection and removal: use of verification and validation techniques (systematic testing and debugging) Fault tolerance: incorporate self-checking facilities in a system, use redundant system modules (techniques that ensure that faults in a system do not result in system errors or vice versa) Safety  Safety-critical system: o Essential that system operation is always safe o System should never damage people or system’s environment o Sample: control- and monitoring systems in aircraft, process control system in chemical and pharmaceutical plants, automobile control systems  Software control is essential o Need to manage large numbers of sensors and actuators with complex control laws o Sample: advanced, aerodynamically unstable, military aircraft  Classes of safety-critical software o Primary safety-critical software: embedded as a controller in a system (malfunctioning cause hardware malfunction causing human injury / environmental damage) o Secondary safety-critical software: can indirectly result in an injury (computer-aided engineering design system, mental health care management systems)  Reasons why reliable software systems are not necessarily safe o No certainty that a system is fault-free and fault-tolerant o Specification may be incomplete (no description of required behavior of the system in some critical situations) o Hardware malfunctions (causing the system to behave in an unpredictable way)  Safety terminology o Accident / mishap: an unplanned event or sequence of events resulting in human death / injury, damage to property or environment o Hazard: condition with the potential for causing or contributing to an accident (failure of sensors) o Damage: measure of the loss resulting from a mishap (can range from many people being killed to minor injury or property damage) o Hazard severity: assessment of the worst possible damage that could result from a particular hazard (range from catastrophic to minor) o Hazard probability: probability of the events occurring which create a hazard (tend to be arbitrary, range from probably to implausible) o Risk: a measure of the probability that the system will cause an accident  How to assure safety or reduce consequences of accidents o Hazard avoidance o Hazard detection and removal o Damage limitation 76 Dependability and security | download.benjaminsommer.com
  • 78. [SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011 Security  A system attribute  Reflects the ability of the system to protect itself from external attacks (may be accidental or deliberate)  Security terminology o Asset: something of value which has to be protected (software system, data used by that system) o Exposure: possible loss or harm to a computing system (loss/damage to data, loss of time and effort if recovery is necessary after a security breach) o Vulnerability: weakness in a computer-based system that may be exploited to cause loss or harm o Attack: exploitation of a system’s vulnerability o Threats: circumstances that have potential to cause loss or harm (see system vulnerability that is subjected to an attack) o Control: protective measure that reduces a system’s vulnerability (e.g.: encryption)  Samples: o Military system o Systems for electronic commerce o Systems that involve the processing and interchange of confidential information  Main types of security threats in any networked system o Threats to the confidentiality of the system and its data o Threats to the integrity of the system and its data (can damage or corrupt software / data) o Threats to the availability of the system and its data (can restrict access to the software / data for authorized users)  Sample security threats created by human failings o Easy-to-guess passwords, writing down passwords o System administrators: setting up access control or configuration files, users don’t install protection software  Controls to enhance system security o Vulnerability avoidance o Attack detection and neutralization o Exposure limitation and recovery Dependability and security specification  Attention to detail when system requirements are derived Risk-driven requirements specification  Dependability and security requirements: protection requirements o How system should protect itself from internal faults o Stop system failures o Stop accidents or attacks download.benjaminsommer.com | Dependability and security 77
  • 79. October 21, 2011      [SOFTWARE ENGINEERING LECTURE NOTES] o Facilitate recovery Risk-driven approach to requirements specification takes into account o Dangerous events that may occur o Probability that these will actually occur o Probability that damage will result from such events o Extent of the damage caused Analyze possible causes of dangerous events Establish security and dependability requirements Stages in a general risk-driven specification process o Risk identification: interactions between systems, care conditions in its operating environment (risk description) o Risk analysis and classification: each risk is considered separately; serious/implausible risks are selected for further analysis (risk assessment) o Risk decomposition: discover potential root causes for selected risk (root cause analysis) o Risk reduction: proposals to reduce/eliminate identified risks (dependability requirements) Phases of risk analysis (for large systems) o Preliminary risk analysis: identify major risks from the system’s environment o Life-cycle risk analysis: concerned with risks arising from system design decisions (during system development) o Operational risk analysis: concerned with system user interface and risks from operator errors Safety specification  Safety-critical system: o Failures may affect the environment of the system o Failures may cause injury/death to people in that environment  Principal concern: identify requirements that will minimize the probability that such system failures will occur  Safety requirements o Protection requirements o Not concerned with normal system operation o May specify system shutdown to maintain safety  Avoid overprotection  Find balance between safety and functionality  Safety specification process o Risk identification o Risk analysis o Risk decomposition o Risk reduction Hazard identification 78 Dependability and security | download.benjaminsommer.com
  • 80. [SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011     Can lead to an accident Consider different types of hazards (physical, electrical, biological, radiation hazards, service failure hazards etc.) Identify hazards o From previous experience o From an analysis of the application domain o Group working techniques (brainstorming) Software-related hazards are normally concerned with o Failure to deliver a system service o Failure of monitoring and protection systems (included in a device; e.g.: low battery levels) Hazard assessment      Focuses on o Understanding the probability that a hazard will occur o The consequences of an accident / incident associated with that hazard Understand seriousness of a given hazard Risk categories to be used in hazard assessment o Intolerable risks: threaten human life o As low as reasonably practical risks (ALARP): less serious consequence; serious but very low probability of occurrence o Acceptable risk: minor damage (possibly reduce all of them) Boundaries depend on social and political factors Hazard assessment involves estimating hazard probability and risk severity (usually difficult) Hazard analysis     Process of discovering the root causes of hazards in a safety-critical system Use of top-down (deductive) or bottom-up approach Techniques o Hazard decomposition / analysis o Reviews and checklists o Formal techniques o Formal logic o Fault tree analysis Fault trees are also used to identify potential hardware problems Risk reduction   Derive safety requirements from identified potential risks that manage the risks and ensure that incidents / accidents do not occur Possible strategies download.benjaminsommer.com | Dependability and security 79
  • 81. October 21, 2011 [SOFTWARE ENGINEERING LECTURE NOTES] o o  Hazard avoidance: system is design that hazards cannot occur Hazard detection and removal: hazards are detected and neutralized before they result in an accident o Damage limitation: system is design so that consequences of an accident are minimized Possible solutions o Arithmetic error: an arithmetic computation causes a representation failure o Algorithmic error: more difficult situation as there is no clear program exception that must be handled Reliability specification  Reliability of a system depends on o Hardware reliability o Software reliability o Reliability of system operators  Reliability: a measurable system attribute  Reliability requirements are of two kinds o Non-functional requirements: number of failures (quantitative reliability requirements) o Functional requirements: system/software functions to avoid/detect/tolerate faults (qualitative reliability requirements)  Process of reliability specification can be based on general risk-driven specification processes o Risk identification (identify types of system failures) o Risk analysis (estimate cost and consequences) o Risk decomposition (root cause analysis) o Risk reduction (generate quantitative reliability specifications) Reliability metrics    Important metrics used to specify reliability plus an additional metric (used to specify related system attribute of availability) o Probability of failure on demand (POFOD): define the probability that a demand for service from a system will result in a system failure o Rate of occurrence of failures (ROCOF): probable number of system failures being likely to be observed relative to a certain time period o Availability (AVAIL): reflects a system’s ability to deliver services when requested To assess the reliability of a system o Capture data about its operation (number of system failures; time/number of transactions between system failures plus total elapsed time of transactions; repair/restart time after system failure) Use calendar time for system being in continuous operation (monitoring systems) Non-functional reliability requirements  Quantitative specification of the required reliability and availability of a system 80 Dependability and security | download.benjaminsommer.com
  • 82. [SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011       Calculated using one of the metrics described above Advantages in deriving quantitative reliability specifications o Process of deciding what required level of reliability helps to clarify what stakeholders really need o Provides a basis for assessing when to stop testing a system o A means for assessing different design strategies intended to improve the reliability of a system Consider associated losses that could result from a system failure Problem of specifying reliability using metrics o Possible to over-specify reliability o Incur high development and validation costs Organizations must be realistic about whether it is worth specifying and validating a very high level of reliability Steps to take to avoid over-specification of system reliability o Specify availability and reliability requirements for different types of failures o Specify availability and reliability requirements for different services separately o Decide whether high reliability in a software system is really needed Functional reliability specification     Involves identifying requirements that define constraints and features that contribute to system reliability Types of functional reliability requirements for a system o Checking requirements (identify checks on inputs to the system to ensure that incorrect / out-of-range inputs are detected before being processed by the system) o Recovery requirements (help the system recover after a failure has occurred) o Redundancy requirements (specify redundant features of the system that ensure that a single component failure does not lead to a complete loss of service) May include process requirements for reliability No simple rules for deriving functional reliability requirements Security specification  Some commonalities with safety requirements  Impractical to specify them quantitatively  Security is a more challenging problem than safety.  Security requirements need to be more extensive than safety requirements  Possible security requirements o Identification requirements (whether to identify users before interaction) o Authentication requirements (how users are identified) o Authorization requirements (privileges and access permissions of identified users) o Immunity requirements (show a system protects itself against viruses, worms and similar threats) download.benjaminsommer.com | Dependability and security 81
  • 83. October 21, 2011 [SOFTWARE ENGINEERING LECTURE NOTES] o o o   Integrity requirements (how to avoid data corruption) Intrusion detection requirements (mechanisms on how to detect attacks on the system) Non-repudiation requirements (a party in a transaction cannot deny its involvement in that transaction) o Privacy requirements (how to maintain data privacy) o Security auditing requirements (how to audit and check system use) o System maintenance security requirements (how to prevent authorized changes from accidentally defeating security mechanisms) Stages in risk analysis and assessment process (see above) o Preliminary risk analysis o Life-cycle risk analysis o Operational risk analysis Process stages for security requirements o Assess identification o Asset value assessment o Exposure assessment o Threat identification o Attack assessment o Control identification o Feasibility assessment o Security requirements definition Formal specification  Mathematically-based approaches to software development where you define a formal model of the software  Eliminate software failure by proving that a program is consistent with a given model  Usually developed as part of a plan-based software process  Not just essential for a verification of the design and implementation of software  Automated support for analyzing a formal specification has been developed  Formal specification in a plan-based software process o User requirements definition o System requirements specification o Architectural design o Formal specification o High-level design  Arguments against formal system specification o Problems owners and domain experts cannot understand a formal specification (cannot check that it accurately represents their requirements) o Difficult to estimate the possible cost savings that will result from its use o Most software engineers have not been trained to use formal specification languages o Difficult to scale current approaches to formal specification up to very large systems o Formal specification is not compatible with agile methods of development 82 Dependability and security | download.benjaminsommer.com
  • 84. [SOFTWARE ENGINEERING LECTURE NOTES] October 21, 2011 Dependability engineering       Critical systems have a high level of dependability o Process control systems, protection systems, medical systems, telecommunications switches, flight control systems Special development tools and techniques required to enhance dependability Concerned with the techniques being used to enhance dependability of both critical and noncritical systems Complementary approached being supported by these techniques o Fault avoidance (approaches to avoid design and programming errors) o Fault detection and correction (verification and validation processes discover and remove faults in a program before being deployed) o Fault tolerance (faults are detected at run-time and are managed to prevent system failure) Software development companies accept that their software will always contain some residual faults Must product the evidence that can convince a regulator that the system is dependable Redundancy and diversity  Fundamental strategies for enhancing the dependability of any type of system  Redundancy: spare capacity is included in a system that can be used if part of that system fails  Diversity: redundant components of the system are of different types download.benjaminsommer.com | Dependability and security 83