Never underestimate the power of Passion!

Showing posts with label Software Engineering. Show all posts
Showing posts with label Software Engineering. Show all posts

Tuesday, 25 April 2017

On 05:49 by Vardan Kumar in , ,    2 comments
Automation-Analysis

Software Development-Role of Automation in analysis phase

What is Automation and why it should be performed?

Well, automation is any technique introduced to let our machine perform some task without any manual intervention or some manual intervention can be used if it is semi-automation. Machine can perform the task through a script , a code or an application depending on the requirement.

For Example

Writing a code that would perform repetitive database operations as in suppose inserting a large amount of data in database through an excel workbook. This kind of task can be so tedious when trying to do manually.

Why it should be performed?


  • In today's world time is money, you got it right definitely to save some of  those intense man hours, an automation process can be introduced.
  • Learning is the key: Well while in analysis phase of a software development life cycle, a lot of documentation is required, the data capture if done manually could not add much your skill set, but writing some script or code to automate the documentation process would add a lot to your skills.
  • Make your work interesting: Imagine, what if you spend your working hours capturing data in excel workbook, well sounds really boring, right! Letting your code do the same would definitely save those boring hours.
When Automation should not be done?

It is not always advised to automate the work, Whenever your work is not repetitive and building some code or script may take more time than your work, don't go for automation off course.

Analysis Phase in Software development Life cycle:

Analysis is one of the most important phase in any software development life cycle. A lot of documentation is required in this phase. Analysis could be any as in impact analysis on source files for a particular change orders, fetching dependencies or selecting some data from database as in describing tables etc. .

Instead of spending lot of hours digging your eyes into the computer screen it is better to write a code once according to your requirement and let your code do the rest.

Doing this will ensure accuracy, if all scenarios are taken care of off course, add a lot to your logic building skills as well as skill set and also if you are a part of a major project you can share your application with your team mates. This will eventually get you more rating bands off course.

Let us discuss some scenarios where automation can play a crucial role in the analysis phase of the software development life cycle....

Automation software
Automation Analysis


Scenarios

  • Suppose you are a part of a major project in which a certain identifier's name is required to be changed and you or your team are required to prepare an impact analysis document where you have to capture the source files or the part of project's code being impacted with that identifier and main thing you have thousands of source files that are need to be traversed. Now what would you do
    • Either spend those boring hours, opening your source files and count the number of occurrences of that identifier if any and capture it an excel workbook.
    • Or write a code once and let your machine generate impact analysis document for you.
    • Code could be any, a small c# windows form application would do or a small shell script can serve the purpose
  • Let us consider another scenario, suppose you have a list of  hundreds or thousands of database tables for which you have to capture number of records corresponding to a table along with all its column alongside their data types in an excel workbook, what would you do.
    • Either connect to database, describe each and every table, capture columns alongside its datatype for the same and select count(*) from table_name.
    • Or provide list of tables in a flat file and let your code process on each and every table one by one and capture the required data for you in an excel workbook for the same.
    • Use of system tables in a small c# application would solve the purpose.
  • Let us consider one more scenario, suppose you are to capture relative path of a file in which a particular identifier is being referred to in your your local directory or a sub-directory.
    • Now doing it manually capturing data or path could be tedious and kind of a good for nothing task.
    • Building an application that would capture path along side file name for you sounds quite interesting and a productive task.

There are a lot more scenarios that no one can imagine of. Doing such automation could be productive upto a great extent, its just the matter of choice.

Saturday, 27 June 2015

On 23:20 by Vardan Kumar in ,    No comments
Verification vs Validation

DIFFERENCE BETWEEN VERIFICATION AND VALIDATION

Before we head on to the differences let us discuss what verification and validation actually are in software engineering...

Verification vs Validation
Verification vs Validation

VERIFICATION:

Verification is defined as the process of evaluating and examining products of a development phase to find out whether or not they meet the specified and necessary requirements.

VALIDATION:

Validation is defined as the process of evaluating and examining software product at the end of development phase to figure out whether the software conform the customer's expectations and requirements.

DIFFERENCE BETWEEN VERIFICATION AND VALIDATION


