4 sdlc and stlc

33
1 System Analysis and Design Anyone who has never made a mistake has never tried anything new. The Systems Analysis and Design (SAD) is the process of developing Information Systems (IS Acquiring and installing system environment; creating and testing databases, creating test case procedures, creating test data, coding, code refining, perform test readiness review and procurement activities ) that effectively use hardware, software, data, processes, and people to support the company’s business objectives. System A set of detailed methods, procedures, and routines established or formulated to carry out a specific activity , perform a duty, or solve a problem. Analysis The process of identifying problems, resources, opportunities, requirements and constraints Design The business of finding a way to meet the functional requirements within the specified constraints using the available technology.

description

Software Development Life Cycle and Testing Life Cycle

Transcript of 4 sdlc and stlc

Page 1: 4 sdlc and stlc

1

System Analysis and Design

Anyone who has never made a mistake has never tried anything new.

The Systems Analysis and Design (SAD) is the process of developing Information Systems (IS –

Acquiring and installing system environment; creating and testing databases, creating test case

procedures, creating test data, coding, code refining, perform test readiness review and procurement

activities ) that effectively use hardware, software, data, processes, and people to support the

company’s business objectives.

System

A set of detailed methods, procedures, and routines established or formulated to carry out a specific

activity , perform a duty, or solve a problem.

Analysis

The process of identifying problems, resources, opportunities, requirements and constraints

Design

The business of finding a way to meet the functional requirements within the specified constraints

using the available technology.

Page 2: 4 sdlc and stlc

2

What is Software Development Life Cycle (SDLC)?

Anyone who has never made a mistake has never tried anything new.

Software Development Life Cycle (sometimes referred to as the System

Development Life Cycle) is a process of creating or altering information

systems, and the models and methodologies that people use to develop.

It adheres to different phases or stages of a project from inception through

completion and delivery of the final product and maintenance too.

Computer systems are complex and often (especially with the recent rise of

service-oriented architecture) link multiple traditional systems potentially

supplied by different software vendors. To manage this level of complexity,

a number of SDLC models or methodologies have been created, Waterfall,

Spiral, Incremental, Agile etc. The oldest of these, and the best known, is

the waterfall model: a sequence of stages in which the output of each stage

becomes the input for the next.

Page 3: 4 sdlc and stlc

3

Software Development Life Cycle

Anyone who has never made a mistake has never tried anything new.

It has 3 identifiable phases. SDLC phases serve as a programmatic guide to

project activity and provide a flexible but consistent way to conduct

projects to a depth matching the scope of the project.

1. Definition

2. Development

3. Maintenance

Definition phase focuses on WHAT

What information is to be processed?

What functions and performances are desired?

What interfaces are to be established?

What design constraints exists?

What validation criteria is required to define a success system?

Page 4: 4 sdlc and stlc

4

Software Development Life Cycle

Anyone who has never made a mistake has never tried anything new.

Development phase focuses on HOW

How the database should be designed?

How the software architecture to be defined?

How the design will be translated into code?

How testing will be performed?

There are 3 specific steps in development phase are

1. Design

2. Coding

3. Testing (ignored due to lack of time, due time to market, additional

cost involved, lack of testing requirement understanding etc.)

Page 5: 4 sdlc and stlc

5

Software Development Life Cycle

Anyone who has never made a mistake has never tried anything new.

Maintainability is defined as the ease with which software can be

understood, corrected, adapted and enhanced.

Maintenance Phase focuses on CHANGE

Error correction.

Adoption required as the software environment evolves.

Enhancements brought about by changing customer requirements.

Reengineering carried out for performance improvements.

Page 6: 4 sdlc and stlc

6

Software Development Life Cycle

Anyone who has never made a mistake has never tried anything new.

Page 7: 4 sdlc and stlc

7

Software Development Life Cycle - Phases

Anyone who has never made a mistake has never tried anything new.

Phase 1. Initiation (Identifies a need or an opportunity)

Phase 2. System concept development (Prepares systems boundary document,

perform cost benefit analysis, Risk management plan and feasibility study)

Phase 3. Planning (Develop project management plan and other planning docs)

Phase 4. Requirement Analysis (Analyses user needs and develops user

requirements. Create detailed functional requirements document (FRD))

