Lecture 1

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

What is a project?

 A sequence of connected and related activities


(requirement engineering, system engineering,
coding, testing, documentation, controlling, …)
that must be completed by a specific time, within
budget, and according to specification.

 A temporary endeavor undertaken to create a


unique product or service
Software Projects vs Other Projects

 Invisibility – progress is not immediately


visible
 Complexity – financially software products
contain more complexity than other
engineered artefacts.
 Flexibility the ease with which software can
be changed is usually seen as one of its
strengths.
Characteristics distinguishing projects:

 Planning is required
 Specific objectives are to be met or specified
product is to be created.
 Work is carried out for someone other than
yourself
 Work involves several specialisms
 Work is carried out in several phases
 Resources available for use on the project are
constrained
 The project is large or complex
Project stakeholders

 Every project has stakeholders.


 These are the people who have a stake or
interest in the project. Must be identified as
early as possible in order to establish
adequate communication channels with
them from the start.
Project stakeholders
 Maybe:
 Internal to the project – controlled by project leader
 External to the project team but within the same
organisation e.g. assistance of users to carry out system
testing. Commitment has to be negotiated.
 External to both the project team and the organization
e.g. contractors who will carry out work for the project.
The relationship is likely to be based on a legally binding
contract.
 Different types of stakeholders have different objectives
and the job of a successful project leader is to recognize
these different interests and be able to reconcile them.
Therefore the project leader needs to be a good
communicator and negotiator.
Software Project Management

 A software project has a specific duration,


consumes resources and produces work
products.
 Every software project must have a
manager who leads the development team
and is the interface with the initiators,
suppliers and senior management.
 All technical and managerial activities
required to deliver the deliverables to the
client.
Software Project Management

Project management:
is the application of knowledge, skills, tools
and techniques to project activities to meet
project requirements
Software project management: is the
process of planning, organising, staffing,
monitoring, controlling and leading a
software project
Duties of the Project Manager

 Produces the Software Project Management


Plan (SPMP)
 Defines the organisational roles and allocates
staff to them.
 Controls the project by informing staff of their
part in the plan
 Leads the project by making the major
decisions and by motivating staff to perform
well.
 Monitors the project by measuring progress
and reports progress to initiators and senior
managers.
The Project Manager

 Negotiating:
 Involves conferring with others to come to
terms with them or reach an agreement.
Agreements may be negotiated directly or with
assistance.
 Negotiation areas may include scope, cost, and
schedule objectives, changes to scope, cost, or
schedule, contract terms and conditions.
 Innovating – coming up with new solutions
 Communication: Report progress
Software Project Management Plan
(SPMP)

 The controlling document for a software


project.
 Specifies the technical and managerial
approaches to develop the software product.
 Companion document to requirements analysis
document: Changes in either may imply changes
in the other document.
 SPMP may be part of project agreement.
Project Management Knowledge Areas

 Describes project management knowledge


and practice in terms of the various
component processes.
 9 knowledge areas
Project Management Knowledge
Areas
1. Project Integration Management
 Describes the processes required to ensure that the
various elements of the project are properly
coordinated.
 It consists of project plan development, project plan
execution, and integrated change control.

2. Project Scope Management


 Describes the processes required to ensure that the
project includes all the work required, and only the work
required, to complete the project successfully.
 It consists of initiation, scope planning, scope definition,
scope verification, and scope change control.
Project Management Knowledge Areas

3. Project Time Management


 Describes the processes required to ensure timely
completion of the project.
 It consists of activity definition, activity
sequencing, activity duration estimating, schedule
development, and schedule control.
4. Project Cost Management
 Describes the processes required to ensure that
the project is completed within the approved
budget.
 It consists of resource planning, cost estimating,
cost budgeting, and cost control.
Project Management Knowledge Areas

5. Project Quality Management


 Describes the processes required to ensure that the
project will satisfy the needs for which it was undertaken.
 It consists of quality planning, quality assurance, and
quality control.

6. Project Human Resource Management


 describes the processes required to make the most
effective use of the people involved with the project.
 It consists of organizational planning, staff acquisition,
and team development.
Project Management Knowledge Areas

7. Project Communications Management:


 Describes the processes required to ensure timely and
appropriate generation, collection, dissemination, storage, and
ultimate disposition of project information.
 It consists of communications planning, information
distribution, performance reporting, and administrative
closure.

8. Project Risk Management


 Describes the processes concerned with identifying, analyzing,
and responding to project risk.
 It consists of risk management planning, risk identification,
qualitative risk analysis, quantitative risk analysis, risk
response planning, and risk monitoring and control.
Project Management Knowledge Areas

