Exploratory program development style refers to an informal development style in which the programmer uses his own intuition to develop a program rather than making use of the systematic body of knowledge which is categorized under software engineering discipline. This style of development gives complete freedom to programmer to choose activities which they like to develop software. This style does not offer any rule to start developing any software. The following block diagram will clear some facts relating to this model :
In above diagram, first block is the initial briefing by customer i.e brief introduction of problem by customer. After briefing, control goes to initial coding i.e. as soon as the developer or programmer known about problem he starts coding to develop a working program without considering any kind of requirement analysis. After this, program will be tested i.e bugs found and they are getting fixed by programmers. This cycle continues until satisfactorily code is not obtained. After finding satisfactorily code, development get completed.
This style of software development is only used for development of small programs. Now a days, this style is only used by students in their labs to complete their assignments only. This style is not really used in industries now a days.
What’s wrong with this model ?
In an exploratory development scenario, effort and time required to develop a professional software increases with increase in program size. Increase in development effort and time with problem size has been indicated in the following figure :
In the above figure, the thick line plots to represent case in which exploratory style is used to develop a program. As program size increases, required effort and time increases almost exponentially. For large problems, it would take too long and cost too much to be practically meaningful to develop program using exploratory style of development. Exploratory development approach is said to break down after size of program to be developed increases beyond certain value.
The thin solid line is used to represent case when development is carried out using software engineering principles. In this case, it becomes possible to solve a problem with effort and time that is almost linear in program size dotted line is used to represent case when development is carried out by automated machine. In this case, increase in effort and time with size would be even closer to a linear increase with size.
Exploratory style causes perceived difficulty of a problem to grow exponentially due to human cognitive limitations. You may still wonder that when software engineering principles are used, why does curve not become completely linear?The answer is that i t is very difficult to apply decomposition and abstraction principles to completely overcome problem complexity.
Shortcoming of this model :
- Using this model, there is exponential exponential growth of development time and effort with problem size and large-sized software becomes almost impossible using this style of development.
- This style of development results in unmaintainable code because programming without planning always results in unstructured and poor quality of code.
- Also, it is difficult to use this style when there is a proper developing team because in this style every developer uses his own intuition to develop software.
Attention reader! Don’t stop learning now. Get hold of all the important CS Theory concepts for SDE interviews with the CS Theory Course at a student-friendly price and become industry ready.
- Exploratory Software Testing
- Difference between Adhoc Testing and Exploratory Testing
- Difference between Generic Software Development and Custom Software Development
- Client-Server Software Development | Introduction to Common Object Request Broker Architecture (CORBA)
- An Introduction to Software Development Design Principles
- Software Engineering | Agile Software Development
- Software Engineering | Software Business and Development
- Software Engineering | Identifying Software Development Metrics
- Modern Principles Of Software Development
- Software Engineering | Rapid application development model (RAD)
- Software Engineering | Agile Development Models
- Software Engineering | Program Development Life Cycle (PDLC)
- Scrum (software development)
- Software Engineering | Jackson System Development (JSD)
- Adaptive Software Development (ASD)
- Software Development Organizational Structure
- Types of Defects in Software Development
- Difference between Traditional and Agile Software Development
- Software Development Life Cycle (SDLC)
- Reliability Attributes in Software Development
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to firstname.lastname@example.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.