Subscribe by Email


Showing posts with label Approaches. Show all posts
Showing posts with label Approaches. Show all posts

Saturday, May 11, 2013

What is meant by Deadlock? List the necessary conditions for arising deadlocks?


Consider two competing processes or actions in a situation where both of them wait for each other to be done and so neither of them ever finish. Such a situation is called a deadlock. 
- When the number of competing processes is exactly two, then it is said to be a ‘deadly embrace’. 
- The two involved competing actions tend to move towards some sort of tragedy which might be mutual extinction or mutual death. 

"In operating systems a situation occurs where two threads or processes enter the waiting state at the same time because of the resource that they both want is being used by some other process that also in waiting state for some resource being held by another process in waiting state and so on". 

- It so happens that the process is then unable to change its state since the resources it requires are being used by the other processes which is then keeping the process in waiting state indefinitely. 
- The system is now in a deadlock. 
- Systems such as the distributed systems, parallel computing systems, multi-processing systems face the problem of being in a deadlock quite often. 
- This is so because here the hardware and software locks are purposed for handling the resources that are shared and implementing the process synchronization. 
- Deadlocks may also occur in telecommunication systems because of the corrupt signals and their loss rather than resource contention. 
- A deadlock situation can be compared to problems such as that of the catch-22 or chicken or egg problem. 
- A deadlock can also occur in a circular chain pattern. 
For example, consider a computer having 3 processes and corresponding 3 CD drives i.e., one held by each process. 
- Now all the three processes would be in a deadlock if they all request another drive.

Conditions for a Deadlock to arise

There are certain conditions that should be there for a deadlock to arise:
  1. Mutual exclusion: There has to be at least one resource that cannot be shared. So that only one process would use at any given time.
  2. Resource holding (or hold and wait): There should be at least one resource held by a process that in turn should be request more resources that are being held by other processes.
  3. No preemption: Once the resources have been allocated, they should not de-allocated by the operating system. The condition is that the process holding the resource must release it voluntarily.
  4. Circular wait: A circular chain of processes must be formed as explained in the earlier example.
"These 4 conditions for deadlock are collectively called the ‘Coffman conditions’. If any of these conditions is not met, a deadlock can’t occur".

- Handling a deadlock is an important capability of the operating systems. 
However, there are many modern operating systems that still cannot avoid deadlocks. 
- On occurrence of a deadlock many non-standard approaches are followed by different operating systems for handling it. 
- Many of these approaches try to avoid at least one of the Coffman conditions (generally the 4th one). 
- Below we discuss some of the approaches:
  1. Ignoring deadlock
  2. Detection
  3. Prevention
  4. Avoidance
- There is a second kind of deadlocks called the ‘distributed deadlock’ and it is common where concurrency control is used or we can say in the distributed systems. 


Saturday, June 30, 2012

What are the advantages of optimizing test automation process?


Like all the other processes in the field the test automation process has also been optimized and has reaped huge benefits. 
- Test automation is carried out for the manual testing processes employing formalized testing processes and this automated test is then further optimized to make it much more effective. 
Test automation is like any other process that requires writing a computer program that will do a particular thing like testing in the case of test automation. 
- Test automation takes a lot of time but once if done can save a whole lot of time afterwards.

In this article we are going to discuss the effect the optimization inflicts up on the test automation process plus we will also chalk up the advantages as well as disadvantages of optimizing the test automation process. 

- Throughput represents a very critical issue in almost all the testing processes.
- It is quite important to take care of the throughput factor especially at the maintenance level. 
There are some general rules and approaches that have been defined to be used during the analyzation of the total requirements of the software testing system and these rules and approaches have worked wonders in reducing the test time. 
- Apart from these rules and approaches there are other things like new programming environments, new interface standards (like Ethernet) that helps in making a significant improvement in the testing system. 

Till now a variety of approaches have been validated that can be used for the optimization of the test automation process in order to increase the throughput.
For optimization we can say that using it one can make significant gains only with a modest investment of time and effort. The software quality can be optimized by adopting the best of the software testing methodologies available, tools, processes and of course people.

