Development is, with very little if any doubt, a crucial process in a software’s life; it is, after all, vital to its beginnings and continuity. One of the most difficult aspects of software development is figuring how to get up and running.
Although the current times provide us with good fortunes in the the form of various software and tools that enable us to get started 7 ways to Sunday, not knowing how to juggle these tools and then filtering them down as to which is appropriate require something to get all this in order: a plan.
Planning is obviously the most important first step in knowing what and how your software will perform to fulfill its overall purpose. Clients will often present several needs for what their software will possess. However, many of those needs are presented from an abstract perspective on what the software will do; the proposed software is often viewed from the outside, seldom realizing the underlining components required.
Oftentimes a software developer would try to ask for the whole enchilada, inquiring about ever possible aspect of a software that a client can muster. However, this can almost always be a tall order. A client will often express their view on what they feel are the major features of a project, and those views will usually lack much of the functional details sought for that refined specifications document.
This is fine. Not every piece of data is needed up front nor can that be expected. Chances are you’re only going to talk, with full excitement, about one or two features that you feel are key. What’s important is to discover what’s needed to make those features come to fruition, and it just takes a little brain storming.
You’re not going to be bombarded with questionnaires and check-sheets, and asked a bunch of high tech questions that you shouldn’t be expected to know. We’ll focus on those features to know what makes them stand out and how things can be developed around them.
So, you have this great idea for a killer app that’s going to change the world! It’s going to do a lot of things similar to others with the exception of that one key feature that will separate it from the rest. But the question is, How?
As mentioned, planning is the first step in determining what’s needed and why. The next step is to know how to put all the pieces together and discover what works. To do this, we work with a few pieces at a time by creating a prototype.
Prototyping enables us to focus our efforts on testing a small subset of features, usually those that are most desired. Not only will we can gain insight into the workings of key features, we’ll discover how useful they are overall, which will determine if we are to proceed with development, in which direction, and how far.
Aiding us in determining the direction and destination of a software’s life are forms of software development methods that take an iterative and incremental approach.
Once a prototype that demonstrates a set of full-functioning features has been created, the process repeats by observing the next set of features, creating simple plans for their inclusion, testing there functionality against existing features, then continue to add those features.
One of the major benefits this approach serves is to enable the developing software to adapt to various changes that often will occur since the initial planning stage. Applications intended for markets that fluctuate, because they’re developed in a ridged way, are prone to experience setbacks and delays due to their inability to cope with the ebb and flow of changing environments.
Developing software iteratively allows us to re-evaluate what we have so far in order to know where to go from that point. Developing software incrementally allows us to build carefully, easily adding what’s needed and removing what’s no longer desired without disturbing the parts that work.