0% found this document useful (0 votes)
46 views

Software Engineering

This document discusses software engineering and the system development life cycle. It defines key terms like software, software engineering, and the differences between software engineering and computer science. It also explains the different phases of the system development life cycle including planning, analysis, design, development, testing, implementation, and maintenance. The analysis phase involves conducting a preliminary investigation/feasibility study and performing detailed analysis to determine requirements and recommend a solution.

Uploaded by

Ruchita Maaran
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
46 views

Software Engineering

This document discusses software engineering and the system development life cycle. It defines key terms like software, software engineering, and the differences between software engineering and computer science. It also explains the different phases of the system development life cycle including planning, analysis, design, development, testing, implementation, and maintenance. The analysis phase involves conducting a preliminary investigation/feasibility study and performing detailed analysis to determine requirements and recommend a solution.

Uploaded by

Ruchita Maaran
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 72

UNDERSTANDING

SOFTWARE ENGINEERING

IN AN EASY WAYYYY....
What is software?
 Computer programs and associated
documentation

 Software products may be developed for a


particular customer or may be developed for a
general market
 Software products may be
 Generic - developed to be sold to a range of
different customers
 Bespoke (custom) - developed for a single
customer according to their specification
What is software engineering?
Software engineering is an engineering
discipline which is concerned with all aspects
of software production
Software engineers should
 adopt a systematic and organised approach to their
work
 use appropriate tools and techniques depending on
 the problem to be solved,
 the development constraints and
 the resources available
What is the difference between software
engineering and computer science?
Software
Computer Science
Engineering
is concerned with
 theory
 fundamentals  the practicalities of
developing
 delivering useful software

Computer science theories are currently


insufficient to act as a complete supporting for
software engineering, BUT it is a foundation for
practical aspects of software engineering
What is a software process?
 A set of activities whose goal is the
development or evolution of software
 Generic activities in all software processes
are:
 Specification - what the system should do
and its development constraints
 Development - production of the software
system
 Validation - checking that the software is what
the customer wants
 Evolution - changing the software in response
to changing demands
Types of Software
 Application software
 Easy-to-use programs designed to perform specific
tasks
 Application software makes computer popular and easy
to use
 Common application software:
 Microsoft Word, WordPerfect
 PowerPoint
 Netscape, Internet Explorer
 PhotoShop, Photo-Paint
 Quick Time
 Dreamweaver
System Software
 System software
 Programs that support the execution and
development of other programs
 Two major types

 Operating systems

 Translation systems (compilers & linkers)


System Software - Operating
System
 Controls and manages the computing resources
 Examples
 Windows, Unix, MSDOS,
 Important services that an operating system
provides:
 Security: prevent unauthorized users from accessing
the system
 Commands to manipulate the file system
 Input and output on a variety of devices
 Window management
Utility Software
 Utility software (a type of
system software) is
designed to help you
monitor and configure
settings for your
computer system
equipment, the operating
system, or application
software
 A desktop widget is a
specialized utility program
that appears on a
computer’s screen-based
desktop
Chapter 3: Computer Software 9
What is the difference between software
engineering and system engineering?
 Software engineering is part of
System engineering
 System engineering is concerned with all
aspects of computer-based systems development
including
 hardware,
 software and
 process engineering
 System engineers are involved in
system specification,
architectural design,
integration and deployment
The System Development Life
Cycle

Hardware,
Hardware,software,
software,data,
data, System—Set
System—Setof ofcomponents
components
people,
people,and
andprocedures
proceduresthat
that that
thatinteract
interactto
toachieve
achieve
work
worktogether
togethertotoproduce
produce common
commongoalgoal
quality
qualityinformation
information
Businesses
Businessesuseusemany
manytypes
typesofof
systems
systems
The System Development Life
Cycle Who participates in the system
development life cycle?
The System Development Life
Cycle
What is a systems analyst?

Responsible for designing and


developing information system

Communication between users


and IT professionals
The System Development Life
Cycle
What is the project team?

Formed to work on project from beginning to end

Consists of users, systems analyst, and other IT professionals