For further optimizing your test automation process you must take a look at the below mentioned aspects:
  1. Code, documents and inspections.
  2. Unit testing
  3. Prototyping
  4. Allocation of the time and other resources.
  5. Designing and coding according to the testing.
  6. Automation of the regression testing.
  7. Designing of the tests for the verification of the user expectations and specifications.
  8. Document analyzation
  9. Performing positive root cause analysis.
- Some of the software systems and applications are quite small and simple and so the time taken to process the requests is quite less and negligible. 
- However, when it comes to the larger software systems and applications, the optimization of the test automation process can save a lot of time for even the most basic test case.
- For testing any big and complex software system or application, the optimization becomes crucial. 
- The goal of every software tesing methodlogy is to ensure that the software applications works just like what the customer has figured in his/ her perspective. 
- One of the myth about the optimization is that it is quite expensive and hence it should be used when extremely necessary.
- There are people who believe that 100 percent optimization of the test automation process is an ultimate objective. 
- However there is no particular formula, the relative merits of the optimization of the test automation process depends up on many factors. 
- When you optimize the test automation process, the efficiency of the whole automation process is increased gradually. 

Everyday we witness a dramatic increase in the complexity of the computing environments which puts quite a great pressure on the automated testing thus calling for optimization. 


Wednesday, June 27, 2012

What is the key difference between preventative and reactive approaches to testing?


There are two main approaches to testing namely:
  1. Preventative approach to testing and
  2. Reactive approach to testing

What is Preventive Approach to testing?


- Preventative approach to testing is analytical in nature but reactive is rather heuristic.
- The designing of the preventative tests takes place after the production of the software. 
- On the other hand, the reactive tests are designed quite early i.e., in response to the feed back or review comments given by the customers.
- But both of these tests are designed as early as possible. 
- On an overall basis, preventative tests are created earlier than the reactive tests. 
- The preventative testing approach is based up on the philosophy that the quality of the software system or application under testing can actually be improved by testing if it is done early enough during the software development life cycle.
- However, one specification is to be followed for implement this approach to testing which is that test cases should be created for the validation of the requirements before the code is written.
- Preventive approach is followed because it can be applied to all the phases of the project and not just to the code. It also reduces cost of correcting the underlying faults. 

What is Reactive approach to testing?


- Reactive approach to testing is considered to be a performance testing activity in the field of performance management. 
- The developers often do not think about the performance of the software system or application that they are developing during the early stages of the SDLC or software development life cycle. 
- More often, the performance quotient is neglected till the testing of the system is complete. 
This is known fact that the performance of a software system or application revolves around its architecture. 
- Designing an effective architecture is a high cost activity and in some of the cases the whole system is trashed because of the presence of the huge deviations in performance factors. 
However, waiting for problems related to the performance to surface and then dealing with them is not always the best option. 
- So, performance testing is considered to be a reactive approach to testing since the system does not gathers much importance during the early stages of the life cycle. 
- Reactive approach to testing is more of a kind of a “fix it later” approach which is less effective than the preventative approach.
- Even quality control is a reactive approach to testing. 
- Every step of the production development cycle involves quality control. 
- It is not that the developers are simply sitting idle and noting down all the areas where potential issues are suspected after the final outcome.

Importance of both the approaches


- Actually preventative and reactive approaches are considered to be two “test strategies” which are used to define the objectives of the software’s testing and how they are to be achieved. 
- These two approaches also act as a determining factor in the cost and amount of effort that is to be invested in the testing of the software system or application. 
- In preventative approach the testers are involved right from the beginning of the project. 
- The specification and preparation i.e., test planning and test design is also carried out as soon as possible. 
- Preventative approach involves activities like:
  1. Reviews
  2. Static analysis
- Contrary to the preventative approach, in reactive approach testers are involved late in a project.
- The test planning and designing is started after the development of the project has ended. 
Reactive approach involves techniques like exploratory testing.



Thursday, May 31, 2012

What are the differences between waterfall, spiral, iterative and scrum processes?


The waterfall, spiral, iterative and scrum are all agile software development models! At a glimpse of them, they may all seem like similar software development processes. But this is absolutely wrong! At surface they may appear to be one and the same but when you go in to the depths of the understanding of these processes you will come to know that there is a “considerable” difference among them. 
In this article we are going to discuss among all these processes. Let us go through these processes one by one:

1. Waterfall Model: 
- Waterfall model follows a sequential design rather then following a haphazard order of processes. - By the name itself you can make out the flow of the development is downwards like a water falling down an actual waterfall. 
- Most of the agile software development models have same number and types of phases, but the way they are implemented is different.
- The waterfall model can only be implemented in the software projects that require highly structured development environments. 
- This is the only agile development process that can be adapted for both the hardware and software projects. 
- If you have implemented waterfall model for the development project you cannot move on to the next phase before completing the previous one.
- However, in some very extreme cases, the developers hold the privilege to modify it to suit their needs. 
- The water fall model is based up on the philosophy that if you spend more time in the early phases looking for the errors and faults, the less time and effort will be spent in the later stages which are quite complex too.

2. Spiral Model:
- This software development model is a resultant of the combination of prototyping in stages and designing and thus possesses the combined advantages of both the top down and bottom up concepts. 
- Unlike the other software development processes, the spiral model is intended for use in the projects that are quite large, expensive and complicated. 
- Prototyping is nothing here but the iterative development combined with the controlled aspects of the waterfall model.
- It does allow for the incremental releases of the software at the end of every refinement. 
- Unlike the waterfall model, the spiral model is inclusive of the risk management for the identification of the major risks whether managerial and technical and determines how to lessen it. 
This model evolves around the idea of the continuous refinement of the requirements definition, requirements analysis, implementation and software design and so on. 
- This model makes use of the same stages as the waterfall model but they are separated by risk assessment, planning and building of prototypes and simulation. 
- Documentation is produced whenever needed and not unnecessarily.

3. Iterative and Incremental Development: 
- This software development model was developed as a means to overcome the minus points of the waterfall model. 
- Unlike the other software development processes, this one starts with a lot of initial planning and continues with many cyclic interactions and finally ends with deployment.
- This software development model in turn forms a very important part of many other agile software development process like RUP and extreme programming. 
- The iterative and incremental development model is known to follow plan- do- check- act cycles of the business process improvement.

4. Scrum: 
- Scrum is so contrasting with all the other software development processes. 
- The waterfall model is intended to complete the project in one discipline one step at a time and goes for the next discipline in next step. 
- It delivers the business value at the end itself but this is not the case with the scrum!
- Here with every iteration a business value is delivered.


Sunday, May 20, 2012

What is meant by time boxed iterative development?



The iterative type of the agile software development has always been the favourite choice of the developers and testers when it comes to adopting a time and effort efficient and effective agile software development process. 
Till now three approaches to the iterative development have been developed namely:
      1. Risk based iterative development
      2. Client based iterative development
      3. Time boxed iterative development

This article is here to focus up on the time boxed iterative development. But before we move on to the time boxed iterative development, let us brief up ourselves with the concepts of the iterative and incremental development so that it will be easy for us to understand the time boxed iterative development better.  

What is Iterative Development?


- Iterative and incremental development is an essential part of the agile software development process and lies at the heart of it.
- The iterative came in to existence as a response to the weaknesses of the other agile software development models especially the waterfall model.
- Apart from just being an essential part of the agile software development, it is also necessary to the extreme programming, rational unified process and many other agile software development frame works. 
- It is based up on a similar process of the business process improvement. 
- The iterative development is a way to develop a whole software system or application in small steps via the repeated cycles at a time. 
- There are two approaches that can be followed for accomplishing a task:
   1. We can either work non stop to accomplish the goal or
   2. We can define a time limit for ourselves and achieve as how much we can in that time period. 

The second approach is called time boxing. 

What is a Time Boxed Approach?


- It is a simple one yet effective technique from the perspective of planning and over the years has been found effective in completing the jobs within a time limit. 
- If we look at this approach from the perspective of planning, it is found to be useful in the development processes which are involved with the development of a complex software system or application and the starting point is quite uncertain. 
- On the other hand if we look at it from the perspective of the personal development, it is extremely helpful in improving the effectiveness as well as the productivity.
- In fact this approach is quite easy to follow but requires maximum effort. 
- Using time boxing approach, you fix up a time period and try to achieve the maximum you can within that time frame. 