9. Project Procurement Management


 Describes the processes required to acquire
goods and services from outside the
performing organization.
 It consists of procurement planning,
solicitation planning, solicitation, source
selection, contract administration, and
contract closeout.
Project Management Processes
 Project management processes describe, organize, and
complete the work of the project.
 Generally fall into one of two major categories:
 Product-oriented processes specify and create the
project’s product. Product oriented processes are
typically defined by the project life and vary by
application area.
 Project management processes and product-oriented
processes overlap and interact throughout the project.
For example, the scope of the project cannot be defined in
the
absence of some basic understanding of how to create the
product.
Management Control

 Management – the process of setting


objectives for a system and then monitoring
the system to see what its true performance
is.
 The actual performance is compared with
objectives and remedial action can be taken
when a discrepancy is found between the
two.
Measurement

 Measures can be divided into:


 Performance measures – measure the
characteristics of a system that has been delivered.
Important when trying to specify unambiguously
the quality requirements of a proposed system.
Examples are reliability , mean time between
failures and usability , time to learn a package.
 Predictive measures – give characteristics of a final
system during its development e.g. errors found
per KLOC at different stages of the project may
help to predict the correctness and reliability of
the final system
Software Development Process

 The manager of a software development project


has to ensure that all of the project activities follow
a certain predefined process, i.e. that the activities
are organized as a series of actions conducing to a
desirable end
 The activities are usually organized in distinct
phases, and the process specifies what artifacts
should be developed and delivered in each phase.
 The process provides means for control and
guidance of the individual team members and the
team as a whole, as it offers criteria for tracing and
evaluation of the project's deliverables and
activities.
Process Models

 It is absolutely necessary to follow a certain


predefined process in software development. It
helps developers understand, evaluate, control,
learn, communicate, improve, predict, and
certify their work.
 Since processes vary with the project's size,
goals, and resources, as well as the level at
which they are applied (e.g., the organization
level, the team level, or the individual level), it
is always important to define, measure,
analyze, assess, compare, document, and
change different processes.
Process Models

 Help in the software development

 Guide the software team through a set of


framework activities

 Process Models may be linear, incremental


or evolutionary
Waterfall Model

 Proceeds through several phases in a


systematic and sequential manner.
 Once a certain phase is finished it is
considered closed, and the work proceeds
with the next phase.
 It is however a rigid in the sense that it
doesn’t comply with the reality of
everchanging requirements and technology.
Waterfall model
.
Communication(
Initiation,
requirement
gathering)
Planning(Es
timation
,Scheduling,
etc)
Modeling
(Analysis and
Design)
Construction(
code and
testing)
Deployment(Del
ivery , Support
and feedback)
PROBLEMS IN WATERFALL MODEL

 Real projects rarely follow the sequential


flow since they are always iterative
 The model requires requirements to be
explicitly spelled out in the beginning,
which is often difficult
 A working model is not available until late
in the project time plan
2. Iterations

 Iterations in software development activities


and incremental development help reduce the
problem of rigidity of the model.
 Used when initial requirements are reasonably
well-defined and compelling need to provide
limited functionality quickly
 Functionality expanded further in later
releases
 Software is developed in increments
The Incremental Model
Communication Increment # n
Software functionality and features

Planning
Modeling Communication
Planning
Modeling
Construction Analysis
design
Construction
Code
test
Deployment
Delivery
Support
feedback

Deployment delivery of
nth increment
Increment#2

Communication
Planning
Modeling
Construction
Increment # 1 Deployment
Analysis
design Code
test
Delivery
Support
Delivery of
feedback
2nd increment

Communication
Planning
Modeling
Analysis Construction Deployment
design Code
test
Delivery
Support
feedback
delivery of
1ST increment

Project calendar time


THE INCREMENTAL MODEL

 Software released in increments


 1st increment constitutes Core product
 Basic requirements are addressed
 Core product undergoes detailed evaluation by
the customer
 As a result, plan is developed for the next
increment
Plan addresses the modification of core product
to better meet the needs of customer
 Process is repeated until the complete product
is produced
THE RAD MODEL
(Rapid Application Development)
 An incremental software process model.
 Having a short development cycle: Creates a
fully functional system within a very short
span time of 60 to 90 days.
 High-speed adoption of the waterfall model
using a component based construction
approach.
The RAD Model
Team # n
Modeling
Business modeling
Data modeling
Process modeling

Construction
Team # 2 Component reuse
automatic code
generation
Communication Modeling testing

Business modeling
Data modeling
Process modeling

Construction
Planning Team # 1 Component reuse
automatic code
generation
testing
Modeling
Business modeling Deployment
Data modeling integration
Process modeling delivery
feedback