Project leader—one member of the team who


manages and controls project budget and schedule
The System Development
Life Cycle
Requirements
Establish customer’s needs
Collection
Model and specify the requirements
Analysis
(“what”)
Model and specify a solution
Design
(“how”)

Implementation Construct a solution in software

Validate the solution against the


Testing
requirements
Repair defects and adapt the
Maintenance
solution to new requirements

NB: these are ongoing activities, not sequential phases!


© Oscar Nierstrasz ESE — Introduction ESE 1.18
The System Development Life
Cycle
What are guidelines for system development?

Arrange tasks into phases (groups


of activities)
Involve users (anyone for whom system is being
built)

Develop clearly defined standards (procedures company expects


employees to follow)
SYSTEMS DEVELOPMENT
LIFE CYCLE (SDLC)
SDLC PHASE ACTIVITIES
1. Planning •Define the system to be developed
•Set the project scope
•Develop the project plan
2. Analysis •Gather business requirements
3. Design •Design the technical architecture
•Design system models
4. Development •Build technical architecture
•Build databases and programs
5. Testing •Write test conditions
•Perform testing
6. Implementation •Write user documentation
•Provide training
7. Maintenance •Build a help desk
•Support system changes
The System Development Life
Cycle
What is the planning phase?
Begins when steering committee receives project request
Steering
committee—
decision-making
body for the
company

Function of committee:

Form project
Review and development
Prioritize Allocate
approve project team for each
project requests resources
requests approved
project
The System Development Life
Cycle
What is the analysis phase?

Conduct preliminary Perform detailed


investigation, also analysis
called feasibility
study
The System Development Life
Cycle
What is the preliminary investigation?
 Determine exact nature of problem or improvement
and whether it is worth pursuing
 Findings are presented in feasibility report, also known as a feasibility study
The System Development Life
Cycle
What is feasibility? Operational
feasibility

Measure of Four feasibility


how suitable tests:
system Schedule
feasibility
development
will be to the Economic
company feasibility
(also called Technical
cost/benefit feasibility
feasibility)
The System Development Life
Cycle
What is detailed analysis?
1. Study how current system
works

2. Determine user’s wants, needs,


and requirements

3. Recommend solution

Sometimes called logical design


The System Development Life
Cycle
What is the Assesses
system proposal? feasibility
of each
alternative
solution

Presented to
Recommen
steering
ds the most
committee,
feasible
which decides
solution for
how system
the project
will be
developed
The System Development Life
Cycle Horizontal market
What are possible solutions? Horizontal market
software—meets
software—meets
needs
needsofofmany
many
companies
Buy
Buypackaged
packagedsoftware—prewritten
software—prewritten companies
software
softwareavailable
availablefor
forpurchase
purchase
Vertical
Verticalmarket
market
software—designed
software—designed
for
forparticular
particularindustry
industry
Write
Writeown
owncustom
customsoftware—software
software—software
developed
developedat
atuser’s
user’srequest
request

Outsource—have
Outsource—haveoutside
outsidesource
source
develop
developsoftware
software
The System Development Life
Cycle
What is the design phase?

Acquire
Acquirehardware
hardwareand
andsoftware
software

Develop
Developall
alldetails
detailsof
ofnew
neworor
modified
modifiedinformation
informationsystem
system
The System Development Life
Cycle
What is needed to acquire new hardware and
software?

Talk
Talk with
with other
other Surf
Surf Web
Web
systems
systems analysts
analysts

Read
Read print
print and
and online
online
Visit
Visit vendors’
vendors’ stores
stores trade
trade journals,
journals,
newspapers,
newspapers, and
and
magazines
magazines

 Identify all hardware and software requirements of new or modified system


The System Development Life
Cycle
What is documentation?
Collection and summarization
of data and information

Includes reports, diagrams,


programs, and other deliverables
The System Development Life
Cycle
What are three basic documents used to
summarize technical specifications?
Vendor quotes
Identifies Request for quotation (RFQ) price(s) for
product(s) listed
you want product(s)

