Subscribe by Email


Showing posts with label Formal methods. Show all posts
Showing posts with label Formal methods. Show all posts

Saturday, April 21, 2012

What are different aspects of Crystal Methods?


Crystal methods together constitute a family of methods called the “crystal family” and were introduced by the Alistair Cockburn around the year of 1990. Cockburn developed these methods after carrying out some interviews of the development teams and observed that some of the teams even though did not made use of the formal methodologies of software development were successful in delivering successful software projects and products. 

The crystal family he introduced can be thought of as a catalogue that includes their methodologies for delivering the successful projects and products. These crystal methods have been categorised under the category of the light weight methodologies. The term “crystal” in the context of the software engineering implies a view on the underlying core of values and principles and the faces are the means representing the standards, roles, tools and techniques.

Cockburn differentiated the methodologies, techniques and policies as:

  1. Methodologies: set of elements like tools and practices.
  2. Techniques: include skill areas like development of use cases.
  3. Policies: statements dictating the must haves of the organizations.

Aspects on which Crystal Methods are Focused

- Below mentioned are the aspects up on which the crystal methods are focused:
  1. Interaction
  2. People
  3. Skills
  4. Community
  5. Communications
  6. Talents and so on.
- Cockburn stated that the above mentioned aspects are much important than the process which should be the secondary focus. 
- Crystal methods are based up on the idea of having variant talented and skilled individuals in the development team so that process element does not pose up a major factor. 

What makes the crystal methods the easiest agile software development method? 

- Crystal methods are very much tolerant to the issue that the teams can complete a task in several different ways.
- Crystal methods over the time have proven to be very effective in avoiding the rigid and strict processes (that were typical of the older development methodologies) and that is why they are very flexible. 
- Cockburn eventually developed may types of crystal methods for each and every type and kind of development team which are required to solve diverse problems. 
- These crystal methods are categorized by different color label denoting the weight of the methodology to be used. 

What are seven crystal methods?

- The crystal family of methodologies consist of seven crystal methods:
  1. Crystal clear
  2. Crystal yellow
  3. Crystal orange
  4. Crystal orange web
  5. Crystal red
  6. Crystal maroon
  7. Crystal diamond
  8. Crystal sapphire
- Depending up on the size of the project, the colour darkens from left to right. 
- The crystal methods have been scaled to the international standards based up on the size and criticality of the teams.

Properties of Crystal Methods

For all the seven crystal methods, some common properties have been defined as mentioned below:
  1. Reflective improvement which involves taking breaks from the regular development routine and think and come up with ways of improving the process.
  2. Personal safety involves free speaking within a group.
  3. Easy access to expert users.
  4. Frequent delivery is the measure of the ability of the method to frequently deliver the iterations of the software product or project. The features to be included in the iterations are decided up on by the developers and the designers.
  5. Osmotic or close communication involves flow of information among the teams in a room.
  6. Focus involves focusing up on direction in which the project development is taking place and individual task.
  7. Technical environment inclusive of the automated tests, frequent integration and configuration management.  


Sunday, January 15, 2012

What are merits and demerits of ad hoc test approach?

Ad hoc testing as the name suggests is the testing that is carried out without any formal planning and formal documentation though it can be used for scientific experimental studies.

- The ad hoc testing is meant to be carried out only once until and unless a defect is found.
- It would not be wrong if we call the least formal methodology of testing a software application or system.
- It has always been under criticism because of its uneven structure and also because the defects discovered through this kind of testing are difficult to reproduce due to a lack of written test cases.

However, there is still a plus point of ad hoc testing as important defects or bugs can be found quickly and easily without much efforts and pre planning.

Principle of Ad-hoc testing
The ad hoc testing is based on the principle of improvisation i.e., the software testers seek to find the errors and bugs by any means that seems appropriate to him/ her or we can say tests are performed according to the convenience of the tester.

Ad hoc testing can be appropriately called a primitive version of error guessing which itself is an un- sophisticated version of exploratory testing.

- Formal testing is carried out without any test cases and it proves to be a great help in deciding the duration and scopes for the other types of testing that have to be carried out upon the software system or application.

