Wednesday 16 January, 2008

Prototype Model

Prototype Model

In the traditional SDLC, software is created on a well planned pattern. There will be planning, consultation, creation, testing, documentation and launching. This pattern is seen in most development software. Since it's planned right from the start, it should be efficient as planned. When the plan is properly executed, everything will work as it is written. However, it is important to note that this type of development is all focused on the developers and not the consumers. Although it has its advantages, the structured creation of a program makes it harder to create variations before the program is launched.

To answer that need, another model for developing software is created. Called the Prototype model, the development of the program is not based on strict planning, but it is based on the response of the users instead. The prototyping is a concept that bases its development by creating prototypes after prototypes until the "perfect" software is created. As a type of SDLC, the Prototype Model slowly builds from a simple concept of what a program is. Little by little the software is updated and tested in a real time environment. Users will be able to test and improve the software as they are created. This goes in a different pattern if you compare it to the regular SDLC pattern, and the feedback is only in the later stage. If there are any changes, it has to go back to the drawing board, wasting more time.

There are different types of a prototype model of SDLC. Each of them has their own advantage and disadvantage but ultimately, the prototype model is geared to be changed constantly until it reaches its intended audience and function.

Types of Prototype Models

There are four types of Prototype Models based on their development planning: the Patch-Up Prototype, Nonoperational Prototype, First-of-a-Series Prototype and Selected Features Prototype.

Patch Up Prototype

This type of Prototype Model encourages cooperation of different developers. Each developer will work on a specific part of the program. After everyone has done their part, the program will be integrated with each other resulting in a whole new program. Since everyone is working on a different field, Patch Up Prototype is a fast development model. If each developer is highly skilled, there is no need to overlap in a specific function of work. This type of software development model only needs a strong project manager who can monitor the development of the program. The manager will control the work flow and ensure there is no overlapping of functions among different developers.

Non-Operational Prototype

A non-operational prototype model is used when only a certain part of the program should be updated. Although it's not a fully operational program, the specific part of the program will work or could be tested as planned. The main software or prototype is not affected at all as the dummy program is applied with the application. Each developer who is assigned with different stages will have to work with the dummy prototype. This prototype is usually implemented when certain problems in a specific part of the program arises. Since the software could be in a prototype mode for a very long time, changing and maintenance of specific parts is very important. Slowly it has become a smart way of creating software by introducing small functions of the software.

First of a Series Prototype

Known as a beta version, this Prototype Model could be very efficient if properly launched. In all beta versions, the software is launched and even introduced to the public for testing. It's fully functional software but the aim of being in beta version is to as for feedbacks, suggestions or even practicing the firewall and security of the software. It could be very successful if the First of a Series Prototype is properly done. But if the program is half heartedly done, only aiming for additional concept, it will be susceptible to different hacks, ultimately backfiring and destroying the prototype.

Selected Features Prototype

This is another form of releasing a software in beta version. However, instead of giving the public the full version of the software in beta, only selected features or limited access to some important tools in the program is introduced. Selected Features Prototype is applied to software that are part of a bigger suite of programs. Those released are independent of the suite but the full version should integrate with other software. This is usually done to test the independent feature of the software.

Disadvantages of Prototype Model

Implementing the prototype model for creating software has disadvantages. Since its being built out of concept, most of the models presented in the early stage are not complete. Usually they lack flaws that developers still need to work on them again and again. Since the prototype changes from time to time, it's a nightmare to create a document for this software. There are many things that are removed, changed and added in a single update of the prototype and documenting each of them has been proven difficult.

There is also a great temptation for most developers to create a prototype and stick to it even though it has flaws. Since prototypes are not yet complete software programs, there is always a possibility of a designer flaw. When flawed software is implemented, it could mean losses of important resources.

Lastly, integration could be very difficult for a prototype model. This often happens when other programs are already stable. The prototype software is released and integrated to the company's suite of software. But if there's something wrong the prototype, changes are required not only with the software. It's also possible that the stable software should be changed in order for them to be integrated properly.

Advantages of Prototype Model

Creating software using the prototype model also has its benefits. One of the key advantages a prototype modeled software has is the time frame of development. Instead of concentrating on documentation, more effort is placed in creating the actual software. This way, the actual software could be released in advance. The work on prototype models could also be spread to others since there are practically no stages of work in this model. Everyone has to work on the same thing and at the same time, reducing man hours in creating a software. The work will even be faster and efficient if developers will collaborate more regarding the status of a specific function and develop the necessary adjustments in time for the integration.

Another advantage of having a prototype modeled software is that the software is created using lots of user feedbacks. In every prototype created, users could give their honest opinion about the software. If something is unfavorable, it can be changed. Slowly the program is created with the customer in mind.

"Over Design" could also be avoided using this model. "Over Design" happens when a software has so many things to offer that it sacrifices the original use of the software. This also goes back in giving only what the customer wants.