What is meant by Time Boxed Iterative Development


- Time boxing approach employed for the iterative development is termed as the time boxed iterative development. 
- In such an approach to iterative development the task is divided in to several small iterations and each iteration is provided with a time box.
- Each of these iterations has its own budget, deadline and the deliverable
- In some cases, time boxing iterative development is employed for managing the risk.
- Since it is important to meet deadlines, it is necessary that the deadlines are not changed without the prior permission of the project owner. 
- An inadequate breakdown of the task can lead to the underestimation of the time requirement of the project. 
- To avoid changing of the deadline following three points can be followed:
  1. Reduction in the scope: requirements having lower impact can be dropped from the plan.
  2. Keeping time as the fixed constraint throughout.
  3. Increase in the cost: the resources and the over timing can be added in to the plan.
Many projects that have been developed with the time boxing technique have been reported to be successful. 


Saturday, May 19, 2012

What is meant by risk-driven iterative planning?


So many approaches to iterative development and planning have been developed under the context of the agile software development process. Risk based iterative planning is one of such approaches and this is what that has been discussed in this article.

About Iterative Development


- The iterative development is based on the idea of carrying the development further step by step or incremental accomplishing one goal with each step.
- This is different from the normal approaches which take a momentary leap from the problem to the solution. 
- Such small development steps keep the development process on track and moreover it is much easier to test these small steps rather than testing the whole development process in one go.
- These steps are commonly known as the loops and are repeated throughout the development process.
- An iterative process may contain various loops depending on the complexity of the problem.
- Also depending up on the degree of the uncertainty of the problem and the situation, the looping can take various forms. 

What is Risk Based Iterative Planning


Below mentioned are the steps that are included in a typical risk based iterative planning:

1. Problem formulation: This step involves the defining of the following aspects:
(a) Time scope: the yearly programs are linked to their yearly budgets and other multiple time scopes are also defined.
(b)  Situation: the situation is defined and broken down in to smaller partial activities which are not interconnected with each other. A frame work corresponding to the budget of the problem is created.
(c)  Stake holders: the participation of the stake holders is identified and the decision maker is supposed to have full knowledge about the whole development process.
(d)  Risk: all the risks associated with the whole development process as well as the project are identified and the iterative plan is developed based on it.

     2. Information gathering: The information to be gathered regarding the project includes:
     (a) Strengths
     (b) Weaknesses
     (c) Opportunities
     (d) Threats
     (e)  Level of mobilization
     (f)  Stake holder identification
     (g) User response and so on.

     3. Vision Building: A vision is created for the development process which states how the goal can be achieved.
     4. Strategy Formation: A strategy or approach is defined to accomplish the purpose and the people involved are assigned different responsibilities and they are granted powers as per the contractual agreement.
     5. Implementation: To implement the plan power is granted to the participants and some times partnership is also formed.
     6. Evaluation of the development process: The development plan is evaluated based on certain factors like risk, reliability, stability and so on.

     

Always Remember about Risk Driven Iterative Planning


- Each iteration by itself is of no use! 
- It is only when all the iterations are put together that they become useful. 
- One point that you should always keep in your mind is that you should be as specific as possible while designing a risk based iterative plan. 
- Try to keep the length of the iterations as short as possible so that you can complete the iterative development in the allocated period of the time. 
- The most critical and difficult of the iterative planning is the generation of the tasks.
- The techniques you are using should have been stream lined to fit your time and cost budget. 
- You need to maintain a flow between all the iterations. 
- Remember that you may organize your development process in to iterations but that is not exactly what is called the agile development.
- The iterative planning is also called the sprint planning. 
- The iterative planning based up on the associated risks proves to be quite useful since it helps in avoiding many of the grave problems that can later hamper all the development efforts. 


Monday, April 30, 2012

What are basic practices of iterative development?


So many software development processes have come up with the specifications and benefits of their own. The iterative development is one such development strategy which has been identified as an agile software development process. 

The basic practices of the iterative development have been discussed here. But, before moving on to the approaches will have brief discussion regarding the iterative development.The iterative part forms the first half of the heart of the cyclic software development process with the other half being formed by the incremental development. 