- This also helps the tester to learn more and more about the software system or application prior carrying out the other kinds of testing.

- It can be called as the least formal method of testing.

- The quick discovery of defects is the best use of ad hoc testing.

- Only reading the specifications and requirements doesn’t give a good sense of how the program or the software system or the application actually works and behaves.

- Even the documentation of the testings does not provide the feel of the software system or application.

- Ad hoc testing can be effectively used to find discrepancies in the testing strategies of the tester and the relations between the sub- systems of the software can be explored that would have been left un- exposed.

- In a way we can say that it serves a tool for checking the quality of our testing methodology.

- It helps in finding the missing cases and so these can be added to the list of test cases.

- Discovering new test cases with ad hoc testing is an indication that root cause analysis should also be performed.

While carrying out the ad hoc testing you should ask yourself and your team members “what other tests should we need to carry out in order to supplement this and make testing more effective?”

SOME IMPORTANT FACTS
- Defects or errors found during ad hoc testing provide examples of forgotten test cases.

- Determining the priority for carrying out other testing can also be thought as another use of ad hoc testing.

- For example, if a program allows the user to carry out some task and the ad hoc testing shows that this function works well, then the formal testing of this functionality might be postponed until the areas having problems are completed.

- On the other hand, if the ad hoc testing discovers any problem, then the formal testing for this functionality can be given highest priority.

- It is concerned with application testing without taking into considerations any rules and regulations.

- For carrying out ad hoc testing effectively the tester should have strong knowledge of the software system or application. Ad hoc testing is performed mainly to save time.


Tuesday, August 10, 2010

Static Testing and static code analyzers

Static Testing is also called verification. It is also called dry run testing. In this the software is not actually used. It mainly checks the sanity of the code, algorithm or the document. This type of testing can be used by the developer who wrote the code, in isolation. Code reviews, inspections and walkthroughs are also used.
Static Code Analysis is a method of detecting errors in program code based on the programmer's reviewing the code marked by the analyzer in those places where potential errors may occur.
The main advantage of static code analyzers use lies in the possibility of considerable cost saving of defects elimination in a program. The earlier an error is determined, the lower is the cost of its correction. Static analysis tools allow to detect a large number of errors at the construction stage.

Formal methods is the term applied to the analysis of software (and hardware) whose results are obtained purely through the use of rigorous mathematical methods.
Implementation techniques of formal static analysis include:
- Model checking.
- Data-flow analysis.
- Abstract interpretation models.
- Use of assertions in program code.


Friday, September 18, 2009

Overview of Formal Methods - Foundation for analysis methods

Formal methods provide a foundation for specification environments leading to analysis models that are more complete, consistent, and unambiguous than those produced using conventional or object-oriented methods. The descriptive facilities of set theory and logic notation enable a software engineer to create a clear statement of facts.

The underlying concepts that govern formal methods are :
- the data invariant, a condition true throughout the execution of the system that contains a collection of data.
- the state, a representation of a system's externally observable mode of behavior, or the stored data that a system accesses and alters.
- the operation, an action that takes place in a system and reads or writes data to a state. An operation is associated with two conditions : a precondition and a postcondition.

Discrete mathematics - the notation and heuristics associated with sets and constructive specification, set operators, logic operators, and sequences - forms the basis of formal methods. Discrete mathematics is implemented in the context of formal specification languages, such as OCL and Z. These formal specification languages have both syntactic and semantic domains. The syntactic domain uses a symbology that is closely aligned with the notation of sets and predicate calculus. The semantic domain enables the language to express requirements in a concise manner.

A decision to use formal methods should consider startup costs as well as the cultural changes associated with a radically different technology. In most instances, formal methods have highest payoff for safety-critical and business-critical systems.

Where are Formal Methods applied?
Although a complete formal verification of a large complex system is impractical at this time, formal methods are applied to various aspects, or properties, of large systems. More commonly, they are applied to the detailed specification, design, and verification of critical parts of large systems such as avionics and aerospace systems, and to small, safety-critical systems such as heart monitors.


Facebook activity