Vendor selects
Request for proposal (RFP)
product(s) that
meet(s) your
requirements and Less formal method
then quotes price(s) that uses standard
form to request
information about
Request for information (RFI) product or service
The System Development Life
Cycle
What is a detailed design?
Detailed design specifications for components in proposed solution

Includes several activities

Database
Database Input
Inputand
and Program
Program
design
design output
outputdesign
design design
design
The System Development Life
Cycle
What is a prototype?

Working
Working model
model of
of
proposed
proposed system
system

Beginning
Beginning aa prototype
prototype too
too early
early
may
may lead
lead to
to problems
problems
The System Development Life
Cycle
 Software tools designed to support activities of system
development cycle
The System Development Life
Cycle
What is the implementation phase?
 Purpose is to construct, or build, new or modified
system and then deliver it to users

Convert to new system

Train users

Install and test new system

Develop programs
The System Development Life
Cycle What are the three types of tests
performed by system developers?

Unit Test Systems test

Verifies each Verifies all programs


individual program in application work
works by itself together

Integration Test

Verifies application
works with other
applications
The System Development Life
Cycle
What is training?

 Showing users exactly


how they will use new
hardware and software
in system
The System Development Life
Cycle
What is the support phase?
 Provides ongoing assistance after system is implemented
Conduct post-implementation system review—meeting to find out if
information system is performing according to expectations

Identify errors

Identify enhancements

Monitor system performance


What are the attributes of good
software?
The software should deliver the required
functionality and performance to the user and
should be maintainable, Reliability and usable
 Maintainability
 Software must evolve to meet changing needs
 Reliability
 Software must be trustworthy
 Efficiency
 Software should not make wasteful use of system
resources
 Usability
 Software must be usable by the users for which it
was designed
What is Quality?
Software Quality is conformance to:
 explicitly stated functional and performance
requirements,
 explicitly documented development
standards,
 implicit characteristics that are expected of all
professionally developed software.

© Oscar Nierstrasz ESE — Software Quality ESE 11.40


Problems with Software
Quality
 Software specifications are usually incomplete and often
inconsistent

 There is tension between:


 customer quality requirements (efficiency, reliability, etc.)
 developer quality requirements (maintainability, reusability, etc.)

 Some quality requirements are hard to specify in an unambiguous


way
 directly measurable qualities (e.g., errors/KLOC),
 indirectly measurable qualities (e.g., usability).

Quality management is not just about reducing defects!


© Oscar Nierstrasz ESE — Software Quality ESE 11.41
Hierarchical Quality Model
Define quality via hierarchical quality model, i.e. a number of quality
attributes (a.k.a. quality factors, quality aspects, ...)
Choose quality attributes (and weights) depending on the project
context
Quality attribute
...

Reliability may be further


refined into
Software Efficiency subattributes
Quality
Usability

Maintainability

Portability

© Oscar Nierstrasz ESE — Software Quality ESE 11.42


Quality Attributes
Quality attributes apply both to the product and
the process.

 product: delivered to the customer


 process: produces the software product
 resources: (both the product and the
process require resources)
 Underlying assumption: a quality process leads to
a quality product (cf. metaphor of manufacturing
lines)
© Oscar Nierstrasz ESE — Software Quality ESE 11.43
Quality Attributes ...
Quality attributes can be external or internal.

 External: Derived from the relationship between the environment


and the system (or the process). (To derive, the system or process
must run)
 e.g. Reliability, Robustness

 Internal: Derived immediately from the product or process


description (To derive, it is sufficient to have the description)
 Underlying assumption: internal quality leads to external quality (cfr.
metaphor manufacturing lines)
 e.g. Efficiency

© Oscar Nierstrasz ESE — Software Quality ESE 11.44


Correctness, Reliability, Robustness

Correctness
 A system is correct if it behaves according to its specification
 An absolute property (i.e., a system cannot be “almost correct”)
 ... in theory and practice undecidable

Reliability
 The user may rely on the system behaving properly
 Reliability is the probability that the system will operate as expected over a
specified interval
 A relative property (a system has a mean time between failure of 3 weeks)

