WBS (Work Breakdown Structure) using MS Project can be achieved by Right click on the attribute Task name and then insert WBS field then the structure of the project will be as shown in fig
Sunday, 7 February 2021
Wednesday, 3 February 2021
Reverse Engineering and Re-Engineering
Software Reverse Engineering
Software Reverse Engineering is a process of recovering the design, requirement specifications and functions of a product from an analysis of its code. It builds a program database and generates information from this.
The purpose of reverse engineering is to facilitate the maintenance work by improving the understandability of a system and to produce the necessary documents for a legacy system.
Reverse Engineering Goals:
- Cope with Complexity.
- Recover lost information.
- Detect side effects.
- Synthesise higher abstraction.
- Facilitate Reuse.
Steps of Software Reverse Engineering:
1.Collection Information:
This step focuses on collecting all possible information (i.e., source design documents etc.) about the software.
2.Examining the information:
The information collected in step-1 as studied so as to get familiar with the system.
3.Extracting the structure:
This step concerns with identification of program structure in the form of structure chart where each node corresponds to some routine.
4.Recording the functionality:
During this step processing details of each module of the structure, charts are recorded using structured language like decision table, etc.
5.Recording data flow:
From the information extracted in step-3 and step-4, set of data flow diagrams are derived to show the flow of data among the processes.
6.Recording control flow:
High level control structure of the software is recorded.
7.Review extracted design:
Design document extracted is reviewed several times to ensure consistency and correctness. It also ensures that the design represents the program.
8.Generate documentation:
Finally, in this step, the complete documentation including SRS, design document, history, overview, etc. are recorded for future use.
- Boost up productivity
- Processes in continuity
- Improvement opportunity
- Reduction in risks
- Saves time
- Optimization
- The quality of the software to be re-engineered.
- The tool support availability for engineering.
- The extent of the data conversion which is required.
- The availability of expert staff for Re-engineering.
- Inventory can be nothing more than a spreadsheet model containing information that provides a detailed description of every active application.
- By sorting this information according to business criticality, longevity, current maintainability and other local important criteria, candidates for re-engineering appear.
- The resource can then be allocated to a candidate application for re-engineering work.
- Documentation must be updated.
- It may not be necessary to fully document an application.
- The system is business-critical and must be fully re-documented.
STLC- Software Testing Life Cycle
There are following six major phases in every Software Testing Life Cycle Model (STLC Model):
Each of these stages has a definite Entry and Exit criteria, Activities & Deliverables associated with it.
What is Entry and Exit Criteria in STLC?
Entry Criteria: Entry Criteria gives the prerequisite items that must be completed before testing can begin.
Exit Criteria: Exit Criteria defines the items that must be completed before testing can be concluded
You have Entry and Exit Criteria for all levels in the Software Testing Life Cycle (STLC)
Requirement Phase Testing or Requirement Analysis :
Requirement Phase Testing also known as Requirement Analysis in which test team studies the requirements from a testing point of view to identify testable requirements and the Quality Analysis (QA) team may interact with various stakeholders to understand requirements in detail. Requirements could be either functional or non-functional. Automation feasibility for the testing project is also done in this stage. The following are the Activities in Requirement Phase Testing
- Identify types of tests to be performed.
- Gather details about testing priorities and focus.
- Prepare Requirement Traceability Matrix (RTM).
- Identify test environment details where testing is supposed to be carried out.
- Automation feasibility analysis (if required).
- Deliverables of Requirement Phase Testing
Test Planning :
Test Planning in STLC is a phase in which a Senior Quality Analysis QA manager determines the test plan strategy along with efforts and cost estimates for the project. Moreover, the resources, test environment, test limitations and the testing schedule are also determined. The Test Plan gets prepared and finalized in the same phase. The following are the Activities in Test Planning
- Preparation of test plan/strategy document for various types of testing
- Test tool selection
- Test effort estimation
- Resource planning and determining roles and responsibilities.
- Training requirement
- Deliverables of Test Planning
- Test plan /strategy document.
- Effort estimation document.
Test Case Development Phase
The Test Case Development Phase involves the creation, verification and rework of test cases & test scripts after the test plan is ready. Initially, the Test data is identified then created and reviewed and then reworked based on the preconditions. Then the QA team starts the development process of test cases for individual units. The following are the Activities in Test Case Development
- Create test cases, automation scripts (if applicable)
- Review and baseline test cases and scripts
- Create test data (If Test Environment is available)
- Deliverables of Test Case Development
- Test cases/scripts
- Test data
Test Environment Setup
Test Environment Setup decides the software and hardware conditions under which a work product is tested. It is one of the critical aspects of the testing process and can be done in parallel with the Test Case Development Phase. Test team may not be involved in this activity if the development team provides the test environment. The test team is required to do a readiness check (smoke testing) of the given environment. The following are the Activities in Test Environment Setup Activities
- Understand the required architecture, environment set-up and prepare hardware and software requirement list for the Test Environment.
- Setup test Environment and test data
- Perform smoke test on the build
Test Execution Phase
Test Execution Phase is carried out by the testers in which testing of the software build is done based on test plans and test cases prepared. The process consists of test script execution, test script maintenance and bug reporting. If bugs are reported then it is reverted back to development team for correction and retesting will be performed. The following are the Activities in Test Execution Phase
- Execute tests as per plan
- Document test results, and log defects for failed cases
- Map defects to test cases in RTM
- Retest the Defect fixes
- Track the defects to closure
- Deliverables of Test Execution
- Completed RTM with the execution status
- Test cases updated with results
- Defect reports
Test Cycle Closure
Test Cycle Closure phase is completion of test execution which involves several activities like test completion reporting, collection of test completion matrices and test results. Testing team members meet, discuss and analyze testing artifacts to identify strategies that have to be implemented in future, taking lessons from current test cycle. The idea is to remove process bottlenecks for future test cycles. The following are the Activities in Test Cycle Closure
- Evaluate cycle completion criteria based on Time, Test coverage, Cost,Software, Critical Business Objectives, Quality
- Prepare test metrics based on the above parameters.
- Document the learning out of the project
- Prepare Test closure report
- Qualitative and quantitative reporting of quality of the work product to the customer.
- Test result analysis to find out the defect distribution by type and severity.
Sunday, 24 January 2021
Software Testing
Software Testing is evaluation of the software against requirements gathered from users and system specifications. Testing is conducted at the phase level in software development life cycle or at module level in program code. Software testing comprises of Validation and Verification.
Software Verification deals by Developer
Verification is the process of confirming if the software is meeting the business requirements, and is developed adhering to the proper specifications and methodologies.
• Verification ensures the product being developed is according to design specifications.
• Verification answers the question– "Are we developing this product by firmly following all design specifications ?"
• Verifications concentrates on the design and system specifications.
Validation is process of examining whether the software satisfies the user requirements. It is carried out at the end of the SDLC. If the software matches requirements for which it was made, it is validated.
• Validation ensures the product under development is as per the user requirements.
• Validation answers the question – "Are we developing the product which attempts all that user needs from this software ?".
• Validation emphasizes on user requirements.
Target of the test are -
Errors- These are actual coding mistakes made by developers. In addition, there is a difference in output of software and desired output, is considered as an error.
Fault - When error exists fault occurs. A fault, also known as a bug, is a result of an error which can cause system to fail.
Failure - failure is said to be the inability of the system to perform the desired task. Failure occurs when fault exists in the system.
Testing Approaches :
Tests can be conducted based on two approaches1. Functionality testing or Black-Box testing
2. Implementation testing or White-Box testing
When functionality is being tested without taking the actual implementation in concern it is known as black-box testing. The other side is known as white-box testing where not only functionality is tested but the way it is implemented is also analyzed.
Black-box testing :
It is carried out to test functionality of the program and also called ‘Behavioral’ testing. The tester in this case, has a set of input values and respective desired results. On providing input, if the output matches with the desired results, the program is tested ‘ok’,
- Conditional Testing
- Loop Testing
- Data Validation Testing
- Branch Testing/Path Testing