VERIFICATION
VALIDATION
1.Verification is process of evaluating as well as examining products of a development phase to find out whether they conform to the specified requirements.
1.Validation is Process of evaluating software product at the end of development phase to find out whether software conform to the customer's expectations and requirements.
2. Its aim is to make sure that the product being developed is as per requirements and design.
2. Its aim is to make sure that the product actually conform to the user’s requirements, and also check whether or not specifications are correct at first place
3. Following activities are involved in association with verification:Reviews, meetings and inspection.
3. Following activities are involved in association with validation:Black box testing, white box testing, gray box testing.
4. Performed by Quality Assurance team.
4.Performed by software testing team.
5.Examination of execution of code does not come under verification. 
5. Examination of execution of code comes under verification.
6. Describes whether or not the outputs are according to inputs.
6.Describes whether or not the software is accepted by user.
7. Performed before validation.
7. Performed just after verification.
8. Cost of errors figured out here is less than those errors found in validation.
8. Cost of errors figured out here is more than error found in validation.
9. Basically involves the manual checking of the documents and files.
9. Basically involves the checking of developed programs.
10. It can be interpreted as:
Are we building the system right?
10. It can be interpreted as:
Are we building the right system?









Wednesday, 24 June 2015

On 11:06 by Vardan Kumar in ,    No comments
White Box vs Black Box

Difference between White Box Testing and Black Box Testing

Before we head on to the differences lets discuss what white box and black box testing actually are?

White box Testing vs Black Box Testing
White Box vs Black Box



WHITE BOX TESTING:

The testing technique which deals with the program code of system under test is called as white box testing.Obviously for doing so the internal structure of the software must be known and hence generally performed by a software developer.


BLACK BOX TESTING:

The testing technique which deals with the functionality of system under test is called as black box testing.There is no need to know the internal structure and implementation of the software to perform this.Generally independent software testers are hired to perform this.

So lets move on to the:- 

Difference between White Box Testing and Black Box Testing

BLACK BOX
WHITE BOX
1. Black Box Testing is a software testing method in which the internal structure/ design/ implementation of the item being tested is NOT known to the tester
1. White Box Testing is a software testing method in which the internal structure/ design/ implementation of the item being tested is known to the tester.
2. Generally, independent Software Testers
2. Generally, Software Developers
3. Knowledge of programming language is not required.
3. Knowledge of programming language is required.
4. Implementation knowledge is not required.
4. Implementation knowledge is required.
5. Requirement specifications are the basis for test cases
5. Detail design is the basis for test cases.
6. Black Box testing primarily concentrates on the functionality of the system under test.
6. White Box testing is primarily concentrate on the testing of program code of the system under test
7. Black box testing means functional test or external testing.
7. White box testing means structural test or interior testing.
8. Testing is applicable on higher levels of testing
8. Testing is applicable on lower levels of testing
9. The Functional testing, Behavior testing, Close box testing is carried out under Black Box testing.
9. The Structural testing, Logic testing, Path testing, Loop testing, Code coverage testing, Open box testing is carried out under White Box testing.
10. Applicable on System Testing, Acceptance testing.
10. Applicable on Unit Testing, Integration testing.







Monday, 22 June 2015

On 03:27 by Vardan Kumar in ,    No comments
Faults vs Failures

Difference Between Software Faults and Software Failures


Before we move on to the differences let us discuss what faults and failures actually are....

Software faults vs Software failures
Faults vs Failures


FAULTS:

A software fault is a programming error that is not figured out or we can say that software fault is a hidden programming error.It may cause a software failure.

FAILURES:

Deviation of software's performance or behavior from expectations is software failure.These may be manifested due to faults in software.

So now let us discuss Difference between software faults and failures

