All Articles

Classes and Objects in C++

Classes are logical abstractions while Objects are instances of the classes that physical existence in the memory. Syntax for class declaration – We could use any number of access specifiers i.e, public, private, protected. But usually it is visually ordered if they are all grouped under only 3 headings. A class is instantiated as a…

Ada

Ada – The Veteran Programming Language

Ada, a descendent programming language mainly of Pascal, is a statically and strong typed, structured and imperative programming language that inherently supports pure object oriented programming, explicit concurrency and tasks, low level access to I/O and data representation, external interrupt handling, synchronous message passing, design by contract and non-deterministic programming techniques. Static Type checking checks…

All Articles

Software Metrics and Models

Software metrics refers to measuring the software qualitatively and quantitatively so that we arrive at a perfect assessment of software quality and other attributes of the Software Product. McCall’s Qualitative metrics for assessing Software Quality The above diagram shows McCall’s software quality factors which may be used to assess software quality during product revision. Accordingly,…

All Articles

Structured Coding Techniques and Perfect Coding Styles

The use of structured coding techniques and styles supports the primary goal of implementation to write quality source code and internal documentation that aid in easy verification with specification, debugging testing and modification. The source code thus generated will be simple, clear and elegant and less obscure, clever and complex. Structured coding techniques aids in…

All Articles

Software Availability

Software Availability is defined as expected fraction of time for which a component or a system is functioning acceptably. If a program has a constant failure intensity ie. it is being operational without any changes or modifications or repairs, then Availability is calculated as the ratio – Availability = Uptime / Uptime + Downtime Here,…

All Articles

Software Reliability Metrics

Software Reliability Metrics relates to measurements made for assessing software reliability. Most of these software reliability metrics evolved from the earlier hardware reliability metrics. The following table gives the various Software Reliability metrics used, their definition and example system in which they can be applied. Software Reliability Metrics Definition Eg. Systems 1. POFOD – Probability…

All Articles

Software Faults

Software Faults Software reliability depends heavily on defects in a software product and a repair activity undergone to correct them consequently as an entity to characterize these defects, Faults is used. Fault can be defined as defective, missing or extra instruction or set of relative instruction that is the cost of one or more actual…

All Articles

Software Reliability

The three of the most important Software product characteristics are – Quality, Cost and Schedule. Quantitative measures exist for cost and schedule. But quantification of Quality is difficult. The lack of quantitative measure for Quality is the main reason for quality problems in Software products. Reliability is the most important of characteristics inherent in the…

All Articles

Fundamental Concepts in Software Design