where E = edge or Number of Edges in the control flow graph
E = 8
N = node or Number of Nodes in the control flow graph
N = 7
P =Number of connected components or Predicate node or Number of Nodes in the exit points
P = 1 ( for single Program the value of p=1)
Therefore the Cyclomatic Complexity Model (M) is
M = E – N + 2P
M = 8 – 7 + 2*1
M = 1 + 2
M = 3
Thursday, 21 January 2021
Software Quality Assurance
Software Testing is a process used to identify the correctness ,completeness, quality of the developed computer software
It also help to identify errors, gaps or missing requirement
It is done either manually or using software tools
General characteristics of strategic Testing
To perform effective testing, a software team should conduct technical reviews
Testing begins at the component level and work towards the integration of entire computer based system
Different testing techniques are appropriate at different points in time
Testing is done by developer of software and for large projects by an independent test group
Testing and debugging are different activities but debugging must be accommodated in any test strategy
Testing Strategies
Software testing is a critical element of software quality assurance and represents the ultimate review of specification, design, and code generation.
It is not unusual for a software development organization to pay between 30 and 40 percent of total project effort on testing.
The engineer creates a series of test cases that are intended to "defeat" the software that has been built.
In fact, testing is the one step in the software process that could be viewed (psychologically, at least) as destructive rather than constructive.
Type of Testing Approach
Verification and Validation approach:
Verification: "Are we building the product right?"
Verification refers to the set of activities that ensure that software correctly implements a specific function.
Validation: "Are we building the right product?
Validation refers to a different set of activities that ensure that the software that has been built is traceable to customer requirements.
- CMM was developed by the Software Engineering Institute (SEI) at Carnegie Mellon University in 1987.
- It is not a software process model. It is a framework which is used to analyses the approach and techniques followed by any organization to develop a software product.
- It also provides guidelines to further enhance the maturity of those software products.
- It is based on profound feedback and development practices adopted by the most successful organizations worldwide.
- This model describes a strategy that should be followed by moving through 5 different levels.
- Each level of maturity shows a process capability level. All the levels except level-1 are further described by Key Process Areas (KPA’s).
- Level-1: Initial
- No KPA’s defined.
- Processes followed are adhoc and immature and are not well defined.
- Unstable environment for software development.
- No basis for predicting product quality, time for completion, etc.
Tuesday, 29 December 2020
Cardinality and Modality
Cardinality is the number of occurrences of one object that can be related to the number of occurrences of another
cardinality can be expressed as one or many
Example: A parent can have many children
but a nation can have only one president
Modality is 0 if the occurrence of relationship is optional and it is 1 if occurrence of relationship is mandatory
Example: For any order there must be a customer
but it is not necessary that the order is processed




















