Sanjeevi's SDLC Guest Lecture in Anna University campus at AU-PERS Centre (Year 2003)

25
What is Software? A set of programs designed for specific pre- defined purpose(s).

Transcript of Sanjeevi's SDLC Guest Lecture in Anna University campus at AU-PERS Centre (Year 2003)

What is Software?

A set of programs designed for specific pre-defined purpose(s).

OutputInput Process

You won’t work on the same project all your life.

You won’t work in the same company all your life.

Maintenance work is difficult without documentation.

To experience the importance of documentation, work on another person’s project part without documentation.

Software Development Life Cycle (SDLC)

SystemStudy

SystemAnalysis

SystemDesign

Construction

TestingImplementation

System Study PhaseDomain AnalysisFunctional experienceGet your Customer’s point of viewCustomer is NOT just the Management, but

also the end-usersYour team members are also your

customers (internal)…get their points of view as well

System Study PhaseDomain Knowledge

Which field or subject is the software for?What are the classifications & hierarchies used?What are the core principles of the field?Get expert’s advice. Interview people working at your Customer’s

place.Read technical literature of that domain.See software already done in that domain.

System Study PhaseDomain Analysis Inputs

Technical literatureExisting softwareCustomer surveysExpert adviceCurrent / future requirements

System Study PhaseDomain Analysis Outputs

Class taxonomiesReuse standardsFunctional modelsDomain languages

Software ProcessProcess Maturity Levels

SEI’s CMM

Level 1: InitialLevel 2: RepeatableLevel 3: DefinedLevel 4: ManagedLevel 5: Optimized

System Study Document Domain Analysis Model Overview of current system (CAD)

Inputs Outputs Processes External entities Data stores

Physical DFD of current system Logical DFD of current system Data Dictionary of current system

System Analysis PhaseProblems faced in current system (Bottleneck

Analysis)Possible solutionsBenefits Analysis of each possible solutionSelection of new systemCAD, Physical & Logical DFD of new system

with Automation BoundarySystem Proposal documentCustomer’s approval

System Design Phase Benefits of new system are Project Goals. Balance between Top-down and bottom-up approaches. Drilling down top-level DFDs to detailed DFDs. Data Dictionary of new system (if different from old). Automation Boundary for the new system. Database Design, User Interface Design. External events, system states & system behaviour. Project Specifications document for both manual and

computerized parts of the new system. Freeze Specs.

Construction Phase Select programming language. Map Project Specifications document terms into

programming language terms. Construct data structures / classes / objects from class

taxonomies in Domains Analysis outputs. Construct Database from Data Dictionary. Construct User Interface. Input and output formats. Write Algorithms for processes. Directory structure and files list.

Construction PhaseCoding

Commenting is extremely important.Every variable’s purpose must either have a

comment or must be mentioned in one of the project documents.

Every function’s / procedure’s purpose must either have a comment or must be mentioned in one of the project documents.

Have checklist for every project part.

Testing Phase Modular approach during development makes testing easier Testing strategies Test cases mapped from Customer requirements Checklists – specified-actual comparison Errors – during development Defects – after delivery to customer Defect Rates Validation testing – building the right product Verification testing – building the product right 80% errors caused by 20% code in most software Higher chances of errors in test cases with boundary values input

Software Testing Techniques Black box testing – functionality-based White box testing – all execution paths exercised Integration testing – as each module is integrated into the system Regression testing – repeat previous tests as integration

progresses. Unit testing – individual program Top-down approach – whole to parts, stubs and drivers required Bottom-up approach – parts to whole System testing Alpha testing – by customer at developer’s place Beta testing – by end-users at customer’s place

System Testing

Software must work properly with the other parts of organization’s system

Recovery testing – force failure and see if recovery is proper

Security testing – sensitive info protectionStress testing – abnormal situations, high loadsPerformance testing – high priority for Real-

time embedded systems

Testing for Real-time systems Task testing – test each task independently Behavioural testing – simulate behaviour, examine Intertask testing – task synchronization System testing – software/hardware interface Interrupts present in most real-time systems

Test priorities assignment and handlingCorrect handlingPerformance of interrupt handlingTest if high volume of interrupts creates problems in

function or performance

Debugging Errors – during development. Defects – after delivery. Observation and noting effects. Trace cause(s) from observed effects. List of probable causes. Test each probable cause and eliminate irrelevant ones and

arrive at actual cause(s). Partitioning or decomposing large problem into smaller,

simple problems. Inference and deduction. Fixing one bug may cause another new one.

Software Metrics

Project, LOC, Effort, Cost, Errors, Defects, PeopleErrors per KLOCDefects per KLOCCost per LOCPages of document per KLOCErrors per person-monthLOC per person-monthCost per page of document

Software Metrics…

Costing based on LOC has drawbacks. So, Function Points-based costing replaced it.

Function PointsNo. of user inputsNo. of user outputsNo. of user inquiriesNo. of filesNo. of external interfacesCount and Complexity Factor for each parameterCount * Complexity Factor gives the final measure

Implementation Phase

If System Study was done precisely, most implementation issues would have been handled at the beginning of the project itself.

Checklist containing end-users, locations, hardware & software configuration.

Software Configuration Management is the task that solves most technical issues during implementation.

Having a good rapport with people at customer site is critical for implementation and finetuning.

Implementation may lead to Corrective Maintenance. Communication and co-ordination with customer and end-

users.

Maintenance

Starts after delivery only. Good design considers maintenance issues. SDLC applicable in this phase. Checklists containing end-users, locations, hardware &

software configuration. Software Configuration Management is critical and is an

umbrella activity. Adaptive Maintenance must begin with Impact Analysis. Communication and co-ordination with customer and end-

users is important. MTTC = Mean Time-To-Change

Reverse Engineering

Design document for a software not available.

Analyze program to create specifications.

Extract design from source code.Recover design from whatever is

available in the project.

C.A.S.E.Computer-Aided Software Engg.CASE tools automate software engg. tasks in

every step of the process.CASE tools usually generate code as well. But

don’t expect it to generate the whole software!!!CASE tools build a framework for projects. e.g.: Rational Rose by Rational Software

Corporation which uses a process framework named RUP (Rational Unified Process) which is based on UML (Unified Modeling Language).