Phase 5. Design (Transforms user requirements into complete/detailed system

design. It focuses on HOW)

Phase 6. Development (Converts design into a complete information system)

Phase 7. Integration and Test (Demonstrate that developed system conforms to

requirements in FRD. Produce test analysis reports)

Phase 8. Implementation (Implementation preparation, Implementation of the

system into production environment, and resolution of problems identified in

the integration and test phases)

Phase 9. Operation and Maintenance (Describe tasks to operate and the system

developed)

Phase 10. Disposition (Describe end to end activities)

Page 8: 4 sdlc and stlc

8

SDLC Phases

Anyone who has never made a mistake has never tried anything new.

Initiation:

Request for proposal

Proposal

Negotiation

Letter of Intent

Contract

User Requirement Specification

Software Requirement specification Software Requirement Specification

is a means of translating the ideas in the minds of the clients(the inputs) into a

set of formal document (the output) of the requirement phase. The role of it

use to bridge the communication gap between the client and the developer.

Preliminary analysis: The objective of this phase is to conduct a

preliminary analysis, propose alternative solutions, describe costs and

benefits and submit a preliminary plan with recommendations.

Page 9: 4 sdlc and stlc

9

SDLC Phases

Anyone who has never made a mistake has never tried anything new.

Conduct the preliminary analysis: In this step, you need to find out the organization's

objectives and the nature and scope of the problem under study.

Then you need to see how the problem being studied fits in with them.

Propose alternative solutions: Alternate proposals may come from interviewing employees,

clients , suppliers, and/or consultants. You can also study what competitors are doing. With this

data, you will have three choices: leave the system as is, improve it, or develop a new system.

Describe the costs and benefits

Systems analysis and requirements definition: Defines project goals into defined functions

and operation of the intended application. Analyzes end-user information needs. This step

involves breaking down the system in different pieces to analyze the situation, analyzing project

goals, breaking down what needs to be created and attempting to engage users so that definite

requirements can be defined.

In the requirement phase we gather as much information as possible about the detail and

specifications of the desired soft ware from the client.

Page 10: 4 sdlc and stlc

10

SDLC Phases

Anyone who has never made a mistake has never tried anything new.

Systems design: Describes desired features and operations in detail,

including screen layouts, business rules, process diagrams, pseudo code and

other documentation. The output of this stage will describe the new system as

a collection of modules or subsystems. The design stage takes as its initial

input the requirements identified in the approved requirements document

HLD and LLD phases put together called Design phase .

High Level Design (Macro Level): High level design documents contain the

items listed below

1. List of modules and a brief description of each

2. Brief functionality of each module

3. Interface relationship among modules

4. Dependencies between modules

5. Database tables identified with key elements

6. Overall architecture diagrams along with technology details

7. Business team provide sign-off for this design only

Page 11: 4 sdlc and stlc

11

SDLC Phases

Anyone who has never made a mistake has never tried anything new.

Low Level Design (Micro Level): Low level design documents contain the items

listed below.

1. Detailed functional logic of the module, in pseudo code

2. Database tables, with all elements, including their type and size

3. All interface details

4. All dependency issues

5. Error message listing

6. Complete input and output format of a module

7. Business team will not provide sign-off for this design.

Development: The real code is written here.

Integration and testing: Brings all the pieces together into a special testing

environment, then checks for errors, bugs and interoperability.

Test Environment is an environment utilized to simulate normal business transactions,

processes, and activities during functional testing of software.

Acceptance, installation, deployment: The final stage of initial development, where

the software is put into production and runs actual business.

Maintenance: What happens during the rest of the software's life: changes,

correction, additions, moves to a different computing platform and more. This is often

the longest of the stages.

Page 12: 4 sdlc and stlc

12

V Model

Anyone who has never made a mistake has never tried anything new.

If you are working in large project, where the systems are complex, its easy to miss

out key details in the requirements phase itself. In such cases , an entirely wrong

product will be delivered to the client. You will have to start a fresh with the project.

Or if you manage to note the requirements correctly but make serious mistakes in

design and architecture of you software you will have to redesign the entire software to

correct the error.

Assessments of thousands of projects have shown that defects introduced during

requirements & design make up close to half of the total number of defects.

Also, the costs of fixing a defect increases across the development life cycle. The

