Tuesday, September 11, 2007

Software Development Life Cycle (SDLC)

Software Development Life Cycle (SDLC)

 Software Requirement Analysis-Functional requirements
 Software Project Planning-Resources planning, no. of people, duration, modules etc
 Software Design-Design of data structures, Software architecture, Procedural details and Interface
 External design (High Level Design)- Design of GUI etc
 Internal design (Low Level Design)- Design of tables, data structures, code design
 Software Coding- Design into a machine readable form
 Software Testing-Finding an error and Debugging (removal of error)
 Software Maintenance-Error Correction, Adapting system to new environments, adding new Enhanced features

Types of Software

 System Software (Operating System)
 Business Software (MIS)
 Embedded Software (VxWorks)
 Application Software (MS Word)
 AI Software (LISP)

Phases of Software Development

 Software Definition (Software Requirement Analysis and Software Project Planning)
 Software Development (Software Design, Software Coding, Software Testing)
 Software Maintenance (Correction, Adaptation, Enhancements)
Software testing
 Execution of a program with the intent of finding an error.
 Testing involves operation of a system or application under controlled conditions and evaluating the results. The controlled conditions should include both normal and abnormal conditions.
 It is oriented to 'detection'
 Positively impacting product/process quality!
 Software Testing is a critical element of SQA
 It represents the ultimate review of specification, design and coding
 40% of software cost is spent for testing
 During early stages, developer performs all tests
 As the testing process progresses, testers come in to play
 They design test cases which uncover errors

Testingpsychologically destructive
Developmentpsychologically constructive
Why testing
 to ensure high quality in software-the earlier found, the greater chance of getting fixed
 to ensure whether software meets customer requirements
 to correct defects
 to reduce cost of defect fixing-the earlier a bug is found the less costly
 to avoid user detecting problems
What is quality software?
 Functions as expected
 Easy to use
 Features or cool stuff that makes the customer buy and use the program
 Delivered on time and within budget
 Stable
 Bug-free
 Maintainable
What is a bug?
 An error in code or logic
 deviations of the output of a process from the expected outcome
 Not handling the unexpected gracefully
 A deviation from what a reasonable customer expects
 A disparity in the specification
Consider the costs of a bug found...
 During Spec review
 During development
 During testing
 By external beta testers
 Post production
Testing principles and Guidelines
 All tests should be traceable to customer requirements
 Tests should be planned long before testing begins(as soon as requirement specification model is developed)
 Exhaustive white box testing is not possible
 To be most effective, testing should be conducted by an independent third party
 Test Early. Test Often. Test Automatically.
 Make failures noticeable
 Learn from bugs
 If it’s too hard to test, may be the design is too complicated
 Testing should be repeatable, systematic and documented
What is the tester’s role?
 Understanding the process and not just the product
 Verifying the functionality of product features
 Validating the features – ensuring against assumptions
 Observing & reporting
 Providing timely information regarding quality
 Owning/driving quality

What makes a good test engineer?
A good test engineer has a 'test to break' attitude, an ability to take the point of view of the customer, a strong desire for quality, and an attention to detail. Tact and diplomacy are useful in maintaining a cooperative relationship with developers, and an ability to communicate with both technical (developers) and non-technical (customers, management) people is useful. Previous software development experience can be helpful as it provides a deeper understanding of the software development process, gives the tester an appreciation for the developers' point of view, and reduce the learning curve in automated test tool programming. Judgment skills are needed to assess high-risk areas of an application on which to focus testing efforts when time is limited.

Testability
 A s/w engineer designs a computer program or system with testability in mind
 It enables test engineer to design test cases more easily
 Eg: operability-less bugs, simplicity, understandability etc

Software Metrics (units to measure the quality of software)
 Direct (no. of lines of code, cost, duration, no. of pages, no. of errors, software memory size, and execution speed)
 Indirect (Reliability, Quality, Functionality, Performance, Efficiency)

Software Quality Control?
Operational techniques and activities like inspections, reviews and tests that are performed to fulfill the quality requirements. It is corrective in nature. Systematic approach of controlling the changes and implementing the changes that are needed at different levels of software development

What is 'Software Quality Assurance'?
Software QA involves the entire software development PROCESS - monitoring and improving the process, making sure that any agreed-upon standards and procedures are followed, and ensuring that problems are found and dealt with. It is oriented to 'prevention'.
Every s/w company must establish organizational procedures and standards which lead to high quality s/w which has


 safety
 security
 reliability
 robustness
 understandability
 testability
 modularity
 portability
 usability
 reusability
 efficiency
 learnability


Steps
 Application of technical methods and tools (to ensure high quality in design)
 Formal Technical Review (FTR)-meeting by technical staff, management and customer. Presentation of design to uncover errors and functionality requirements
 Software Testing
 Enforcement of Standards
 Measurement [software metrics]
 Record keeping and Reporting-Reviews are listed and reported for correction

Verification: Are we building the product right?

Validation: Are we building the right product?

What is Verification? Validation?

Verification and validation encompasses a wide array of SQA activities including FTR (Formal Technical Review), quality and configuration audits, performance monitoring, simulation, feasibility study, documentation review, database review, algorithm analysis, development testing, qualification testing and installation testing

Verification typically involves reviews and meetings to evaluate documents, plans, code, requirements, and specifications. This can be done with checklists, issues lists, walkthroughs, and inspection meetings. Validation typically involves actual testing and takes place after verifications are completed. The term 'IV & V' refers to Independent Verification and Validation.

What's the difference between QA and testing?

QA is more a preventive thing, ensuring quality in the company and therefore the product rather than just testing the product for software bugs. QC is a better set of initials to describe testing. According to ANSI/IEEE definitions, TESTING means "quality control" QUALITY CONTROL measures the quality of a product. QUALITY ASSURANCE measures the quality of processes used to create a quality product.

Software Testing Life Cycle (STLC)

At the termination of each phase in SDLC, a checkpoint is taken to insure that the current phase is completed properly and that the project team is prepared to start the next phase. The testing process will align to these same phases. The development and test activities will be coordinated so that they complement each other.
As each interim work product is created by developer, it is in turn tested to insure that it meets the requirements and specifications for that phase so that the resulting work products will be constructed on a sound foundation. Testing begins with requirements and continues throughout the life of the application
Even after the application has been in production, testing continues to play an important role in the systems maintenance process.


Testing in SDLC

The V Model is a software development and testing model, which helps to highlight the need to plan and prepare for testing early in the development process. In the V Model, each development phase is linked to a corresponding testing phase. In practice, the V Model provides a powerful tool for managing and controlling risk within the testing component of a software development project.

No comments: