Download as pdf or txt
Download as pdf or txt
You are on page 1of 24

Software Engineering

Lecture 1
Introduction to Software Engineering

1
Software Definition
⚫ Software is:
◦ A product
◦ A vehicle for delivering another product
⚫ Software is collection of:
◦ Program
◦ Documentation
◦ Data
◦ Procedure

2
Software Characteristics
⚫ Software is engineered, not manufactured
⚫ Software does not wear out
⚫ Most software continues to be custom
built

3
Failure Curves for software

4
Software Myths
1. Management Myths
◦ Myth: If we get behind schedule, add more
programmers.
◦ Reality: Adding people to a late software project
makes it later.
2. Practitioner’s Myths
◦ Myth: Software Engineering will make us create many
and unnecessary documentation.
◦ Reality: Software engineering is not about creating
documents. It is about creating quality. Better quality
leads to reduced rework. Reduced rework results in
faster delivery times.
5
Software Myths
3. Customer Myths
◦ Myth: A general statement of objectives is sufficient to
begin writing programs—we can fill in the details
later.
◦ Reality: Although a comprehensive and stable
statement of requirements is not always possible, an
ambiguous “statement of objectives” is a recipe for
disaster. Unambiguous requirements (usually derived
iteratively) are developed only through effective and
continuous communication between customer and
developer.

6
Software Crisis
⚫ During 1960-1970, most software
development faced the following
problems:
◦ Overdue schedule
◦ Exceeding initial budget
◦ Inadequate software quality
◦ High software maintenance cost

7
Software Engineering
⚫ Software engineering is first coined in 1968 at a
software conference organized by NATO at
Garmisch, Germany as a solution to the
software crisis.
⚫ Software engineering is the establishment and
use of sound engineering principles in order to
obtain economically software that is reliable and
works efficiently on real machines.

8
Engineering Principles
⚫ The engineering principles used in
software engineering comprises:
◦ Analysis
◦ Design
◦ Implementation
◦ Testing

9
Software Engineering Layers

Software Engineering

tools
methods
process model

10
Software Engineering Layers (cont.)
⚫ Tools: Software Tools (Word Processors,
Diagramming Tools, Project Tools,
Compilers, etc.)
⚫ Methods: Modeling methods (DFD, ERD,
Gantt Chart,etc.)
⚫ Process: Waterfall, Spiral, Incremental, etc.

11
Software Engineering Phases
⚫ Definition Phase (What)
◦ Systems Engineering, Project Planning,
Requirements Analysis
⚫ Development Phase (How)
◦ Software Design, Code Generation, Software
Testing
⚫ Support Phase (Change)
◦ Correction, Adaptation, Enhancement,
Prevention

12
Umbrella Activities
⚫ Umbrella activities are activities that are
applied throughout the software process:
◦ Project tracking and control
◦ Software Quality Assurance
◦ Software Configuration Management
◦ Document Preparation and Management

13
Capability Maturity Model
⚫ CMM is used to determine an organization’s current
state of process maturity
⚫ Five levels of CMM:
◦ Level 1: Initial (Ad Hoc)
◦ Level 2: Repeatable (Basic project management)
◦ Level 3: Defined (Process standardization)
◦ Level 4: Managed (Quantitative Management)
◦ Level 5: Optimized (Continuous process improvement)

14
CMM Level 1: Initial
⚫ The software process is characterized as
ad hoc and occasionally even chaotic.
Few processes are defined, and success
depends on individual effort.

15
CMM Level 2: Repeatable
⚫ Basic Project Management processes are
established to track cost, schedule, and
functionality.

16
CMM Level 3: Defined
⚫ The process is “tailored from the
organization’s set of standard processes
according to the organization’s tailoring
guidelines, and contributes work
products, measures, and other
process-improvement information to the
organizational process assets”.

17
CMM Level 4: Managed
⚫ Detailed measures of the software
process and product quality are collected.

18
CMM Level 5: Optimized
⚫ The process area is adapted and
optimized using quantitative means to
meet changing customer needs and to
continually improve the efficacy of the
process area under consideration.

19
Personal Software Process
⚫ The Personal Software Process (PSP) emphasizes
personal measurement of both the work product that is
produced and the resultant quality of work product
(Humphrey 1997).
⚫ The PSP process model defined five framework
activities:
◦ Planning
◦ High-Level Design
◦ High-Level Design Review
◦ Development
◦ Postmortem

20
Personal Software Process (cont.)
⚫ PSP stresses the need for each software
engineer to identify errors early and, as
important, to understand the types of errors
that he/she is likely to make.
⚫ This is accomplished through a rigorous
assessment activity performed on all work
products produced by the software engineer.
⚫ PSP can improve the productivity and
software quality. However, PSP has not been
widely adopted throughout the industry due
to human nature and organizational inertia.
21
Team Software Process (TSP)
⚫ TSP is an extension of PSP.
⚫ The goal of TSP is to build a “self-directed” project team
that organizes itself to produce high-quality software:
◦ Build self-directed teams that plan and track their work,
establish goals, and own their processes and plans.
◦ Show managers how to coach and motivate their teams.
◦ Accelerate software process improvement.
◦ Provide improvement guidance to high-maturity organizations.
◦ Facilitate university teaching of industrial-grade team skills.

22
Summary
⚫ Software Engineering is a discipline that
integrates process, methods, and tools for the
development of computer software.
⚫ The Capability Maturity Model Integration
(CMMI) is a comprehensive process
meta-model that describes the specific goals,
practices, and capabilities that should be present
in a mature software process.
⚫ Personal and Team Software process emphasize
measurement, planning, and self-direction as key
ingredients for a successful software process.
23
References
⚫ Pressman, Chapter 1, 2

24

You might also like