The iterative development strategy was the resultant of the response to the weaknesses spotted in the water fall model of the software development and testing. Like any other cyclic software development process, the iterative development process also has its starting with an initial planning and ends up with deployment and it has so many cyclic interactions happening in between the ned points. 

The iterative development process forms an important and non neglect-able part of the following processes;
  1. Rational unified process or RUP
  2. Extreme programming or XP and
  3. Various other agile software development methods
The idea of a simple business process improvement has been implemented in the iterative development which has its flow like as shown below:

Plan à DO à Check à Act

What is meant by Iterative Development?

- Iterative development is itself an agile software development strategy which has its basic idea revolving around the use of the iterations in smaller intervals of time called the incremental.
- This agile software development strategy helps the testers and the developers to exercise their past experience of the learning in to the current testing scenario.
- With every new iteration, the design of the software system or application is modified and is incorporated with some new functionalities or features. 
- The procedure for the iterative development process consists of the following steps:
  1. The Initialization step
  2. The iteration step and
  3. Project control list
- The first step i.e., in the initialization step involves the building up of the foundation or the base version of the proposed software system or application.
- Actually, a base version is created so that the user can react with the software product and also to have a key sample of the problems of the software system or application and also possible solutions that are easy to understand and implement.
- The control list contains all the tasks that have to be performed in order to complete the software development process. 
- As the analyzation phase progresses, the project control is also revised timely and frequently as and when any change in the requirements is wanted.
- With every iteration, a task from the project control list is accomplished or redesigned. 
- The below mentioned are some of the goals of the iterative development process:
  1. Simplicity
  2. Straight forward
  3. Modular
  4. Redesigning supportive at that particular stage etc.
- Every iteration is analysed on the basis of the below mentioned factors:
  1. Structure of the iteration
  2. Modularity
  3. Usability
  4. Reliability
  5. Achievement of goals and
  6. Efficiency
Based on the results of the above factors, the project control list is modified accordingly.

Phases of Iterative Development

 The whole iterative development consists of the following 4 phases:
  1. Inception phase: It involves identification of the project scope, risks and both the functional as well the non functional requirements.
  2. Elaboration phase: It involves the delivery of a working architecture fulfilling all the requirements and mitigation of the top risks.
  3. Construction phase: It involves implementing the production ready code in to the architecture.
  4. Transition phase: It involves delivery of the project in to the production environment.


Wednesday, April 4, 2012

What is meant by adaptive and predictive planning?

Learning is an important aspect of any development process be it of any field. Learning can be classified in to many types, but in this article only two types have been discussed namely:
- Adaptive learning and
- Predictive learning

Adaptive Planning or Learning

- Adaptive learning is considered to be a computer driven educational method in which the computers are the interactive teaching devices rather than having human teachers do the teaching.

- The presentation of the educational material is adapted by the computers according to the weaknesses of the students which are determined by the responses of the students to the questions asked by the computer.

- Here the whole learning process is motivated by the idea of using electronic education for incorporating the interactive values to a student that would have been provided by an actual human tutor or teacher.

- This technology encompasses various aspects taken from the fields like education, psychology, computer science and so on.

- Adaptive learning was evolved because it is not possible to achieve tailored learning with non adaptive and traditional approaches.

- The learner is transformed from the passive receptor of the information to the collaborator of the educational processes.

- The primary application of the adaptive learning is in basically the following two fields which have been designed as both web applications and the desk top applications:
1. Education and
2. Business training.

Adaptive learning is also known by several other names like:
1. Computer based learning
2. Adaptive educational hyper- media
3. Intelligent tutoring systems
4. Adaptive instructions
5. Computer based pedagogical agents

Models or Components of Adaptive learning

The whole process of adaptive learning has been divided in to some separate models or components as mentioned below:

1. Student Model
- This model keeps a track of the student and learns about him.
- This model makes use of algorithms that have been researched for over 20 years.
- The CAT (computer adaptive testing) makes use of the simplest means for the determination of the students’ skill.
- Nowadays, the students’ models make use of richer algorithms for providing a more extensive diagnosis of the weaknesses of the students.
- This it does by linking the questions and the concepts and using ability levels to define the strengths and weaknesses.