earlier in life cycle a defect is detected, the cheaper it is to fix it.

To address this concern , the V model of testing was developed where for every phase ,

in the Development life cycle there is a corresponding Testing phase.

In the V model diagram provided below, the left side of the model is Software

Development Life Cycle (SDLC) and the right side of the model is Software Test Life

Cycle (STLC). The entire figure looks like a V, hence the name V - model

Page 13: 4 sdlc and stlc

13

V Model

Anyone who has never made a mistake has never tried anything new.

The V model is an industry standard framework that shows clearly the software development life cycle in

relation to testing. It also highlights the fact that the testing is just as important as the software development

itself.

In V-Model testing begins as early as possible in the project life cycle. There are a variety of testing activities

that need to be performed before end of the coding phase. These activities should be performed in parallel to

the development activities so that testers can produce a set of test deliverables.

The V-Model illustrates that testing activities (verification and validation) can be integrated into each phase of

the project life cycle.

Verification (are we building the product right?): The process of determining whether or not the projects of a

given phase of the software development cycle meet the implementation steps and can be traced to the

incoming objectives established during the previous phase. The techniques for verification are testing and

inspection. All Quality Control activities through out the life cycle that ensures that all deliverables from

different phases meet their specification.

Validation (are we building the right product?): The process of evaluation software at the end of the software

development process to ensure compliance with software requirements. It is a process of controlling that data

inserted into an application satisfies pre-determined formats or complies with stated length and character

requirements and other defined input criteria. The techniques for validation are testing and inspection. The

testing phase of the life cycle ensures that the end product meet the user needs

Normally, testing of any Large Systems will be in TWO parts. The functional verification and validation against

the Requirement Spec and Performance evaluation against the indicated requirements.

Testing activity is involved right from the beginning of the project.

Page 14: 4 sdlc and stlc

14

V-Model (SDLC & STLC)

Anyone who has never made a mistake has never tried anything new.

Page 15: 4 sdlc and stlc

15

Testing Through Life Cycle

Anyone who has never made a mistake has never tried anything new.

1. Requirement AnalysisTesting

2. Design Testing

3. Unit Testing

4. Integration Testing

5. System Testing

6. User Acceptance Testing

Page 16: 4 sdlc and stlc

16

1. Requirement AnalysisTesting

Anyone who has never made a mistake has never tried anything new.

The objective of Requirement Analysis Testing is to

ensure software quality by eradicating errors as early as

possible in the development process, as the errors

noticed at the end of the software life cycle are more

costly compared to that of early ones, and there by

validating each of the Outputs.

The objective can be achieved by three basic issues:

1. Correctness

2. Completeness

3. Consistency

Page 17: 4 sdlc and stlc

17

Types of Requirements

Anyone who has never made a mistake has never tried anything new.

In short, software requirements are typically broken down into two major categories:

Functional requirements

Non-functional requirements

Functional requirements describe the behavior and capabilities of a software system, and the information the

system will manage. Functional requirements are typically described in a series of "the system will" or "the system

shall" statements.

Non-functional requirements are all the other requirements that don't describe the behavior of the system.

Example #1: Look and Feel requirement might state that "The system shall use the corporate colors and logo“

Example #2: A Performance requirement might state that "The system shall handle a simulated user load of 1,000

users"

Non-functional software requirements are then broken down into several sub-categories, like this:

Reliability

Data

Performance

Look and Feel

Operational (or Operability)

Security

Compatibility

Maintainability

Transferability

Page 18: 4 sdlc and stlc

18

What constitutes “good” requirements?

Anyone who has never made a mistake has never tried anything new.

1. Verifiable: The implementation of the requirement can be determined through one of four possible methods:

inspection, demonstration, test or analysis.

2. Clear & Concise: The requirements give your team a useful, easy to read and easy to change understanding of

what must be done. Great requirements exist to do three things:

I) Identify the problems that need to be solved.

II) Explain why those problems are worth solving.

III) Define when those problems are solved

3. Unambiguous : The requirement is concisely stated without recourse to technical jargon, acronyms (unless

defined elsewhere in the Requirements document), or other esoteric verbiage. It expresses objective facts, not

subjective opinions. It is subject to one and only one interpretation. Unnecessary narrative or non-relevant facts,

vague subjects, adjectives, prepositions, verbs and subjective phrases are avoided. Negative statements and

