SOFTWARE ENGINEERING
CHAPTER # 7 Introduction to Computing
Software Engineering
S H E H E R YAR MALI K
Software engineering (SE) is an intellectual activity
and thus human-intensive
Software is built to meet a certain functional goal
and satisfy certain qualities
Software processes also must meet certain qualities
Chapter # 7 Introduction to Computing 2
SE: A Unique Brand of Engineering
S H E H E R YAR MALI K
SE is a unique brand of engineering
Software is adaptable
Software construction is human-intensive
Software is intangible and generally invisible
Software problems are unprecedentedly complex
Software directly depends upon the hardware
It is at the top of the system engineering
Software solutions require unusual rigor (accuracy)
Software “state” means behaviors can depend on history
Software has discontinuous operational nature
Chapter # 7 Introduction to Computing 3
What does a Software Engineer Do?
S H E H E R YAR MALI K
Software engineers should
adopt a systematic and organised approach to all aspects
of software development
use appropriate tools and techniques depending on
the problem to be solved
the development constraints and
the resources available
Understand and communicate processes for improved
software development within their organization
Be effective team members and/or leaders
Can be very technical or more managerial depending on
organizational need
Chapter # 7 Introduction to Computing 4
Software Product
S H E H E R YAR MALI K
Different from traditional types of products
intangible
difficult to describe and evaluate
Malleable (adaptable)
human intensive
involves only insignificant “manufacturing” process
Chapter # 7 Introduction to Computing 5
Software Process
S H E H E R YAR MALI K
Prescribes all major activities
Uses resources, within a set of constraints, to produce
intermediate and final products
May be composed of sub-processes
Each activity has entry and exit criteria
Activities are organized in a sequence
Has a set of guiding principles to explain goals
Constraints may apply to activity, resource or product
Chapter # 7 Introduction to Computing 6
Software Development Stages
S H E H E R YAR MALI K
1. Requirements Analysis & Specification
2. Design
a. Conceptual/System/Architectural Design
b. Detailed/Program Design
3. Implementation/Coding
4. Testing
a. Unit & Integration Testing
b. System Testing/Validation
5. System Delivery/Deployment
6. Maintenance
Chapter # 7 Introduction to Computing 7
Software Lifecycle Model
S H E H E R YAR MALI K
A software lifecycle model is a standardized format for
planning organizing, and running a new development project
Hundreds of different kinds of models are known and used
Many are minor variations on just a small number of basic
models
Chapter # 7 Introduction to Computing 8
Software Lifecycle Model
S H E H E R YAR MALI K
Few software lifecycle models are
Waterfall Model
Iterative & Incremental Model
Prototyping Model
Spiral Model
Rapid application development
Agile development
Code and fix
Chapter # 7 Introduction to Computing 9
Software Lifecycle Model (Waterfall)
S H E H E R YAR MALI K
Requirement
Design
Implementation
Verification
Maintenance
Chapter # 7 Introduction to Computing 10
Software Qualities
S H E H E R YAR MALI K
Critical Quality Attributes Other Attributes
Correctness Completeness
Maintainability Compatibility
Dependability Portability
Usability Internationalization
Reliability Understandability
Scalability
Robustness
Testability
Reusability
Customizability
Efficiency
Chapter # 7 Introduction to Computing 11
Classification of S/W Quality "ilities"
S H E H E R YAR MALI K
Internal vs. External
External
visible to the user
Internal
developers concern
Product vs. Process
Our goal is to develop software products
The process is how we do it
Internal qualities affect external qualities
Process quality affects product quality
Chapter # 7 Introduction to Computing 12
Internal vs. External Qualities
S H E H E R YAR MALI K
External qualities are visible to the user
reliability, usability, efficiency (maybe), robustness, scalability
Internal qualities are the concern of developers
they help developers achieve external qualities
verifiability, maintainability, extensibility, adaptability, portability,
testability, reusability
Internal qualities affect external qualities
Chapter # 7 Introduction to Computing 13
Product vs. Process Qualities
S H E H E R YAR MALI K
Product qualities concern the developed artifacts
maintainability, performance, understandability
Process qualities deal with the development activity
products are developed through process
maintainability, productivity, predictability
Process quality affects product quality
Chapter # 7 Introduction to Computing 14
Correctness
S H E H E R YAR MALI K
Software is correct if it satisfies the functional requirements
specifications
assuming that specification exists!
established w.r.t. the requirements/specification
If specifications are formal, since programs are formal objects,
correctness can be defined formally
It can be proven as a theorem or disproved by counterexamples (testing)
Ideal quality
The limit of correctness
It is an absolute (yes/no) quality
there is no concept of “degree of correctness”
there is no concept of severity of deviation
What if specifications are wrong?
(e.g., they derive from incorrect requirements or errors in domain knowledge)
Chapter # 7 Introduction to Computing 15
Reliability
S H E H E R YAR MALI K
It is informally, user can rely on it
It can be defined mathematically as “probability of
absence of failures for a certain time period”
If specs are correct, all correct software is reliable,
but not vice-versa
It is a statistical property
Chapter # 7 Introduction to Computing 16
Robustness
S H E H E R YAR MALI K
Software behaves “reasonably” even in unforeseen
circumstances (e.g., incorrect input, hardware
failure)
“Reasonable” behavior in unforeseen circumstances
A specified requirement is an issue of correctness
whereas an unspecified requirement is an issue of
robustness
Chapter # 7 Introduction to Computing 17
Performance
S H E H E R YAR MALI K
Efficient use of resources
memory, processing time, communication
Can be verified
complexity analysis
measurement, analysis, and simulation
performance evaluation (on a model, via simulation)
Performance can affect scalability
a solution that works on a small local network may not work on a
large intranet
Chapter # 7 Introduction to Computing 18
Usability
S H E H E R YAR MALI K
Ability of end-users to easily use software
Expected users find the system easy to use
Other term: user-friendliness
Extremely subjective, difficult to evaluate
Affected mostly by user interface
e.g., visual vs. textual
Chapter # 7 Introduction to Computing 19
Verifiability
S H E H E R YAR MALI K
How easy it is to verify properties
mostly an internal quality
can be external as well (e.g., security critical application)
It is performed by formal analysis or testing
Chapter # 7 Introduction to Computing 20
Maintainability
S H E H E R YAR MALI K
Maintainability: ease of maintenance
Maintenance: changes after release
Maintenance costs exceed 60% of total cost of software
Can be decomposed as
Repairability
ability to correct defects in reasonable time
Evolvability
ability to adapt software to environment changes and to improve it in
reasonable time
Three main categories of maintenance
corrective: removing remaining errors (20%)
adaptive: adjusting to environment changes (20%)
perfective: quality improvements (>50%)
Chapter # 7 Introduction to Computing 21
Reusability
S H E H E R YAR MALI K
Ability to construct new software from existing pieces
Existing product (or components) used (with minor modifications) to
build another product
Also applies to process
Reuse of standard parts measure of maturity of the field
Occurs at all levels
from people to process, from requirements to code
Chapter # 7 Introduction to Computing 22
Portability
S H E H E R YAR MALI K
Software can run on different hw platforms or sw
environments
Remains relevant as new platforms and
environments are introduced (e.g. digital assistants)
Relevant when downloading software in a
heterogeneous network environment
Chapter # 7 Introduction to Computing 23
Understandability
S H E H E R YAR MALI K
Ability of developers to easily understand produced
artifacts
It is subjective
Ease of understanding software
Program modification requires program
understanding
Chapter # 7 Introduction to Computing 24
Interoperability
S H E H E R YAR MALI K
Ability of a system to coexist and cooperate with
other systems
e.g., word processor and spreadsheet
Ability to easily integrate into larger systems
Common techniques include APIs, distributed
programming interfaces (CORBA, DCOM), plug-in
protocols, etc
Chapter # 7 Introduction to Computing 25
Scalability
S H E H E R YAR MALI K
Ability of a software system to grow in size while
maintaining its properties and qualities
Assumes maintainability and evolvability
Goal of component-based development
Chapter # 7 Introduction to Computing 26
Typical Process Qualities
S H E H E R YAR MALI K
Productivity
denotes its efficiency and performance
Timeliness
ability to deliver a product on time
Visibility
all of its steps and current status are documented clearly
Chapter # 7 Introduction to Computing 27
Timeliness: Issues
S H E H E R YAR MALI K
Often the development process does not follow the
evolution of user requirements
A mismatch occurs between user requirements and
status of the product
Chapter # 7 Introduction to Computing 28
Application-Specific Qualities
S H E H E R YAR MALI K
E.g., information systems
Data integrity
Security
Data availability
Transaction performance
Chapter # 7 Introduction to Computing 29