Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 29

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

You might also like