compound statements are avoided.

Bad Example Good Example Requirement #1: The system must be user friendly.

How to measure user friendliness?

Requirement #1: The UI should be menu driven and

provide dialog boxes, help screens, radio buttons,

dropdown boxes etc.

Bad Example Good Example

Requirement #1: Navigation from one screen to another

should be very quickly.

How long is very quickly?

Requirement #1: Navigation from one screen to

another should be <= 2 seconds

Page 19: 4 sdlc and stlc

19

What constitutes “good” requirements?

Anyone who has never made a mistake has never tried anything new.

4. Complete: The requirement is fully stated in one place with no missing information.

5. Consistent: The requirement does not contradict any other requirement and is fully consistent with all

authoritative external documentation.

Consistent Requirements are requirements that

Are not in conflict with any of your strategic objectives, vision, or corporate goals.

Avoid logical inconsistencies

Utilize consistent structure, terms, and grammar

6. Traceable: The requirement meets all or part of a business need as stated by stakeholders and authoritatively

documented.

Bad Example Good Example Requirement #1: The system must generate batch end

report and discrepancy report when a batch is aborted.

How is this uniquely identified? If the requirement is

changed later so that it does not require a discrepancy

report, how will you trace it back to so you can delete

it?

Requirement #1: The system must generate a batch

end report when a batch is aborted.

Requirement #2: The system must generate a

discrepancy report when a batch is aborted or

completed.

Bad Example Good Example Requirement #1: If the system failure occurs in Prod,

an error notification should be sent.

To whom and what format?

Requirement #1: If the system failure occurs in

Prod, an email error notification should be sent to

[email protected]

(Email notification format/screen should be provided)

Page 20: 4 sdlc and stlc

20

What constitutes “good” requirements?

Anyone who has never made a mistake has never tried anything new.

Feasible:

Feasibility means that a requirement can be accomplished within the cost and schedule, can be met

using existing technology.

etc.

Bad Example Good Example Requirement #1: The replacement control system shall be installed

with no disruption to production.

This is an unrealistic expectation.

Requirement #1: The replacement control system shall be

installed causing no more than 2 days of production disruption.

Page 21: 4 sdlc and stlc

21

Changes in Requirements

Anyone who has never made a mistake has never tried anything new.

Requirements generally change with time. Once defined and approved, requirements should fall

under change control process. For many projects, requirements are altered before the system is

complete. This is partly due to the complexity of computer software and the fact that users don't

know what they want before they see it.

What is Change control?

Change control is a formal process used to ensure that changes to a product or system are

introduced in a controlled and coordinated manner. It reduces the possibility that unnecessary

changes will be introduced to a system without forethought, introducing faults into the system or

undoing changes made by other users of software. The goals of a change control procedure usually

include minimal disruption to services, reduction in back-out activities, and cost-effective utilization

of resources involved in implementing change.

Page 22: 4 sdlc and stlc

22

Requirements Analysis

Anyone who has never made a mistake has never tried anything new.

Difficulties in conducting requirements analysis:

Analyst not prepared

Customer has no time/interest

Incorrect customer personnel involved

Insufficient time allotted in project schedule

Testing related activities during Requirement phase

Creation and finalization of testing templates

Creation of Test Strategy (Master Test Plan)

Capturing Acceptance criteria and preparation of Acceptance Test Plan

Capturing Performance criteria of the software requirements

Page 23: 4 sdlc and stlc

23

2. Design Testing

Anyone who has never made a mistake has never tried anything new.

The objective of the design phase testing is to generate a complete specifications for implementing a

system using a set of tools and languages.

Design objective is fulfilled by five issues

Consistency

Completeness

Correctness

Feasibility

Tractability

Page 24: 4 sdlc and stlc

24

2. Design Testing

Anyone who has never made a mistake has never tried anything new.

Testing activities in System Testing phase

System test is done for validating the product with respect to client requirements

Testing can be in multiple rounds

Defect found during system test should be logged into Defect Tracking System for the purpose of

tracking.

Test logs and defects are captured and maintained.

Review of all the test documents

Page 25: 4 sdlc and stlc

25

3. Unit Testing

Anyone who has never made a mistake has never tried anything new.

It is the most ‘micro’ scale of testing and focus on to test particular functions or code modules.