2. Instructional model
- This model is actually responsible for conveying the information.
- It makes use of the best technological methods for educational purposes like multimedia presentations along with the expert teacher advice.
- When the students make mistakes, the model provides them with useful hints.
- These hints can be question specific.

3. Instructional environment
This provides an interface for the system and human interaction.

4. Expert model
- This model is responsible for teaching the students using the stored information which is to be taught.
- This may include solutions for question sets, lessons and tutorials.
- Some very sophisticate expert models may use expert methodologies for the illustration of the solution of the questions.
- In some of the adaptive learning systems, the qualities of an expert model may be acquired by an instructional model.

Predictive Planning or Learning

- The predictive learning involves machine learning i.e., to say an agent has to build a model of its own environment type by carrying out various actions in several circumstances.

- The knowledge of the effects of the actions tried out is used for turning the models in to planning operators.

- This is done so that the agent is able to act purposefully in that environment.

- We can say that the predictive learning is all about learning with a minimum of the mental structure that exists already.

- Some say that this kind of learning has been inspired by the Piaget’s account of the construction of knowledge of the world by interacting with it.


Monday, March 26, 2012

What is the difference between quality assurance and testing?

Quality assurance and testing are the processes that together keep up a control on the quality check of the software system or application. These two processes when implemented together ensure that maximum quality of the software system or application is maintained as much close as possible to the 100 percent.

There is no such software or application that can boast to have 100 percent customer satisfying quality. Well this article is focussed up on these two processes only and the differences between the two. We are discussing differences here because most of the people often confuse between the two.

QUALITY ASSURANCE

- The term “quality assurance” is a self justifying.

- By the term only we can make out that it must be some systematic and planned activities that are to be implemented in a quality system so that a check over its quality requirements is maintained.

- It involves the following processes:
1. Systematic measurement of the quality of the software system or application.
2. Comparison of the quality of the software system or application with the pre- defined quality standards.
3. Monitoring of the processes.
4. An associated feedback for conferring the error prevention.

- A typical quality assurance process also keeps a quality check on the quality of the tools, assemblages, equipments, testing environment, production, development and management processes that are involved with the process of the software testing.

- The quality of a software system or application product is defined by the clients or the customers rather than having a whole society do it.

- One thing that one should always keep in mind that the quality of a software system or application cannot be defined by quality adjectives like poor and good since the quality of one of the aspects of the system could be high and in some other aspect it could be low.

PRINCIPLES OF QUALITY ASSURANCE
The whole process of the quality assurance is guided by the two following principles:

1. Fit for purpose:
The software product is deemed to fulfil the purpose for which it has been made and
2. Right first time:
The mistakes encountered for the first time should be completely eliminated.

TESTING PROCESSES EMPLOYED IN SOFTWARE TESTING & QUALITY ASSURANCE
Below we are mentioning the testing processes that are employed for both the software testing as well as the quality assurance:

1. Testing approaches:
(a) White box testing
(b) Black box testing
(c) Grey box testing
(d) Visual testing

2. Testing levels:
(a) test target:
(i) unit testing
(ii) Integration testing
(iii) System testing
(b) Objectives:
(i) regression testing
(ii) User acceptance testing
(iii) Alpha and beta testing

3. Non functional testing:
(a) Performance testing
(b) Usability testing
(c) Security testing
(d) Internationalization and localization
(e) Destructive testing

4. Testing processes:
(a) waterfall model or CMMI
(b) Extreme or agile development model
(c) Sample testing cycle

5. Automated testing using tools and measurements

In fact both the processes are just the same but with a different perspective i.e., the software testing is aimed at eliminating the bugs out of the software system and the quality assurance takes in to consideration the overall quality of the software system.

In contrast to the quality assurance, software testing is the way to implement the quality assurance i.e., it provides the clients or the customers with the information regarding the quality of the software system or application. The testing is done to make sure of the following points:


1. The product meets the specified requirements.
2. Works as intended.
3. Is implemented with the same characteristics.


The software testing can be implemented at any point of time in the development process unlike the quality assurance that should be implemented right from the beginning to ensure maximum quality.


Facebook activity