Upload
ravi-narayan-bhat
View
218
Download
0
Embed Size (px)
Citation preview
8/9/2019 Phases in Software Development
1/72
1
Phases in Software Development
Presenter:
Prof. N. L. Sarda
I.I.T. Bombay
8/9/2019 Phases in Software Development
2/72
2
Software Development Lifecycle Let us review the main steps
Problem Definition
Feasibility Study
Analysis
System Design
Detailed Design
Implementation
Maintenance A separate planning step for large
applications may be introduced afterfeasibility
8/9/2019 Phases in Software Development
3/72
3
Problem Definition To answer: What is the Problem
Where and by whom is the problem felt?
Meet users and Management and obtaintheir agreement that there is a problem
If problem exists, and it needs to be solved
It becomes a project
Commitment of funds implied
8/9/2019 Phases in Software Development
4/72
4
Problem Definition Prepare a brief statement of problem
Avoids misunderstandings
Get concurrence from user/management
Usually short : 1 or 2 pages
Estimate cost and schedule for the next
feasibility step
Estimate roughly overall project cost to giveusers a sense of project scope. The
estimates become more refined in later steps
8/9/2019 Phases in Software Development
5/72
5
Problem Definition This step is short; lasts a day or two
Proper understanding and characterization
of problem essential To discover cause of the problem
To plan directed investigation
Else, success is unlikely
8/9/2019 Phases in Software Development
6/72
6
Problem Definition Possible initial characterization of problems
Existing system has poor response time, i.e., it
is slow
Unable to handle workload
Problem of cost: existing system uneconomical
Problem of accuracy and reliability
Requisite information is not produced by system
Problem of security
8/9/2019 Phases in Software Development
7/72
7
Problem Definition document1. Project Title
2. Problem Statement: Concise statement of
problem, possibly in a few lines3. Project Objectives: state objective of the
project defined for the problem
4. Preliminary Ideas: possible solutions, if
any, occurring to user and/or analyst couldbe stated here.
8/9/2019 Phases in Software Development
8/72
8
Problem Definition document5. Project Scope: give overall cost estimate
as ballpark figure
6. Feasibility Study: indicate time and costfor the next step
Notes
Do not confuse between problems and
solutions e.g., develop computerized payrollcannot be a problem
No commitment is implied to preliminary ideas
8/9/2019 Phases in Software Development
9/72
9
Feasibility Study To get better understanding of problems and
reasons by studying existing system, if
available
Are there feasible solutions?
Is the problem worth solving?
Consider different alternatives
Essentially covers other steps of methodology(analysis, design, etc.) in a capsule form
Estimate costs and benefits for each
alternative
8/9/2019 Phases in Software Development
10/72
10
Feasibility Study Make a formal report and present it to
management and users; review here
confirms the following:
Will alternatives be acceptable
Are we solving the right problem
Does any solution promise a significant return
Users/management select an alternative
Many projects die here
8/9/2019 Phases in Software Development
11/72
11
Types of Feasibility Economical : will returns justify the
investment in the project ?
Technical : is technology available toimplement the alternative ?
Operational : will it be operationally feasible
as per rules, regulations, laws,
organizational culture, union agreements,etc. ?
8/9/2019 Phases in Software Development
12/72
12
Costs One-time (initial) costs include equipment,
training, software development,
consultation, site preparation Recurring costs include salaries, supplies,
maintenance, rentals, depreciation
Fixed and variable costs; vary with volume
of workload
8/9/2019 Phases in Software Development
13/72
13
Benefits Benefits could be tangible (i.e. quantifiable)
or intangible
Saving (tangible benefits) could include Saving in salaries
Saving in material or inventory costs
More production
Reduction in operational costs, etc.
8/9/2019 Phases in Software Development
14/72
14
Benefits Intangible benefits may include
Improved customer service
Improved resource utilization Better control over activities (such as
production, inventory, finances, etc.)
Reduction in errors
Ability to handle more workload
8/9/2019 Phases in Software Development
15/72
15
Estimating Costs How to estimate costs so early in the project?
Decompose the system and estimate costs of
components; this is easier and more accurate
than directly estimating cost for the whole system
Use historical data whenever available
Use organization's standards for computing
overhead costs (managerial/secretarial support,
space, electricity, etc.)
Personnel (for development and operations) costs
are function of time, hence estimate time first
8/9/2019 Phases in Software Development
16/72
16
Financial Analysis Consider time-value of money; while
investment is today, benefits are in future!
Compute present value P for future benefit Fby
P = F/ (1+I)n
where I is prevailing interest rate and n is year of
benefit Take into account life of system: most
systems have life of 5-7 years
8/9/2019 Phases in Software Development
17/72
17
Financial Analysis Cost is investment in the project, benefits
represent return
Compute payback period in which werecover initial investment through
accumulated benefits
Payback period is expected to be less than
system life ! Are there better investment alternatives?
8/9/2019 Phases in Software Development
18/72
18
FEASIBILITY STUDY Report1.0 Introduction:
A brief statement of the problem, the environment
in which the system is to be implemented, and
constraints that affect the project
2.0 Management Summary and Recommendations:
Important findings and recommendations
3.0 Alternatives:A presentation of alternative system specifications;
criteria that were used in selecting the final
approach
FEASIBILITY STUDY
8/9/2019 Phases in Software Development
19/72
19
FEASIBILITY STUDY 4.0 System Description
An abbreviated version of information contained
in the System-Specification or reference to thespecifications
5.0 Cost-Benefit Analysis
6.0 Evaluation of Technical Risk
7.0 Legal Ramifications (if any)8.0 Other Project-Specific Topics
8/9/2019 Phases in Software Development
20/72
20
Requirements Analysis Objective: determine what the system must do
to solve the problem (without describing how)
Done by Analyst (also called RequirementsAnalyst)
Produce Software Requirements Specifications
(SRS) document
Incorrect, incomplete, inconsistent, ambiguous
SRS often cause for project failures and
disputes
8/9/2019 Phases in Software Development
21/72
21
Requirements Analysis A very challenging task
Users may not know exactly what is needed or
how computers can bring further value to what
is being done today
Users change their mind over time
They may have conflicting demands
They cant differentiate between what is possible
and cost-effective against what is impractical(wish-list)
Analyst has no or limited domain knowledge
Often client is different from the users
8/9/2019 Phases in Software Development
22/72
22
SRS SRS is basis for subsequent design and
implementation
First and most important baseline Defines contract with users
Basis for validation and acceptance
Cost increases rapidly after this step;
defects not captured here become 2 to 25times more costly to remove later
8/9/2019 Phases in Software Development
23/72
23
SRS It identifies all functional (inputs, outputs,
processing) and performance requirements,and also other important constraints (legal,
social, operational) Should be adequately detailed so that
Users can visualize what they will get
Design and implementation can be carried out
Covers what and how at business level; e.g., What: calculate take-home pay
How: procedure (allowances, deductions, taxesetc.)
8/9/2019 Phases in Software Development
24/72
24
Analysis Process Interviewing clients and users essential to
understand their needs from the system
Often existing documents and current modeof operations can be studied
Long process: needs to be organizedsystematically Interviewing, correlating, identifying gaps, and
iterating again for more details Focus on what gets done or needs to be done
Focus on business entities, their interactions,business events,
Analysis Process
8/9/2019 Phases in Software Development
25/72
25
Analysis Process Identify users and important business entities
Get functional (domain) knowledge
Interview users or get details through
questionnaires
Examine existing system : study existing forms,
outputs, records kept (files, ledgers,
computerized systems)
Often goes outside in : what outputs needed,
which inputs provide data, what processing done,
what records kept, how records updated, .. (i.e.,
go inwards from system boundaries)
8/9/2019 Phases in Software Development
26/72
26
Interviews Identify users, their roles and plan
interviews in proper order to collect details
progressively and systematically
Conducting interviews is an art !
Workout scope, durations, purpose
Keep records and verify/confirm details
Needs to sometimes prompt users invisualizing requirements
Need good communication skills, domain
knowledge, patience,
8/9/2019 Phases in Software Development
27/72
27
Organizing Findings Massive amount of information is collected
from interviews, study of existing systems
Need to be organized, recorded, classifiedand conceptualized (at multiple level of
details)
Tools/repositories available (describe
inputs, outputs, files, computations, usages,functions): help in checking consistency and
completeness
8/9/2019 Phases in Software Development
28/72
28
Organizing Create models or projections from different
perspectives
Way to handle complexity (divide-and-conquer)
Hide unnecessary details
Reduces errors, ensures consistency/completeness
Data-flow diagrams (for processing), entity-
relationship models (for data domain) and objectmodels commonly used
SRS format is great help in organizing requirements
in details
8/9/2019 Phases in Software Development
29/72
29
Structured Analysis Focuses on functions/processes and data
flowing between them
Uses top-down decomposition approach Initially see the application as a single process
and identify inputs, outputs, users and data
sources
Decompose the process into sub processes,
show data flows for them
Function Decomposition and Data Flow
Diagrams (FDD, DFD) very useful
8/9/2019 Phases in Software Development
30/72
30
Structured Methodology Study existing system: What is done and how
Prepare physical current DFD
Convert this DFD to logical DFD
Remove physical implementation-specific details
Define boundary for automation (scope)
Prepare DFD for proposed system - requiresinnovation, experience, vision Incorporate new needs
Improve work flows (BPR: business processre-engg)
Introduce efficiency/effectiveness
8/9/2019 Phases in Software Development
31/72
31
Requirement Specification Format(Based on IEEE Recommendation)
1. Introduction
1.1 PURPOSE: clearly state purpose of this document1.2 SCOPE: by whom and how it will be used
1.3 Definitions: Acronyms, Abbreviations as
applicable
1.4 REFRENCES: to other documents1.5 Overview of Developers Responsibilities: In terms
of development, installation, training, maintenance,
etc.
8/9/2019 Phases in Software Development
32/72
32
Requirement Specification Format2. GENERAL DESCRIPTION
2.1 PRODUCT PERSPECTIVE: relationship with
other products and principle interfaces
2.2 PRODUCT FUNCTIONS OVERVIEW: general
overview of tasks; including data flow diagrams
2.3 USER CHARACTERISTICS: who they are and
what training they may need
2.4 GENERAL CONSTRAINTS: about schedule,resources, cost, etc.
8/9/2019 Phases in Software Development
33/72
33
Requirement Specification Format 3.1 FUNCTIONAL REQUIREMENT
3.1.1 INTRODUCTION
3.1.2 INPUTS3.1.3 PROCESSING
3.1.4 OUTPUTS
3.2.. (repeat similarly for each function)
8/9/2019 Phases in Software Development
34/72
34
Requirement Specification Format 4. External Interface Requirements
4.1 User Interfaces: a preliminary user manual
giving commands, screen formats, outputs,
errors messages, etc.
4.2 Hardware Interfaces: with existing as well as
new or special purpose hardware
4.3Software Interfaces: with other software
packages, operating systems, etc.
5. Performance Requirements
Capacity requirements (no of users, no of files),
response time, through-put (in measurable terms)
8/9/2019 Phases in Software Development
35/72
35
Requirement Specification Format 6. Design Constraints
6.1 Standards Compliance: software development
standards as well as organizational standards
(e.g., for reports, auditing)6.2 Hardware Limitations: available machines, `
operating systems, storage capacities, etc.
7 Other Requirements
Possible future extensions
Note:
All sections are not required for all projects.
8/9/2019 Phases in Software Development
36/72
36
System Design Objective : To formulate alternatives about
how the problem should be solved
Input is SRS from previous step
Consider several technical alternatives
based on type of technology, automation
boundaries, type of solutions (batch/on-line),
including make or buy Propose a range of alternatives : low-cost,
medium cost and comprehensive high cost
solutions
8/9/2019 Phases in Software Development
37/72
37
Alternatives For each alternative, prepare high-level
system design (in terms of architecture, DBdesign, ); prepare implementation
schedule, carry out cost-benefit analysis Prepare for technical and management
review Costs rise sharply hereafter
Costs can be quantified better at this stage Technical review uncovers errors, checks
consistency, completeness, alternatives,
Phase ends with a clear choice
8/9/2019 Phases in Software Development
38/72
38
Design goals Processing component: main alternatives
Hierarchical modular structure in functional
approach
Object-oriented model and implementation
Different design methodologies for
functional and OO
Data component Normalized data base design using ER model
De-normalization for performance
Physical design : indexes
8/9/2019 Phases in Software Development
39/72
39
System Architecture Decompose a complex system:
Partitions (vertical)
Layers (horizontal)
Define subsystems/modules as building blocks Modules make calls on each other
Pass data, obtain results
Maximize module independence and minimize module
interdependence Cohesion and coupling characteristics
Essential for maintenance
Decompose until manageable units for coding and
testing obtained
8/9/2019 Phases in Software Development
40/72
40
Structure Chart Used in functional methodology to depict modules
and their calling relationships
Hierarchical structure: module at level icalls modules
at level i+1; control flow not shown Modules at higher levels generally do coordination
and control; modules at lower levels do i/o and
computations
Structure chart may show important data passingbetween modules, and also show main iterations and
decision-making without much details
Techniques are available to go from DFD to structure
charts
8/9/2019 Phases in Software Development
41/72
41
Structure Chart Notation
Modules on level 2 can be decomposed further
8/9/2019 Phases in Software Development
42/72
42
Notation
8/9/2019 Phases in Software Development
43/72
43
OO Approach Large systems decomposed into packages
Design consists of classes
Have structure (properties)
Have behavior (methods/operations)
Inheritance major feature in OO for re-use
Class diagrams show static structure of the
system Interaction diagrams are used to capture
dynamic behavior of classes and objects
8/9/2019 Phases in Software Development
44/72
44
Design Document Format1. Introduction2. Problem Specification: include here the data-flow
diagrams, entry-relationship diagrams
3. Software structure: give the high-level software
structure chart identifying major modules and major data
elements in their interfaces
4. Data Definitions: for major data structure, files and
database
5. Module Specifications: indicate inputs, outputs, purposeand subordinate modules for each software module
6. Requirements Tracing: indicate which modules meet
which requirements
8/9/2019 Phases in Software Development
45/72
45
Detailed Design Specific implementation alternative already
selected in previous step giving
Overall software structure
Modules to be coded
Database/file design
In this step, each component is defined
further for implementation
8/9/2019 Phases in Software Development
46/72
46
Detailed Design
Deliverables include
Program specifications (e.g. psuedo-code)
File design (organization, access method)
Hardware specifications (as applicable)
Test plans
Implementation schedule
Ends in technical review
8/9/2019 Phases in Software Development
47/72
47
Implementation
Programs are coded, debugged and documented
Initial creation of data files and their verification
Individual modules as well as whole system istested
Operating procedures are designed
User does acceptance of the system
System is installed and switch-over affected
8/9/2019 Phases in Software Development
48/72
48
Operations & Maintenance Systems must continue to serve user needs
correctly and continuously
Maintenance activities consist of
Removing errors Extending present functions
Adding new functions
Porting to new platforms
8/9/2019 Phases in Software Development
49/72
49
Design Technique and Tools Study issues and important parameters in
design of each component
Output design
Input design
File design
Software architecture design
8/9/2019 Phases in Software Development
50/72
50
Techniques and tools Study useful techniques
Data Flow Diagrams
E-R Diagrams
Data Dictionary
Program Structure Charts
Structured Programming
Program Testing
Understand role of CASE tools in software
development.
8/9/2019 Phases in Software Development
51/72
51
Data Dictionary It is a repository (i.e., catalog) of information
about a system (which gets collected during
various phases)
Definition of data
Structure of data
Usage of data (in processing)
8/9/2019 Phases in Software Development
52/72
52
Data dictionary It is a very useful tools as it
Permits better documentation control and
management of data about data
Facilitates standardization in data usage
Prevents errors, inconsistencies and
redundancy in data definitions
Enables cross-referencing and check for
completeness Acts as a valuable input in analysis and design
activities and reduces development and
implementation effort
8/9/2019 Phases in Software Development
53/72
53
Data Dictionary It stores data about the following :
Data element
name, description, synonym, type, length, validation,
criteria Record ( or group of data elements)
name, description, content(data elements and/or
groups), optional elements, repeated elements(arrays)
File/data store
name, description, associated record(s), volume,
access keys, file organization
8/9/2019 Phases in Software Development
54/72
54
Data Dictionary Data flows (includes inputs and outputs)
name, description, record name, source, destinations,
volume)
External entities
Programs (or, processes)
Name, description, level number, frequency of execution,
programming language, author
8/9/2019 Phases in Software Development
55/72
55
Data Dictionary Data Dictionary also stores relationships
between above entities (cross-referencing
info)
which programs make an application
which programs use what files and how
DD may be automated or manual
Often part of CASE tool
8/9/2019 Phases in Software Development
56/72
56
CASE Tools Computer Assisted Software Engineering
(CASE)
Provides a set of tools for analysis and
design tasks
Provides a methodology/environment for
building software
CASE Tools
8/9/2019 Phases in Software Development
57/72
57
CASE Tools Benefits of CASE
Improves productivity by providing assistance indevelopment activities
Automates tedious tasks (e.g., drawing andediting of diagrams), version management
Permits checks for consistency andcompleteness in data collected and developmentsteps
Ensures uniform and consistent developmentmethodology
Improves quality of software (as methodology isenforced and quality control can be applied)
8/9/2019 Phases in Software Development
58/72
58
CASE Tools CASE tool typically include:
Diagramming tools to support analysis, design
and documentation
Data flow diagrams E-R diagrams
Program structure charts
OO design
Data dictionary for gathering information and for
checking consistency and completeness
Design tools (e.g., for database schema design
from E-R diagrams)
8/9/2019 Phases in Software Development
59/72
59
CASE Tools Interface generators for defining dialogs
(screens), inputs, reports, etc. (useful for
prototypes)
Code generators: converting specifications intosource code
Management tools: project management
facilities for scheduling of activities, allocation
of resources and tracking of progress
8/9/2019 Phases in Software Development
60/72
60
Design Guidelines/approaches Let us review design techniques for some of
the main components of a software system
Database design
Report design
Input design in general and interactive dialogue
design in particular
8/9/2019 Phases in Software Development
61/72
61
Database Design 2-step process: logical design and physical
design
Logical design: what data to be stored
Examine data contained in data stores in DFD
Develop thorough understanding of information
domain of the application
Represent the domain by E-R diagram which
shows logical data relationships
Carry out logical database design from ER
diagram
Identity key fields
8/9/2019 Phases in Software Development
62/72
62
Database Design
Physical design: decide how many files,
content of each file and file organization
Based on how data is accessed/processed
Statistical characterization of data
8/9/2019 Phases in Software Development
63/72
8/9/2019 Phases in Software Development
64/72
64
Report Design Obtain following details
Destination: external or internal
Nature of report: detailed report, summary
report, exceptional report, periodic or ad hocreport
Information need served by the report and
contents of report
When, how often, and volume of output Action to be taken at destination and time-frame
for action
Final disposal of report (file, destroy)
8/9/2019 Phases in Software Development
65/72
65
Report design Report design includes
Content design
Data items, tables, aggregates (control totals),
headings, charts, Content sequencing
Content presentation
Format, editing of values, spacing, layout,
Pre-printed forms
Exercise: study some familiar outputs:
railway ticket, LIC premium notice, Cash
Receipt, Library claims,
8/9/2019 Phases in Software Development
66/72
66
Input Design
Objectives
Data capture at source to suit the environment and
operational conditions
Keep volume minimum: only capture relevant data;capture static data only once
Avoid errors; design data validation and controls
8/9/2019 Phases in Software Development
67/72
67
Input design Input Design Consists of
Identifying input contents based on purpose
Sequencing values
Layout design: spacing, special boxes, etc.
Including controls for validation
Developing clear instructions for input
preparation
8/9/2019 Phases in Software Development
68/72
68
Input Design Common validation criteria
Type check (numeric or not)
Range or limit check
Consistent relationships between items
Check digit
Table look-up for coded items
Hash totals (i.e. controls totals)
Record count
Ex: study these input forms: railway
reservation, IIT JEE application
8/9/2019 Phases in Software Development
69/72
69
Interactive Dialog (GUI) Design Required for on-line systems
Immediate response expected
Dialog may contain command or data
Need for security and integrity
Authorization and access control
On-line data validation
Provide for error correction and undoing anaction
Provide on-line help
Simplify interaction using special function keys
8/9/2019 Phases in Software Development
70/72
70
Interactive Dialog Design Provide hierarchical ordering of dialogs and
permit users to go forwards and backwards
Dialog types: textual commands, menubased (with nested menus, pull-down
menus), natural language, or voice
This is an area of study by itself
8/9/2019 Phases in Software Development
71/72
71
Summary Each phase has a well defined task and a
deliverable
Feasibility establishes alternatives and
carries out cost-benefit analysis
Requirements analysis is very challenging
and SRS forms the first baseline
Design step consists of architecture,database and interface design
Each phase ends in technical and
management review
8/9/2019 Phases in Software Development
72/72
THANK YOU