This testing performed by programmers not by testers, as it requires detailed knowledge of the internal

program design and code.

The main objective of unit testing is to ensure that the individual units of a system work correctly

in isolation, before they are eventually integrated

Unit testing objective is fulfilled by four issues

Completeness

Correctness

Early Testing

Debugging

Page 26: 4 sdlc and stlc

26

4. Integration Testing

Anyone who has never made a mistake has never tried anything new.

Integration testing of combined parts of an application to determine if they function together correctly.

Here parts of the application can be code modules, individual applications, client and server applications

on a network

The main objective of integration testing is minimizing the errors which include internal

and external Interface errors.

Testing activities in Integration Testing Phase

This testing is conducted in parallel with integration of various applications (or components)

Testing the product with its external and internal interfaces without using drivers and stubs.

Incremental approach while integrating the interfaces.

Page 27: 4 sdlc and stlc

27

5. System Testing

Anyone who has never made a mistake has never tried anything new.

Software once validated for meeting functional requirements must be verified for proper interface

with other system elements like hardware, databases and people.

System testing verifies that all these system elements mesh properly and the software achieves

overall function/performance.

We carry out functionality testing, performance testing and other black box testing to requirement as

part of system testing.

Testing activities in System Testing phase.

System test is done for validating the product with respect to client requirements.

Testing can be in multiple rounds.

Defect found during system test should be logged into Defect Tracking System for the purpose of

tracking.

Test logs and defects are captured and maintained.

Review of all the test documents.

Page 28: 4 sdlc and stlc

28

Testing Life Cycle – V&V Process Model

Anyone who has never made a mistake has never tried anything new.

Definition: V&V – a system engineering discipline employing a rigorous methodology for evaluating and

assessing the correctness and quality of software throughout the software life cycle.

Verify a developers process is technically sound.

V&V usually focuses on ensuring the requirements are being met, the overall project is focused on the

correct objectives, and risk is being managed.

Benefits of V&V

Early detection leads to a better solution rather than quick fixes.

Validating the solution is solving the “right problem” against software requirements.

Objective evidence of software and system compliance to quality standards.

Support process improvements with an objective feedback on the quality of development process and

products.

Finally, You must note that there are numerous development life cycle models. Development model

selected for a project, depends on the aims and goals of that project

Page 29: 4 sdlc and stlc

29

Testing Life Cycle – V&V Process Model

Anyone who has never made a mistake has never tried anything new.

HLD/LLD for each

application involved

Interface design

Application

Integration

Integrated

Solution

Release

Project Planning

Master Test Strategy

Test Planning

Strategy for

individual

applications, Test

case design

Performance

Testing

Acceptance Tests

Incremental

Integration Testing

System Testing

(Application level

Testing)

Solution Mapping/

Development/

Customization

Business

requirements and

Solution

Architecture

Page 30: 4 sdlc and stlc

30

QA and the SDLC (In terms of Test Management tool – Quality Center (QC))

Anyone who has never made a mistake has never tried anything new.

Page 31: 4 sdlc and stlc

31

Testing Process and the SDLC (In terms of Test Management tool – Quality Center (QC))

Anyone who has never made a mistake has never tried anything new.

Page 32: 4 sdlc and stlc

32

QA Deliverables

Anyone who has never made a mistake has never tried anything new.

1. Master Test Plan

2. Effort estimation document

3. Test Team Capacity Planning, Utilization, and assignment allocations document

4. Test Team Training Check List (Tool Training, Application Training etc.) document

5. Test Metrics

6. Traceability Matrix (If QA team responsible for it.)

7. Integration Test Plan (If QA team performs this testing.)

8. Functional Test Plan

9. Performance Test Plan

10. Test plan tracking sheet.

11. Test scenarios, test cases/scripts

12. Regression test bed

13. Test Data creation/Usage/Maintenance strategy document

14. Test Environment Setup details

15. Test Execution/Completion Status reports

16. Defect Reports

17. Automation feasibility study report (if applicable)

18. Functional automation model, framework and approach document

19. Performance automation model, framework and approach document

20. Test Closure Report

21. QA Sign-off

Etc.

Page 33: 4 sdlc and stlc

33

SDLC Deliverables

Anyone who has never made a mistake has never tried anything new.