Construction
Component reuse
automatic code
generation
testing
THE RAD MODEL

 Multiple software teams work in parallel on different


functions
 Modeling encompasses three major phases: Business
modeling, Data modeling and process modeling
 Construction uses reusable components, automatic
code generation and testing
Problems in RAD
 Requires a number of RAD teams
 Requires commitment from both developer and
customer for rapid-fire completion of activities
 Requires modularity
 Not suited when technical risks are high
EVOLUTIONARY PROCESS MODELS

 Software evolves over a period of time


 Business and product requirements often
change as development proceeds making a
straight-line path to an end product unrealistic
 Evolutionary models are iterative and as such
are applicable to modern day applications
Types of evolutionary models
 Prototyping
 Spiral model
 Concurrent development model
PROTOTYPING
 Mock up or model( throw away version) of a
software product
 Used when a customer defines a set of
objectives but does not identify input, output, or
processing requirements
Developer is not sure of:
 efficiency of an algorithm
 adaptability of an operating system
 human/machine interaction
Evolutionary Models: Prototype
Quick
Communication Plan

Modeling
Quick design

Construction
Deployment of prototype
delivery &
feedback
STEPS IN PROTOTYPING

 Begins with requirement gathering


 Identify whatever requirements are known
 Outline areas where further definition is
mandatory
 A quick design occur which leads to the
construction of prototype
 Prototype is evaluated by the customer
 Requirements are refined
 Prototype is turned to satisfy the needs of
customer
LIMITATION OF PROTOTYPING

 In a rush to get it working, overall software


quality or long term maintainability are
generally overlooked

 Use of inefficient algorithm


THE SPIRAL MODEL

 An evolutionary model which combines the


best feature of the classical life cycle and the
iterative nature of prototype model
 Include new element : Risk element
 Starts in middle and continually visits the
basic tasks of communication,
planning,modeling,construction and
deployment
Evolutionary Models: The Spiral
THE SPIRAL MODEL
1.COMMUNICATION
*Tasks required are establish effective communication between
developer
2.PLANNING
*Estimation
*Scheduling
*Risk analysis
3. MODELING
*Analysis
*Design
4. CONSTRUCTION
*Code
*Test
5. DEPLOYMENT
*Delivery
*Feedback
THE SPIRAL MODEL

 Realistic approach to the development of


large scale system and software
 Software evolves as process progresses
 Better understanding between developer
and customer
 The first circuit might result in the
development of a product specification
 Subsequent circuits develop a prototype
 And sophisticated version of software
THE CONCURRENT DEVELOPMENT
MODEL

Also called concurrent engineering


Constitutes a series of framework activities, software
engineering action, tasks and their associated states
All activities exist concurrently but reside in different
states
Applicable to all types of software development
Event generated at one point in the process trigger
transitions among the states
A FINAL COMMENT ON
EVOLUTIONARY PROCESS
 Difficult in project planning
 Speed of evolution is not known
 Does not focus on flexibility and
extensibility (more emphasis on high
quality)
 Requirement is balance between high
quality and flexibility and extensibility
THE UNIFIED PROCESS
 Evolved by Rumbaugh, Booch, Jacobson
 Combines the best features their OO models
 Adopts additional features proposed by other
experts
 Resulted in Unified Modeling Language(UML)
 Unified process developed Rumbaugh and Booch
 A framework for Object-Oriented Software Engineering
using UML
PHASES OF UNIFIED PROCESS

 INCEPTION PHASE

 ELABORATION PHASE

 CONSTRUCTION PHASE

 TRANSITION PHASE
The Unified Process (UP)
.
UNIFIED PROCESS WORK PRODUCTS

 Tasks which are required to be completed during


different phases
 Inception Phase
*Vision document
*Initial Use-Case model
*Initial Risk assessment
*Project Plan
 Elaboration Phase
 *Use-Case model
*Analysis model
*Software Architecture description
*Preliminary design model
*Preliminary model
UNIFIED PROCESS WORK PRODUCTS

 Construction Phase
*Design model
*System components
*Test plan and procedure
*Test cases
*Manual
 Transition Phase
*Delivered software increment
*Beta test results
*General user feedback
SOFTWARE REQUIREMENTS

 IEEE defines Requirement as :


1. A condition or capability needed by a user to
solve a problem or achieve an objective

2. A condition or capability that must be met


or possessed by a system or a system
component to satisfy contract, standard,
specification or formally imposed
documents
3. A documented representation of a condition
or capability as in 1 or 2
SOFTWARE REQUIREMENTS
Encompasses both the User’s view of the requirements(
the external view ) and the Developer’s view( inside
characteristics)
 User’s Requirements --