Generally, a prototype model has great advantage over other SDLC models since it doesn't rely on what is suppose to happen in written documentation. Instead it goes directly to the users and asking them what they really want from a software. Slowly the product is developed by professionals, catering to the needs of the users

SDLC Model Basic Stages

SDLC Model Basic Stages
 

SDLC or the Software Development Life Cycle refers to the steps involved in creating a software from scratch.  During earlier days, software used to be scarce and its creation was comparatively easier.  Developers could create any programs they want and experience no competition. In present time, every software released to the public can easily be compared to another software.  Few software can even be considered as a version of another program without any credit.


That's why careful planning has to be made before a single code is written. Analysis has to be done before anything else is made.  SDLC is known as the traditional way of executing and implementing a program. The following are the basic stages of SDLC:


1. Market Research


Before anything is implemented or written, SDLC should always understand their customers in the first place. It's just basic business to consider what is required and what's in demand in today's market. An abstract program could be created from this stage. Since researchers are technically not the developers, all they could do is create a list of what could be used by the public. This will basically be the mission of the software – to meet and exceed the needs that are laid out by the market research team.


2. Hardware Preparation


Once the need has been set, it is time to determine the required hardware to create the specific software. Hardware usually comes after research since the company does not know the actual requirement. They still need a plan before hardware could be purchased or upgraded.


3. Software Analysis


Once the hardware is in place, it is time to go to the specifics of the software. Developers will have to work closely with the research team and present a specific solution for their needs.   In this stage of software development, the framework of the software is created. The software gains some foundation as the developers will know what to work on.


4. Software Design


The specifics of the software are elaborated in this stage of web development. Developers will now create a layout of how the software should perform. The workflow is eventually established and the front-end of the software is laid out. The rough design of the software is also presented. Analysis is constantly made on the look of the layout since it will be the first thing that customers will see. This stage is very crucial since the foundation is elaborated and things are extended for the first time. The end result and structure will be based on the initial design. The workflow is laid out and it will be the backbone of the coding structure. Developers have to ensure that each step has been explained carefully if not other developers will find it difficult to understand the software.


5. Coding


If you compare it to a business model, coding is the "operations" of the software development plan. Everything is realized during this stage. The colors and the functions are gradually developed at this point. Developers will make use of different kinds of coding techniques in their preferred platforms. They may create different platforms or create a mash-up of different platforms to different programs. Whatever their coding technique is, they will be adhering to the plans set out by the workflow. Once the program is finished, a prototype is set out for the next stage of the process.


6. Testing


Of course the program, on its first run will not perfect or wouldn't exactly work as planned. It has to go through rigorous testing. In this stage, bugs are found and some irregularities in the software are somehow fixed. If something goes wrong with the program, it could be fixed with a simple change in codes but if the program is not working as planned, it will be returned to the developers for another round of coding. Testing will make sure the customer gets what they want all the time. Nothing is compromised during this stage. Depending on the program's coding efficiency, testing could last for a very long time.


7. Implementation


Once the testing of program has been completed the software is ready for implementation. For various developers, implementation could mean releasing the software for public beta-testing. That means everyone can use this program but the service is not yet complete. This implementation is used to give them a glimpse of something better. The beta release is also used to test the program if it can withstand thousands of users at the same time. Of course, in theory it has to work but there is software that, for some reason crashes when it reaches a certain number of users at the same time. These are usually done for gaming programs. MMORPG games are the perfect example of implementing the program in beta version. Once the program has been under beta version for some time without any glitch, the final version is released to the public.


8. Closing


This is not very popular with the US developers, but in the UK, closing refers to the final version of the software. Everything is already in place once closing has been posted – the documentation, source codes and business plans were also implemented at the same time.


9. Maintenance


Once the program has been released, it will not be left out alone. Developers will still work on the software full time as they will monitor its popularity and performance. No one knows if something will happen to a program. This could be the easiest part of the software development stage or the most difficult – depending on the programs efficiency. That is why even at an early stage, coding and design has to be tight and precise.


Pros and Cons:


This type of software development is very streamlined, but it has been continuously criticized. The software development plan is very easy even at first glance. However, once the stage has been completed, the manpower in that particular stage is useless in some other stages. Streamlining will also prohibit creativity in various stages since it will always be based on what was originally planned. One situation that will prove to be very challenging to the developers is when their program will crash or experience viruses or hacks.


Everything has to go back from the planning stage. Even though other software development models will experience challenges if their program is attacked, the streamlining of work makes it harder for software development. They have to go back from the start instead of working on some problems.


On the other hand, this has been practiced for some years. Businesses that are not related to software industry have also used this and have successfully implemented their plans. Most of the software giants work in this way since new software and updates will always be worked on. Smaller companies usually take on a different route since manpower has to be used extensively. Building a software that uses this model usually takes the hint from the popular market. Most of the software programs developed in this model are geared towards earnings from subscriptions or licenses. Since the first thing this model would do is to determine the need of the market, it is bound to get the approval of the public and the response to the software is positive.

What is the necessity of SDLC?

What is the necessity of SDLC?
 

