0% found this document useful (0 votes)
65 views29 pages

ITC - Chapter # 7

A computer is an electronic device, operating under the control of instructions stored in its own memory that can accept data (input), process the data according to specified rules, produce information (output), and store the information for future use1. Any kind of computer consists of HARDWARE AND SOFTWARE.

Uploaded by

Afaq Bhutta
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
65 views29 pages

ITC - Chapter # 7

A computer is an electronic device, operating under the control of instructions stored in its own memory that can accept data (input), process the data according to specified rules, produce information (output), and store the information for future use1. Any kind of computer consists of HARDWARE AND SOFTWARE.

Uploaded by

Afaq Bhutta
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 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