Fundamental concepts of Software design include Abstraction, Structure, Information hiding, Modularity, Concurrency and Verification. Abstraction – Abstraction is the intellectual tool which enables us to separate the conceptual aspects of the System. For eg: we may specify the FIFO property of a source or stack and functional characteristics of the routines (new, push, pop, top,…

All Articles

Major Activities in Software Design

Software Design is the process of creating the blueprint for the Software system being build. Generally, there are 3 major activities in Software Design – External Design Architectural Design Detailed Design The Architectural design and Detailed design are collectively known as Internal Design. External Design – External design involves conceiving, planning out and specifying the…

Agile development

Software Cost Estimation

Estimating Software cost is an art. Software Sizing is important since the accuracy of the Software Project Estimation depends on – the extend to which the planner has properly estimated the size of the project to be built ability to translate the estimated product size (in terms of LOC or FP) into human effort, calendar…

All Articles

Factors Affecting Software Cost

Its useful for a Software Practitioner to understand the factors affecting Software Cost in order to arrive at close to perfect cost estimates. Most of these are classical factors and is true all the time as long as human write computer programmer in 0s and 1s. The various factors affecting Software cost estimation are as…

All Articles

Programming Team Structures

We have seen traditional and recently popular Software Development Team Structures. Now let us discuss on some specific team structures for the Programming or the Development team. Some of these are very traditional but still are very Generic in nature that will makes sense and could be extrapolated to various different variations. Selection of programming…

All Articles

Software Development Team Structures

In this article we will start by reflecting upon some traditional software development team structures. This will help us appreciate where we came from. Some of these structures still exist in some of the traditional software development teams. Due to the intermingling nature of a Software Development Manager and a Software Project Manager, when you…

All Articles

Managerial Issues of Software Engineering

Software Engineering is the discipline that has historically studied, developed and is continuously improving methods, processes, techniques and frameworks to facilitate the analysis, design, development, implementation and enhancement and continuous evolution of Software Systems. The roots of first Software being written goes back to mid 1800’s when Ada Lovelace wrote the algorithm for the first…

All Articles

Software Engineering

Computer Software or Software is an integral part of this Information Age which enables information collection, storage, processing and management of Information within machines or virtual machines or systems that assists humans. Software Engineering is a discipline which was conceptualized, developed and is constantly reviewed and evolved for planning , modelling, design, development, implementation and enhancement of this…

All Articles

Depth First and Breadth First Traversal

Depth first traversal of a Graph could be used to traverse a directed or un-directed graph and thus creating a spanning tree. Depth first traversal is a pre-order traversal of the given graph or spanning tree. The traversal starts from a node and traverses along the path until it reaches a node which has no…

All Articles

Linked representation of Graphs in C

There are many in-inadequacies in using the Adjacency Matrix representation of Graphs. Once such inadequacy is the difficulty in adding or deleting nodes while data is to be updated dynamically. Another inadequacy is that even if there exists no arc between two nodes, space must be reserved for the same in the array. Such inadequacies…

All Articles

Representing Graphs and Networks in C

A Graph is a data structure that consists of a set of nodes interconnected by directed or un-directed arcs. For a DIRECTED Graph, the ordered pair of nodes are written within angled brackets while for a UN-DIRECTED Graph, they are written within parenthesis. Consider a directed graph as depicted below – Below are the main point to note about the above…

All Articles

Merge and Radix Sorts

Merge Sort Merge Sort is a process of combining more than one sorted files into a single sorted file. The procedure is to divide a file of size n into n sub files of size 1 each. Now combine each adjacent sub files to form a set of n/2 sub files. Sort each sub files….

All Articles

Binary Tree Sort in C

Binary Tree Sort uses a Binary search tree. The various steps involved in such a sort would be – Construct a binary tree with the given data (integers) such that all numbers to the left of a particular node say ‘nd’ is less than the number contained within the node and to the right, the numbers…

All Articles

Selection Sort

A Selection sorting technique uses a general algorithm which uses an ascending or descending priority queue. The idea would be to pre-process input array X[i] into the descending or ascending priority queues by the functions dpqinsert(dpq, x) or apqinsert(apq, x) respectively. Now, the next and final step would be to select data in appropriate order from…

All Articles

Quick Sort

The popular exchange sort mechanisms are Mean sort, Quick Sort and BSort and Quick sort is the most simple one. Quick sort is most applicable exchange sorting technique for practical applications since it uses relatively less time-space resources. Lets illustrate finding Order of a Quick sort algorithm in C. Lets start with the below list…

All Articles

Bubble Sort in C

Lets explain Bubble sort by illustrating tow specific examples involving steps where smaller numbers bubbles to first and when larger numbers bubbles to last. Number list to sort: 2   5   3   0   6   1 Case 1: Smaller numbers bubbles to first Step 1:    0  5  3  2  6  1 Step 2:   0  3  5  2 …

All Articles

Efficiency and Order of a Sorting Program

Efficiency Considerations The following are the efficiency considerations while planning for a sorting program / algorithm – Time required to code the program and the type of sorting technique to be selected Execution time Amount of space required by program In cases where the type of data to be sorted is known, it is easier…

All Articles

Efficiency of Recursion

In general cases, a non-recursive program runs more efficiently than a recursive program since a recursive program requires more execution time to enter and exit from a function. Recursive programs flows directly from the definitions and are easy to implement while a corresponding non-recursive program may involve expensive use of stacks which are difficult to…

All Articles

Recursion in C

Recursion Recursion and Iteration are two different concepts of achieving a result by a number of repeated operations. Iteration involves use of for, while and do-while loops for the repeated operation until specified condition. Recursion involves a recursive function calling itself several times until specified condition. A recursive function represents the most simpler form of…

All Articles

Doubly Linked Lists

Doubly Linked lists eliminates below drawbacks of circular lists – not able to traverse backward not able to delete and node given only points to that node. In a doubly linked list, every node has three fields – left, right and info. Each node has two pointers left and right which points to the left…

All Articles

Dynamic Circular Linked Lists in C

Circular lists eliminates same drawbacks of linear lists. In as circular list it is assumed that items are inserted at the front and the list pointer points to the currently inserted node. Now, in this currently inserted circular list items, node or item is the last node of the list (and is this the rear…

All Articles

Dynamic Linked Lists as Queues in C

When Dynamic Linked Lists are represented as Queues, the first node represents front of queue given by q.front and last node represents the rear of the queue given by q.rear where q.front and q.rear are pointers. Thus Qinsert(q,x) and Qdelete(q) could be implemented as below – Qinsert(q,x){ p = getnode(); info(p) = x; next(p) =…

All Articles

Implementing Dynamic Linked Lists in C

List is a type of dynamic data structure which rectifies certain drawbacks of Stacks and Queues. Lists generally uses the concept of pointers which points to a memory location containing data. The basic structure of a linear linked list is a as follows –   Each item in a list is called NODE. Each NODE…

All Articles

Game Trees

Game Tree is one of the applications of Binary Trees. For example the one implemented for the Tic-Tac-Toe Game. X | X | X O | O |     O |   | The game is between two players who makes moves ‘X’ and ‘O’ on a board of 3×3 positions. The players who wins is…

All Articles

HUFFMAN Algorithm and its implementation in C

Huffman trees are used as message encoding and message decoding trees which is the basic construct of compression and de. The specialty of Huffman tree is that – it helps to reduce the bit codes of each symbol in the message according to their relative frequency of occurrence. the same tree constructed could be used for…

All Articles

Traversing a Binary Tree in C

There are generally 3 traversal strategies for Binary Trees – INORDER, PREORDER and POSTORDER. For eg:, the inorder, preorder and postorder traversal of an expression tree gives the infix, prefix and postfix forms of the expression. Such a traversal could be used to evaluate the value of expression. Example 1 : Consider the following Binary Tree –…

All Articles

C program for Hailstones series

Hailstones is a sequence of numbers that could be generated from any positive number by performing a specific operation on it until it reaches 1. The fact is that any positive number will reach 1 if we perform this operation. If the number is even, we divide it by 2, otherwise we multiply the number…

All Articles

C program to generate random numbers in any range

Here is a C program to generate random numbers between any range of two digit numbers – #include #include main(){ int s, a, b, n, ran; srand(time(0)); // this is to set the seed to current time so we get different random numbers in each try printf(“\nEnter lower limit>>”); scanf(“%d”,&a); printf(“\nEnter upper limit>>”); scanf(“%d”,&b); printf(“\nEnter…

All Articles

for loops in C

The ‘for’  loop is another important looping structure which could replace ‘while’  and ‘do .. while’ loops. It has a special feature that the initialization, test condition and the increment or decrements of test variable could be placed in a single line following the ‘for’ keyword as shown below – for (initialization; test condition; change…