Robustness
 A system is robust if it behaves reasonably even in circumstances that were
not specified
 A vague property (once you specify the abnormal circumstances they
become part of the requirements)
© Oscar Nierstrasz ESE — Software Quality ESE 11.45
Efficiency, Usability
Efficiency (Performance)
 Use of resources such as computing time, memory
 Affects user-friendliness and scalability
 Hardware technology changes fast!
 First do it, then do it right, then do it fast

 For process, resources are manpower, time and money


 relates to the “productivity” of a process

© Oscar Nierstrasz ESE — Software Quality ESE 11.46


Efficiency, Usability ...
Usability (User Friendliness, Human Factors)

 The degree to which the human users find the system (process)
both “easy to use” and useful
 Depends a lot on the target audience (novices vs. experts)
 Often a system has various kinds of users (end-users, operators,
installers)
 Typically expressed in “amount of time to learn the system”

© Oscar Nierstrasz ESE — Software Quality ESE 11.47


Maintainability
 External product attributes (evolvability also
applies to process)

Maintainability
 How easy it is to change a system after its
initial release
 software entropy  maintainability gradually
decreases over time

© Oscar Nierstrasz ESE — Software Quality ESE 11.48


Maintainability ...
Is often refined to ...

Repairability
 How much work is needed to correct a defect

Evolvability (Adaptability)
 How much work is needed to adapt to changing requirements (both
system and process)

Portability
 How much work is needed to port to new environment or platforms

© Oscar Nierstrasz ESE — Software Quality ESE 11.49


Verifiability, Understandability
 Internal (and external) product attribute

Verifiability
 How easy it is to verify whether desired attributes are there?
 internally: e.g., verify requirements, code inspections
 externally: e.g., testing, efficiency

Understandability
 How easy it is to understand the system
 internally: contributes to maintainability
 externally: contributes to usability

© Oscar Nierstrasz ESE — Software Quality ESE 11.50


Productivity, Timeliness,
Visibility
 External process attribute (visibility also
internal)

Productivity
 Amount of product produced by a process for
a given number of resources
 productivity among individuals varies a lot
 often:
productivity (∑ individuals) < ∑ productivity (individuals)

© Oscar Nierstrasz ESE — Software Quality ESE 11.51


Productivity, Timeliness, Visibility ...
Timeliness
 Ability to deliver the Function
product on time
System
 important for marketing User needs capability
(“short time to market”)
 often a reason to sacrifice
other quality attributes
 incremental development
may provide an answer
Time
t0 t1 t2 t3 t4
initial
delivery redesign

© Oscar Nierstrasz ESE — Software Quality ESE 11.52


Productivity, Timeliness,
Visibility ...
Visibility (Transparency)
 Current process steps and project status are
accessible
 important for management
 also deal with staff turn-over

© Oscar Nierstrasz ESE — Software Quality ESE 11.53


Quality Control Assumption
Project Concern = Deliver on time and within budget

External (and Internal) Process Attributes


Product Attributes

Assumptions:

Internal quality External quality


Process quality Product quality

Control during project Obtain after project

Otherwise, quality is mere coincidence!


© Oscar Nierstrasz ESE — Software Quality ESE 11.54
NB:
NB: Quality
Quality Management
Management
should
should bebe separate
separate from
from
The Quality Plan project
project management
management to
independence
independence
to ensure
ensure

A quality plan should:


 set out desired product qualities and how
these are assessed
 define the most significant quality attributes
 define the quality assessment process
 i.e., the controls used to ensure quality
 set out which organisational standards
should be applied
 may define new standards,
 i.e., if new tools or methods are used
© Oscar Nierstrasz ESE — Software Quality ESE 11.55
Software Quality Controls
1. Reviews
— Inspections for defect removal (product)
— Progress Assessment Reviews (product and
process)
— Quality reviews (product and standards)

2. Automated Software Assessment


— Measure software atributes and compare to
standards (e.g., defect rate, cohesion, etc.)
© Oscar Nierstrasz ESE — Software Quality ESE 11.56
Types of Quality Reviews
A quality review is carried out by a group of
people who carefully examine part or all of a
software system and its associated
documentation.

 Reviews should be recorded and records


