Tải bản đầy đủ (.ppt) (45 trang)

Introduction to Software Engineering ppt

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (121.16 KB, 45 trang )

Introduction to Software
Engineering
Outline

Nature of software projects

Engineering approaches

Software Process

A process step

Characteristics of a good process

Waterfall model for development

Other models

Project planning
Software systems

Ubiquitous, used in variety of applications
- Business, engineering, scientific
applications

Simple to complex, internal to public,
single function to enterprise-wide, one
location to distributed, batch or real time,
informational to mission-critical,…
Challenge in large projects


Developing large/complex software application is
very challenging
- Effort intensive
- High cost
- Long development time
- Changing needs for users
- High risk of failure, user acceptance,
performance, maintainability

Quite different from one-time programs where
author and user are same!
Successful software system

Software development projects have not always
been successful

When do we consider a software application
successful?
- Development completed
- It is useful
- It is usable, and
- It is used

Cost-effectiveness, maintainability implied
Reasons for failure

Schedule Slippage

Cost over-runs


Does not solve user’s problem

Poor quality of software

Poor maintainability
Reasons for failure…

Ad hoc software development results in such
problems
- No planning of development work (e.g. no
milestones defined)
- Deliverables to user not identified
- Poor understanding of user requirements
- No control or review
- Technical incompetence of developers
- Poor understanding of cost and effort by both
developer and user
Engineering: other disciplines

Large projects common and successfully
- Building bridges, dams
- Power plants
- Aircrafts, missiles,…

“engineering” a solution:
- To design, develop (build, fabricate) an artifact
that meets specifications efficiently, cost-
effectively and ensuring quality
- Using scientific principles
Engineering


Requires well-defined approach: repeatable,
predictable

Large projects requires managing the project itself
- Manage people, money (cost), equipment,
schedule
- Scale makes big difference: compare building a
hut, 2-storeyed house, or 50-storeyed apartment
building

Quality extremely important: relates to failures,
efficiency, usability,…
- People willing to pay for quality!
Large Projects

Involve different types of people
- Large building: architect, civil engineer,
electrical engineer, workers (masons,
carpenters),

Continuous supervision for quality
assurance
- On site supervisors (check cement/steel
quality, ensuring proper mix of sand &
cement,…)
Large projects…

Many deliverables: architecture plan,
model, structure diagrams, electrical

cabling layouts,…

Standards, regulations, conventions need
to be followed

Steps, milestones defined and reviews are
carried out; progress is visible
Software projects

Software is different from other products
- Cost of production concentrated in
development
- Maintenance consists of making
corrections and enhancing or adding
functions
- Progress in development is difficult to
measure
Apply Engineering Approach

Hence planning and control even more important in
software development -> engineering approach
- Attempt to estimate cost/effort
- Plan and schedule work
- Involve users in defining requirements
- Identify stages in development
- Define clear milestones so that progress can be
measured
- Schedule reviews both for control and quality
- Define deliverables
- Plan extensive testing

Job of Software developer is difficult

Dealing with users
- Ill-defined requirements
- Concern with ease-of-use and response
time

Dealing with technical people
- Concerned with coding, databases, file
structures, etc.

Dealing with management
- Concerned with return on their investment
- Cost-benefit analysis
- Schedule
For success in large software
development, it is important to follow an
engineering approach, consisting of a
well-defined process
Software Process

Process consists of activities/steps to be
carried out in a particular order.

Software process deals with both technical
and management issues

Consists of different types of process

Process for software development:

produces software as end-result
- multiple such processes may exist
- a project follows a particular process
Process types

Process for managing the project
- defines project planning and control
- effort estimations made and schedule
prepared
- resources are provided
- feedback taken for quality assurance
- monitoring done
Process types…

Process for change and configuration
management.
- Resolving requests for changes
- Defining versions, their compositions
- Release control

Process for managing the above processes
themselves
- Improving the processes based on new
techniques, tools, etc.
- Standardizations and certifications (ISO, CMM)
Multiple processes

A large software development company may
have multiple development processes
A. For client-server based conventional

applications (sales processing, payroll)
B. For enterprise-level (ERP) projects based on
packages and customization
C. For web-based e-commerce type
D. For data-warehousing/decision-support type

The company may have many projects in each
category
Step in a process

Each step has a well-defined objective

Requires people with specific skills

Takes specific inputs and produces well-
defined outputs

Step defines when it may begin (entry
criteria) and when it ends (exit criteria)

Uses specific techniques, tools,
guidelines, conventions
Process step…

Step must be executed as per project plan that
gives duration, effort, resources, constraints, etc.

It must produce information for management so
that corrective actions can be taken
- E.g. adding more resources


A steps ends in a review (V&V)
- Verification: check consistency of outputs with
inputs (of the step)
- Validation: check consistency with user needs
Process step
Project control
info
Info for
management
(exit criteria)
Review
V &V
Inputs
Actions to
be carried
out
(entry criteria)
outputs
Characteristics of a Good Process

Should be precisely defined – no ambiguity
about what is to be done, when, how, etc.

It must be predictable – can be repeated in other
projects with confidence about its outcome
- Predictable with respect to effort, cost:
-> Project A: Web-based library application done
by 3 persons in 4 months
-> another project B (guest house bookings),

similar in complexity should also take about 12
persons in a month.
A Good Process…

Predictable for quality, with respect to number
and type of defects, performance

Predictable process is said to be “under
statistical control’, where actual values are close
to expected values

It supports testing and maintainability
- Maintenance by third party
- Follow standards, provide necessary
documentation
- This characteristic differentiates between
prototype and product
A Good Process…

Facilitates early detection of and removal of
defects
- Defects add to project cost
- Late detection/correction is costly

It should facilitate monitoring and improvement
- Based on feedback
- Permit use of new tools, technologies
- Permit measurements

×