FAULTS
FAILURES
1. Software fault is a hidden programming error.
1.  Software failure is deviation of software functionality from user expectation.
2. It is a software defect  that may cause/causes a failure
2. It is inability of software to perform its required functions.
3. Manifested as an error in software.
3. Manifested as a fault in software.
4. An error becomes a fault when it is written in any of the developed software products.
4. Failure occurs when the software does not behave as it is desired to, which reveals a fault in the software.
5. It occurs as a result of errors, bugs, mistakes.
5. A fault becomes a failure only when the exact computation conditions are met, and the faulty portion of the code is executed on the CPU.
6. It may be called buggy.
6. It may be called defective.
7. Could be an accidental condition which was never planned for.
7. It is fault in software, when the conditions for the bug get realized (which may never happen at all).
8. It is passive in nature.
8. When fault becomes active, failure occurs.
9. It is error not detected by developer
9. It is defect visible to end-user.
10. A fault is a crash and may be caused by dividing by 0, accessing bad memory, reusing a deleted pointer (address), etc.
10. A failure may be caused due to software as well as hardware problems such as  change in compilers, platforms etc.


Saturday, 16 May 2015

On 11:48 by Vardan Kumar in ,    No comments
Test Stub vs Test Drive

Difference between Test Stub and Test Drive

Before we begin with the differences let us discuss,what test stub and test drive actually is in software engineering.

As the name suggests test stub and test drives both are testing tools which differ in functionality from each other

Difference between Test stub and Test Drive
Test stub vs Test drive

Test Stub

These are the non-functional programs that imitates the regulation of a module in the source code of a software's self contained part.

For instance,let us say that we need to complete eight modules in a software but we are ready with just seven modules and we have got no time left,then test stub will simulate as if its the eight module in testing process.

Test Drive

These are the small codes that passes test control/intervention to another code.It usually provides a testing surroundings to a separate component of the source code. 

Suppose you have designed a game of chess and let us say a player has input to move Knight to  a certain square,then it would be test drivers to ensure whether the Knight is at expected square or not.

DIFFERENCE BETWEEN TEST STUB AND TEST DRIVE

TEST STUB
TEST DRIVE
1. Used in top down testing.
1. Used in bottom up testing
2. High level objects are created first.
2. Low level objects are created first.
3. Substitute for actual code.
3. Substitute for missing code.
4. Used when main module is complete and sub-module is still incomplete.
4. Used when Sub- module is complete and main module is still incomplete
5. Simulates low level modules.
5. Simulates high level modules.
6. A test tool that replaces a called component.
6.  Replaces an object that takes care 
of calling of a component
7. Used only to analyze outputs.
7. Often used to analyze inputs.
8. Emulate a called function.
8. Emulate a calling function.
9. Module that stands in for an unfinished portion of a system.
9. Module which is used to invoke a module under test.
10. Stubs can be filled in to form the actual method.
10. Drivers can become automated test cases..


THESE WERE THE DIFFERENCES BETWEEN 
TEST STUB AND TEST DRIVES.


Thursday, 14 May 2015

On 12:26 by Vardan Kumar in ,    No comments
Coding vs Designing

Difference between Coding and Designing


Before we begin with the differences let us discuss,what coding and designing actually is in software engineering.

Coding vs Designing
Coding vs Designing

CODING

In software engineering there are certain steps followed in order to develop an effective and efficient software.There are various phases involved in development process whose sequence depends on the LIFE CYCLE model we follow.Coding is one of the crucial phase in the software development process in which the actual source code is written by the programmer according to design and specifications of the software.

DESIGNING

Designing is also a key step involved in the software development process which is even more time consuming than the coding phase.Designing is done to provide an architectural view to the software according the requirement analysis and guidelines provided by the customer.It is usually done before coding or we can say coding is technical implementation of design.

Now lets head towards the Difference Between Coding and Designing....

Difference Between Coding and Designing

CODING
DESIGN
1. Coding do specify a    language.
1. Design does not specify any language.
2. Machine specific implementation of design.
2. It is description of logic used to solve the problem.
3. Consumes less time than design phase.
3. More crucial and consumes more time.
4. Concerned with Software’s technical aspect than functional .
4. It includes designing User interface, Process, Database.
5. Level of abstraction is less
5. High level of abstraction.
6. Coding is done after designing
6. Designing is done before coding.
7. Less expressive
7. More expressive.
8. Less Flexible.
8. More Flexible.
9. It does not reflect abstract concepts.
9. It reflects abstract concepts.
10. It shall not include new functionality.
10. It shall include new functionality
This was the difference between Coding and Designing in software engineering.

Also read Difference between Test stub and Test Drive