maintained
 Software or documents may be “signed off” at a
review
 Progress to the next development stage is
thereby approved
© Oscar Nierstrasz ESE 11.57
ESE — Software Quality
Types of Quality Reviews

Review type Principal purpose
Driven by checklist
> detect detailed errors in any
Formal Technical
product
Reviews
> mismatches between
(a.k.a. design or
requirements and product
program inspections)
> check whether standards have
been followed.
Driven by budgets, plans and
schedules
> check whether project runs
Progress reviews according to plan
© Oscar Nierstrasz ESE — Software Quality ESE 11.58
> requires precise milestones
Review Meetings
Review meetings should:
 typically involve 3-5 people
 require a maximum of 2 hours advance
preparation

© Oscar Nierstrasz ESE — Software Quality ESE 11.59


Review Minutes
The review report should summarize:
1. What was reviewed
2. Who reviewed it?
3. What were the findings and conclusions?

The review should conclude whether the product is:


4. Accepted without modification
5. Provisionally accepted, subject to corrections (no follow-up review)
6. Rejected, subject to corrections and follow-up review

© Oscar Nierstrasz ESE — Software Quality ESE 11.60


Review Guidelines
1. Review the product, not the producer
2. Set an agenda and maintain it
3. Limit debate and rebuttal
4. Identify problem areas, but don’t attempt to solve every problem
noted
5. Take written notes
6. Limit the number of participants and insist upon advance
preparation
7. Develop a checklist for each product that is likely to be reviewed
8. Allocate resources and time schedule for reviews
9. Conduct meaningful training for all reviewers
10. Review your early reviews

© Oscar Nierstrasz ESE — Software Quality ESE 11.61


Sample Review Checklists (I)
Software Project Planning
1. Is software scope unambiguously defined and bounded?
2. Are resources adequate for scope?
3. Have risks in all important categories been defined?
4. Are tasks properly defined and sequenced?
5. Is the basis for cost estimation reasonable?
6. Have historical productivity and quality data been used?
7. Is the schedule consistent?
...

© Oscar Nierstrasz ESE — Software Quality ESE 11.62


Sample Review Checklists (II)
Requirements Analysis
1. Is information domain analysis complete, consistent and accurate?
2. Does the data model properly reflect data objects, attributes and
relationships?
3. Are all requirements traceable to system level?
4. Has prototyping been conducted for the user/customer?
5. Are requirements consistent with schedule, resources and
budget?
...

© Oscar Nierstrasz ESE — Software Quality ESE 11.63


Sample Review Checklists (III)
Design
1. Has modularity been achieved?
2. Are interfaces defined for modules and external system elements?
3. Are the data structures consistent with the information domain?
4. Are the data structures consistent with the requirements?
5. Has maintainability been considered?

...

© Oscar Nierstrasz ESE — Software Quality ESE 11.64


Sample Review Checklists (IV)
Code
1. Does the code reflect the design documentation?
2. Has proper use of language conventions been made?
3. Have coding standards been observed?
4. Are there incorrect or ambiguous comments?

...

© Oscar Nierstrasz ESE — Software Quality ESE 11.65


Sample Review Checklists (V)
Testing
1. Have test resources and tools been identified and acquired?
2. Have both white and black box tests been specified?
3. Have all the independent logic paths been tested?
4. Have test cases been identified and listed with expected results?
5. Are timing and performance to be tested?

© Oscar Nierstrasz ESE — Software Quality ESE 11.66


Review Results
Comments made during the review should be classified.
 No action.
 No change to the software or documentation is required.
 Refer for repair.
 Designer or programmer should correct an identified fault.
 Reconsider overall design.
 The problem identified in the review impacts other parts of the design.

Requirements
Requirements andand
specification
specification errors
errors may
may have
have
to
to be
be referred
referred to
to the
the client.
client.

© Oscar Nierstrasz ESE — Software Quality ESE 11.67


Queries?
Thank You all

You might also like