Statements in a natural language plus diagrams,
describing the services the system is expected to
provide and the constraints
 System Requirements
--Describe the system’s function, services and
operational condition
SOFTWARE REQUIREMENTS
 System Functional Requirements
--Statement of services the system should provide
--Describe the behavior in particular situations
--Defines the system reaction to particular inputs
 Nonfunctional Requirements
- Constraints on the services or functions offered by the system

--Include timing constraints, constraints on the development


process and standards
--Apply to system as a whole
 Domain Requirements
--Requirements relate to specific application of the system
--Reflect characteristics and constraints of that system
FUNCTIONAL REQUIREMENTS

Should be both complete and consistent


 Completeness
-- All services required by the user should be
defined
 Consistent
-- Requirements should not have
contradictory definition
NON-FUNCTIONAL REQUIREMENTS
Types of Non-functional Requirements
1.Product Requirements
 Specify product behavior
Include the following
 Usability
 Efficiency
 Reliability
 Portability
NON-FUNCTIONAL REQUIREMENTS

2.Organisational Requirements
Derived from policies and procedures
--Include the following:
Delivery
Implementation
Standard
NON-FUNCTIONAL REQUIREMENTS

3.External Requirements
 Derived from factors external to the system
and its development process
--Includes the following
 Interoperability
 Ethical
 Legislative
Different types of non-functional
requirements Non-functional
requir ements

Product Organisational External


r equir ements requir ements r equir ements

Efficiency Relia bility Portability Inter oper ability Ethical


requir ements r equir ements requir ements requir ements r equir ements

Usability Deli very Implementa tion Standar ds Leg islati v e


r equir ements requir ements requir ements requir ements requir ements

Perfor mance Space Pri vacy Safety


requir ements r equir ements r equir ements requir ements
PROBLEMS FACED USING THE
NATURAL LANGUAGE
 1. Lack of clarity
-- Leads to misunderstanding because
of ambiguity of natural language
2. Confusion
-- Due to over flexibility,sometime difficult
to find whether requirements are same or
distinct.
3. Amalgamation problem
-- Difficult to modularize natural language
requirements
The Software Requirements document
 Heninger suggests that there are 6 requirements
that requirement document should satisfy. It
should
 specify only external system behavior
 specify constraints on the implementation.
 Be easy to change
 Serve as reference tool for system maintainers
 Record forethought about the life cycle of the system.
 Characterize acceptable responses to undesired events
Purpose of SRS

 Communication between the Customer,


Analyst,system developers, maintainers, ..
 Firm foundation for the design phase
 Support system testing activities
 Support project management and control
 Controlling the evolution of the system
IEEE requirements standard

 Defines a generic structure for a


requirements document that must be
instantiated for each specific system.
 Introduction.
 General description.
 Specific requirements.
 Appendices.
 Index.
IEEE requirements standard

1.Introduction
1.1 Purpose
1.2 Scope
1.3 Definitions, Acronyms and Abbreviations
1.4 References
1.5 Overview
2. General description
2.1 Product perspective
2.2 Product function summary
2.3 User characteristics
2.4 General constraints
2.5 Assumptions and dependencies
3. Specific Requirements
- Functional requirements
-External interface requirements
- Performance requirements
- Design constraints
- Attributes eg. security, availability,maintainability,
transferability/conversion
- Other requirements
 Appendices
 Index
Project Phases

 All projects are divided into phases.


 All phases together are known as the
Project Life Cycle.
 Each phase is marked by completion of
Deliverables
Project life cycle

 1. Software Concept/Concept Exploration


 2. Requirements Analysis
Involves finding out the details concerning what the
users require of the system that the project is to
implement.
 3. Architectural Design
 4. Detailed Design
 5. Coding and Debugging: Includes writing the actual
code
 6. System Testing
 7. Deployment and Maintenance.
Classic Mistakes

Types
a. People-Related
 Undermined motivation
 Weak personnel
 Uncontrolled problem employees
 Adding people to a late project
 Customer-Developer friction.
 Unrealistic expectations
 Lack of stakeholder participation
Classic Mistakes

b. Process-Related
 Optimistic schedules
 Insufficient risk management.
 Contractor failure
 Insufficient planning.
 Abandonment of plan under pressure.
Insufficient management controls.
 Omitting necessary tasks from estimates
Classic Mistakes

c. Product-Related
 Requirements gold-plating.
 Feature creep.
 Developer gold-plating.
 Push-pull negotiation
Classic Mistakes

d. Technology-Related
 Overestimated savings from new tools and
methods.
 Switching tools in mid-project.
 Lack of automated source-code control

You might also like