Software Engineering Training Material
Software Engineering – Training Material
SOFTWARE ENGINEERING •
Introduction About the company Netkraft is a leading provider of creative Web professional services called eBusiness services. eBusiness is the complex fusion of business processes, enterprise applications, and organizational structure necessary to create a highperformance business model. In this environment, widespread use is made of synergistic clusters, business ecosystems, coalitions, co-operative networks, or outsourcing to create end-to-end value streams to link businesses, customers and suppliers. NetKraft has built a reputation for quality products, outstanding customer support and business values.
•
Software Industry
•
•
In India itself, Software industry growth has been phenomenal. IT field has enormously grown in the past 50 years. IT industry in India is expected to touch 10,000 crores of which software share is dramatically increasing.
Software Crisis
Software cost/schedules are grossly inaccurate. Cost overruns of several times, schedule slippage’s by months, or even years are common.
Productivity of people has not kept pace with demand Added to it is the shortage of skilled people.
Quality of software is than desired Error rates of released software leave customer dissatisfied…Threatening the very business.
Software Myths
Management Myths
Software Management is different. Why change or approach to development? We have provided the state-of-the-art hardware. Problems are technical If project is late, add more engineers. We need better people.
Developers Myths We must start with firm requirements Why bother about Software Engineering techniques, I will go to terminal and code it. Once coding is complete, my job is done. How can you measure the quality..it is so intangible.
QMS/SE/TR01
Version 1.0
Page 2 of 12
Software Engineering – Training Material
Customer’s Myth A general statement of objective is good enough to produce software. Anyway software is “Flexware”, it can accommodate my changing needs.
What do we do ?
•
•
Use Software Engineering techniques/processes. Institutionalize them and make them as part of your development culture. Adopt Quality Assurance Frameworks : ISO, CMM Choose the one that meets your requirements and adopt where necessary.
Software Engineering:
Software Engineering is an engineering discipline concerned with the practical problems of developing large software.
Software Engineering discipline tracks both technical & non-technical problems associated with software development.
Challenge for Software Engineers is to produce high quality software with finite amount of resources & within a predicted schedule.
Apply Engineering Concepts to developing Software
Apply Engineering Concepts to removing crisis.
Software Quality Assurance: Software quality assurance Software QA involves the entire software development PROCESS - monitoring and improving the process, making sure that any agreedupon standards and procedures are followed, and ensuring that problems are found and dealt with. It is oriented to 'prevention'. OR The purpose of Software Quality Assurance is to provide management with appropriate visibility into the process being used by the software project and of the products being built. Software Quality Assurance involves reviewing and auditing the software products and activities to verify that they comply with the applicable procedures and standards and providing the software project and other appropriate managers with the results of these reviews and audits.
•
Verification:
Verification typically involves reviews and meetings to evaluate documents, plans, code, requirements, and specifications. The determination of consistency, correctness & completeness of a program at each stage
QMS/SE/TR01
Version 1.0
Page 3 of 12
Software Engineering – Training Material
•
Validation:
•
Validation typically involves actual testing and takes place after verifications are completed. The determination of correctness of a final program with respect to its requirements.
Software Engineering Process Consists of Three generic Phases: Definition, Development, and Maintenance. 1. Definition (What) Customer Contact, Planning, Requirement Analysis. 2. Development Phase (How) Design, Coding, Testing. 3. Maintenance Phase (Change) Correction, Adaptation, Enhancement, Reengineering. 4. Support Activities Quality Assurance, Configuration Management.
Software Life Cycle Models •
Prototyping Model
•
Waterfall Model – Sequential
•
Spiral Model
•
V Model - Sequential
Prototyping Model of Software Development A prototype is a toy implementation of a system; usually exhibiting limited functional capabilities, low reliability, and inefficient performance. There are several reasons for developing a prototype. An important purpose is to illustrate the input data formats, messages, reports and the interactive dialogues to the customer. This a valuable mechanism for gaining better understanding of the customer’s needs. Another important use of the prototyping model is that it helps critically examine the technical issues associated with the product development. Requirements Gathering
Quick Design Refine Requirements Customer Suggestions
Build Prototype
Customer evaluation of the prototype
Design
QMS/SE/TR01
Version 1.0
Page 4 of 12
Software Engineering – Training Material
Acceptance by Customer Implement
Test
Maintain
Classic Waterfall Model In a typical model, a project begins with feasibility analysis. On successfully demonstrating the feasibility of a project, the requirements analysis and project planning begins. The design starts after the requirements analysis is complete, and coding begins after the design is complete. Once the programming is completed, the code is integrated and testing is done. On successful completion of testing, the system is installed. After this, the regular operation and maintenance of the system takes place. System Feasibility
Feasibility Report
Validation
Requirements Analysis And Project Planning Validation
Requirement Document And Project Plan System Design
Detailed Design Verification
System Design Document
Verification
Detailed Design Document Coding
Programs
Testing and Integration
Verification
Test Plan, Test Report And Manuals Installation Operation and Maintenance Installation
QMS/SE/TR01
Version 1.0
Page 5 of 12
Software Engineering – Training Material
Report Typical Spiral Model Developed by Barry Boehm in 1988. it provides the potential for rapid development of incremental versions of the software. In the spiral model, software is developed in a series of incremental releases. During early iterations , the incremental release might be a paper model or prototype. •
Each iteration consists of Planning, Risk Analysis, Engineering, Evaluation.
Construction
&
Release
&
Customer
Customer Communication: Tasks required to establish effective communication between developer and customer. Planning: Tasks required to define resources, timelines, and other project related information. Risk Analysis: Tasks required to assess both technical and management risks. Engineering: Tasks required to build one or more representatives of the application. Construction & Release: Tasks required to construct, test, install and provide user support (e.g., documentation and training) Customer evaluation: Tasks required to obtain customer feedback based on evaluation of the software representations created during the engineering stage and implemented during the installation state.
QMS/SE/TR01
Version 1.0
Page 6 of 12
Software Engineering – Training Material
V – Process Model RFP
Process Feedback
Proposal Study
Proposal Review
(Project Plan)
Accepted Proposal
Requirement Study
Project Process Study
Project Process
Actual Proposal
Project Closure Report
Working System
Acceptance Requirement Review
Acceptance Test
Test Plan
Requirement Specification
Deliverable System Functional Specification Review
System
Analysis Functional Specification
Approved S.R.S Design Document
System Testing
System
Certification
Test Plan
Executable System Integrated Tested Code
Design Review
Int.Test Plan.
Integration
Design Specification
Detailed Design
Integration Testing Unit Tested Code
Approved S.D.S
Unit Tested Code Program Specification Review
Design Specification
Unit Unit Test T.P
Approved S.P.S Coding
Test Audit Code
Entry Criteria Code Inspection
Design
QMS/SE/TR01
Customer Review Delivered System
Approved S.R.S
Legend
Process Review
Version 1.0
Task
Validation Exit Criteria
Page 7 of 12
Software Engineering – Training Material
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. What makes a good Software QA engineer? The same qualities a good tester has are useful for a QA engineer. Additionally, they must be able to understand the entire software development process and how it can fit into the business approach and goals of the organization. Communication skills and the ability to understand various sides of issues are important. In organizations in the early stages of implementing QA processes, patience and diplomacy are especially needed. An ability to find problems as well as to see 'what's missing' is important for inspections and reviews. •
Testing
An examination of the behavior of a program by executing on sample data sets. Testing comprises of set of activities to detect defects in a produced material. To unearth & correct defects To detect defects early & to reduce cost of defect fixing To avoid user detecting problems To ensure that product works as users expected it to.
Why Testing ? • • • •
To To To To
unearth and correct defects. detect defects early and to reduce cost of defect fixing. ensure that product works as user expected it to. avoid user detecting problems.
QMS/SE/TR01
Version 1.0
Page 8 of 12
Software Engineering – Training Material
Types of Tests
Contract
Other Tests
System Req. Spec.
System Tests
Functional Spec.
Functional Tests
H.LD. L.L.D.
Integration Testing Unit Testing
Test Life Cycle •
Identify Test Candidates
•
Test Plan
•
Design Test Cases
•
Execute Tests
•
Evaluate Results
•
Document Test Results
•
Casual Analysis/ Preparation of Validation Reports
•
Regression Testing / Follow up on reported bugs.
Testing Techniques • • • •
Black Box Testing White Box Testing Regression Testing These principles & techniques can be applied to any type of testing.
Black Box Testing Testing of a function without knowing internal structure of the program. White Box Testing Testing of a function with knowing internal structure of the program.
QMS/SE/TR01
Version 1.0
Page 9 of 12
Software Engineering – Training Material
Regression Testing To ensure that the code changes have not had an adverse affect to the other modules or on existing functions. Functional Testing
Study SRS Identify Unit Functions For each unit function • Take each input function • Identify Equivalence class • Form Test cases • Form Test cases for boundary values • From Test cases for Error Guessing Form Unit function v/s Test cases, Cross Reference Matrix Find the coverage
Unit Testing: The most 'micro' scale of testing to test particular functions or code modules. Typically done by the programmer and not by testers • Unit - smallest testable piece of software • A unit can be compiled/ assembled/ linked/ loaded; and put under a test harness • Unit testing done to show that the unit does not satisfy the functional specification and/ or its implemented structure does not match the intended design structure Integration Testing: Integration is a systematic approach to build the complete software structure specified in the design from unit-tested modules. There are two ways integration performed. It is called Pre-test and Pro-test. 1. Pre-test: the testing performed in Module development area is called Pre-test. The Pre-test is required only if the development is done in module development area. 2. Pro-test: The Integration testing performed in baseline is called pro-test. The development of a release will be scheduled such that the customer can break down into smaller internal releases. Alpha testing: Testing of an application when development is nearing completion minor design changes may still be made as a result of such testing. Typically done by end-users or others, not by programmers or testers. Beta testing:
QMS/SE/TR01
Version 1.0
Page 10 of 12
Software Engineering – Training Material
Testing when development and testing are essentially completed and final bugs and problems need to be found before final release. Typically done by end-users or others, not by programmers or System Testing: • • •
A system is the big component System testing is aimed at revealing bugs that cannot be attributed to a component as such, to inconsistencies between components or planned interactions between components Concern: issues, behaviors that can only be exposed by testing the entire integrated system (e.g., performance, security, recovery).
Volume Testing: The purpose of Volume Testing is to find weaknesses in the system with respect to its handling of large amounts of data during short time periods. For example, this kind of testing ensures that the system will process data across physical and logical boundaries such as across servers and across disk partitions on one server. Stress testing: This refers to testing system functionality while the system is under unusually heavy or peak load; it's similar to the validation testing mentioned previously but is carried out in a "high-stress" environment. This requires that you make some predictions about expected load levels of your Web site. Usability testing: Usability means that systems are easy and fast to learn, efficient to use, easy to remember, cause no operating errors and offer a high degree of satisfaction for the user. Usability means bringing the usage perspective into focus, the side towards the user. Security testing: If your site requires firewalls, encryption, user authentication, financial transactions, or access to databases with sensitive data, you may need to test these and also test your site's overall protection against unauthorized internal or external access. Test Plan: A Test Plan is a detailed project plan for testing, covering the scope of testing, the methodology to be used, the tasks to be performed, resources, schedules, risks, and dependencies. A Test Plan is developed prior to the implementation of a project to provide a well defined and understood project roadmap. Test Specification: A Test Specification defines exactly what tests will be performed and what their scope and objectives will be. A Test Specification is produced as the first step in implementing a Test Plan, prior to the onset of manual testing and/or automated test
QMS/SE/TR01
Version 1.0
Page 11 of 12
Software Engineering – Training Material
suite development. It provides a repeatable, comprehensive definition of a testing campaign
QMS/SE/TR01
Version 1.0
Page 12 of 12