Software Development Life Cycle (SDLC) is observed by different website and software developers all over the world. However, there's always a question of the need to implement this type of planning. We all know that SDLC could help us answer specific needs of different users. That is a given. But could that problem be answered when you are already familiar with that specific difficulty? In-house developers could even create the software on their own without consultation to users since they are also part of the user group and has a clear understand of what is needed. Clearly, SDLC is not needed to create a software in this environment.


If that is the case, why do we need to have a carefully mapped SDLC?


To answer this question, we take a look at the advantages and disadvantages if developers will not observe a certain SDLC model. On the other hand, we'll also take a look on the advantage and disadvantages of SDLC. This way we'll be able to take a look at the important of having a properly implemented SDLC model in creating a software or an online service.


Advantage of Developing Programs with No SDLC Model


One clear advantage of developing programs with no SDLC model followed is time. Although there are SDLC models that could cater to strict time pressures, program development is faster when programmers come together to create the workflow instead of going through a lot of user inputs and requirements. Developers will just create a good workflow and choose the preferred language. Each of the developer will just choose what part they'll be working on and combine them once they are formed. As we have already indicated, in house developers don't need to go around asking questions since they already know what they need.


Another advantage is a clear purpose on why is the software created. Developers will just have to work on the problem and create a solution based on the need. SDLC will have so many people involve there is a tendency that the real purpose of creating the software will be compromised.


Disadvantage of Developing Programs with No SDLC Mode


Lack of proper documentation is one of the reasons why a program with no SDLC model is undesirable. There's no problem in the implementation of software but with no SDLC, there are no documentations to support the development of the program. Programmers could create their own documentation, but this is only for the program and nothing else. The philosophy, studies on why it should work; development and troubleshooting are parts of proper documentation which is outlined in SDLC. A program that has no SDLC cannot be duplicated if there's a documentation that identifies the answer.


Another disadvantage of developers who don't follow SDLC is the inability to handle programs with complex needs. In house developers may be able to force themselves to create programs but the larger picture is missed. In a business world, developers have to work with business managers and there are certain needs that should be properly outlined.


Disadvantage of Programs/Websites with SDLC Model


Thinking about the disadvantages of a SDLC model is like looking for a needle in the haystack. But the closest disadvantage anyone could think of SDLC is the difference between what is written in paper and what is actually implemented. There are things that are happening in the actual work that the paper doesn't see. This gives a good impression for the clients especially for 3rd party developers but when the software is actually launched it's on a very bad situation. The actual situation of software development could be covered by fancy paperwork of SDLC.


Another disadvantage of a program or software that follows the SDLC program is it encourages stiff implementation instead of pushing for creativity in different software. Although there are SDLC models where programmers could apply their creative juices, it's always in the realm of what is needed instead of freely implementing what the developers think of necessary in the present environment. There are so many things that could be done by developers if there are no boundaries or limitations in what should be developed.


Advantages of Programs/Websites built using SDLC Model


With an SDLC Model, developers will have a clear idea on what should be or shouldn't be built. Since they already have an idea on the problems that should be answered, a detailed plan could be created following a certain SDLC model. With an SDLC model, developers could even create a program that will answer different problems at the same time. Since everything will be laid out before a single code is written, the goal is clear and could be implemented on time. Although there is a great possibility of deviation from the plan, a good project manager will take care of that concern.


With an SDLC Model, programs built will have a clear documentation of development, structure and even coding. In case there are problems once the program is adopted for public use, developers will always have the documentation to refer to when they need to look for any loopholes. Instead of testing it over and over again which will stop the implementation for a while, developers will just look at the documentation and perform proper maintenance program. This means SDLC will breathe more life to the program. Instead of frustrating developers in guesswork if something goes wrong, SDLC will make sure everything goes smoothly. It will also be a tool for maintenance, ensuring the program created will last for a long time.


Aside from longer lifespan of an SDLC modeled program, every created program could serve be used in another program. This ability to adapt to different programs is ensured through proper documentation. Since each step is properly documented, some parts could actually be used to create another program. An ideal SDLC model will have the proper documentation of every step and every part of the program that there's a possibility of using the available structures for another program. This will lessen the time frame of development which is good for software development.


All this will lead to a better and more productive program. Since everything is laid out, developers will have more time to scrutinize the program for possible defects.


Conclusion:


Without an SDLC Model to follow, developers can have a free hand of developing software. There are so many programs out there that were created with a vision of need instead of following a certain model. All they have is a workflow that servers as a model for building a program. However, development of these software doesn't have a clear view and it will never be viable in any business model.


On the other hand SDLC will ensure everything is laid out. Businesses will have a clear idea of what will happen and what is expected from a software. Since SDLC models are created with a need or a problem in mind, it will either be a tool for a more productive business or could be sold online if there is a need.


As long as the laid out plans of SDLC are followed, the usability and success of the software is ensured. Maintenance and development of the software is also possible since parts could be possibly be reused in different programs.

Hits4Pay