Software Process Development

Abstract

Choosing the best suited Software development system (SDS) for any particular project is the first and foremost thing to do. If this step goes wrong or selecting an unsuited SDS for the project may lead to unsuccessful or incomplete or may be delayed to the time expected.

Till now many surveys and investigations are done on finding new processes, rectifying the problems in the pervious projects, etc. the new processes every time comes with a new way of implementation of the software development process.

In this project I am investigating on the basic implementation of the SDS with the water fall model and the rapid application development (RAD) model. For this a detailed study of the both the models are done, and then finding out which software development model is best suited for the development of windows applications. For this comparison the yahoo messenger (a windows application) is used as an example.

Introduction

Software development has become very difficult due to changing requirements, lack of standards, unpredictable schedules, and due to the insufficient training and more than that by the lack of effort by the professionals. After a lot of research, it was clear that the problem is with the process that is used for the software development, rather than the technology, which cause number of the problems in software development and in the maintenance phase. A new terminology is introduced with five levels of the SEI which is known as capability maturity model (CMM).

Most of the software life cycle includes six processes they are: requirements engineering, design, programming, integration, delivery, and maintenance. Each of these phases in brief:

Requirements Engineering

In this phase first all the requirements that are required by the client a0re designers of the site collectively. Then the technique of rapid prototyping in which a prototype program is built that can illustrates the functionality of the desired software model. Using this prototype, clients can understand better how the final product would be, how would be the functionality and from that they can find out whether this is what they really need. If the requirements engineering process is not done properly, the resulting software product will not be useful to the client and it may not run correctly.

Design

In this process, the analysts and developers decide how to construct the software with the requirements specifications agreed in the requirements specification document. This way of designing is called stepwise refinement, and this allows the developers to control the complexity of the software. After completing the design, it is recorded in design specification document.

Programming

In this phase, programmers are divided into groups who write the actual code of the software. Before coding starts, the software is divided into separate units called modules. This modularization is done to reduce the complexity of the programming process. This is also responsible for proper documentation that describing the code and for testing the code to ensure that the code is free of bugs.

Integration

In this phase, the individual modules of the software are combined to form the complete software product. As the modules are developed separately, testing is very important in this integration process. Even when the design is good, some times incompatibilities between modules are likely to exist. All these problems are identified and corrected to complete the integration.

Delivery

In this phase, the developers deliver the completely working software product to the clients. Usually the clients will test the software to determine whether all the specifications agreed upon in the requirements specification document are fulfilled or not. If the client is satisfied with the software he accepts the software and installs it or else gives back for modifications.

Maintenance

In this phase, the software undergoes many changes after delivery in order to change the features or to fix the bugs, add new functionality, port the software to new platforms. It's not true that the work is over after delivering the product to client. Actually more work is to be done, after delivering the product, in this maintenance phase.

From the investigation done the experts it is surprised to discover that of all the processes, the maintenance phase has the more cost of the life cycle. The diagram below shows the expected costs that are likely to be spending on each of the processes in the software life cycle. As maintenance cost is more, many developers started to use the design approaches that result in software, which is easier to maintain.

History of Software Process Models

The Software Engineering Institute was established at Carnegie Mellon University in Pittsburgh, Pennsylvania in 1984, under a Department of Defense contract. The mission of this institute is to provide the leadership in advance state of the practice of software engineering that helps to improve the quality of systems that are developed which depend on software. After two years the software process work has began. One of those results was the software process maturity model. In the year of 1987, the Software Engineering Institute and MITRE Corporation produced the first questionnaire on the maturity of a software in general, a set of question that has the options as yes-no are prepared that address organization, management issues and the technical software development process. In the next few years, the Software Engineering Institute developed two methods that are used for the questionnaire to test and conclude the report of an organization's software process.

After many reviews, the Capability Maturity Model (CMM) for software was developed which replaced the software process maturity model in the year 1991. The CMM gives the detailed information of the levels of the firms that best suites for the general software process practices that are followed by the firms which are divided into five maturity levels. The questionnaire that are to be satisfied by the firms at there CMM levels , once the current level of operation is attained using the maturity, for further improvement of a company's software process involves in the implementation of the software engineering practices that are needed to reach each of the five levels in an order from the lowest to the highest level.

Water Fall Model

The water fall model is first and the basic model of software development. From this basic model only all other models were developed. The necessity of developing the water fall model was, until it was developed there was no model or software process work flow model. That's the reason the water fall was the basic model for software development.

Water fall model is divided into separate phases of software development. The phases in Waterfall model are: Requirement Specifications phase, Software Design, Implementation and Testing & Maintenance. . All these phases are cascaded to each other so that second phase is started as and when defined set of goals are achieved for first phase and it is signed off, so the name "Waterfall Model". All the methods and processes undertaken in Waterfall Model are more visible.

All possible requirements of the system to be developed are analyzed in this phase. Requirements are set of functionalities and constraints that the end-user (who will be using the system) expects from the system. The requirements are gathered from the end-user by consulting the customer who have requested for the product. These requirements are analyzed for their validity and the possibility of incorporating the requirements in the system to be development is also studied. Finally, a Requirement Specification document is created which serves the purpose of guideline for the next phase of the model.

Next comes the system and software design phase. In this phase, before starting for actual coding, it is highly important to understand what we are going to create and what it should look like? The requirement specifications from first phase are studied in this phase and system design is prepared. System Design helps in specifying hardware and system requirements and also helps in defining overall system architecture. In this phase the estimation of cost for developing the product is also analyzed depending on the requirements. The system design specifications serve as input for the next phase of the model.

The next sequential phase is the implementation (coding) and unit testing the software. On receiving system design documents, the work is divided in modules/units and actual coding is started. The system is first developed in small programs called units, which are integrated in the next phase. So that it would be easy to develop the code by dividing the work into small units. Then each unit of work that is divided from the total work is developed individually by each developer and tested for that particular unit of work is done properly or not. This type of testing the individual unit code is called unit testing.

In the next upcoming phases the small units of code is to be integrated into one single code and should be tested for the over all functionality. As specified above, the system is first divided in units which are developed and tested for their functionalities .

These units are integrated into a complete system during Integration phase and tested to check if all modules/units coordinate between each other and the system as a whole behaves as per the specifications. After successfully testing the software, it is delivered to the customer.

The maintenance phase is the most important and it is almost 70% of total software process life cycle. This phase of is virtually never ending phase (Very long). Generally, problems with the system developed (which are not found during the development life cycle) come up after its practical use starts, so the issues related to the system are solved after deployment of the system. Not all the problems come in picture directly but they arise time to time and needs to be solved; hence this process is referred as Maintenance. On the time ruin the problems may occur and the code may not accept the new type of data, and then there is the need to change the part of the code or correct that part of code.

Due to some disadvantages of the water fall model later some other models are developed. The disadvantages are

The main drawback of the waterfall model is the difficulty of accommodating change after the process is underway.

One phase has to be complete before moving onto the next phase

Inflexible partitioning of the project into distinct stages makes it difficult to respond to changing customer requirements.

Therefore, this model is only appropriate when the requirements are well-understood and changes will be fairly limited during the design process.

Few business systems have stable requirements.

The waterfall model is mostly used for large systems engineering projects where a system is developed at several sites.

Rapid Application Development (RAD)

RAD is a software development process initiated by James Martin in 1980's. It is a very high level of application development techniques that uses prototype, iterative customization and CASE tools. RAD is a software development methodology that focuses on building applications in a very short amount of time, traditionally with compromises in usability, features and execution speed.

Figure-Traditional RAD

The traditional RAD software development cycle follows a rigid sequence of steps with a formal sign-off at the completion of each. RAD is not appropriate for all projects. This is bet suited for the projects that can be divided into small chunks and where scope is small. RAD has many core elements which make it unique are prototyping, iterative development, time boxing, team members, management approach and RAD tools.

Prototyping: This part of the RAD can be done by the Computer Aided Software Engineering that focus on capturing requirements, converting them to a data model, converting the data model to a database, and generating code all in one tool.

Iterative development: Iterative development means creating increasing functional versions of a system in short development cycles. Each version is reviewed and approved by the client to produce requirements that feed the next version. This process is repeated until all functionality has been developed.

Time boxing: Time boxing is adding features to future versions of the software and developing it no time. It is very important aspect of RAD to complete the job in less time and get the best product out than other competitors.

Team members: The RAD methodology recommends the use of small teams that consist of experienced, versatile, and motivated members that are able to perform multiple roles. As the client plays a vital role in the development process, dedicated client resources must be available during the initial Joint Application Development (JAD)

Management approach: Active and involved management is required to reduce the risks of lengthened development cycles, client misunderstandings, and missed deadlines. In addition to enforcing a strict timeline, management must focus on team member selection, team motivation, and on clearing media or political obstacles.

Coding phase:

Developing Code in RAD process model takes very short span. At the time of development of these types of projects the there is no need or no time to make the code future enhancements. So the code developed using this process is not the most reliable code.

Testing phase:

In the testing phase the developed software or website is tested in two ways i.e. alpha testing and beta testing. Alpha testing is the testing done by the developers before delivering the product. This alpha testing can be done in two ways i.e. white box testing and the black box testing. The testing of all the models that are working properly or not and to ensure that each function is fully operational while at the same time searching for the errors in the code is called white box testing. Testing the internal and primitive operations and to sure that all are working according to the specification is called black box testing. Testing done by the customer to check weather all the specification & requirements are working properly is called beat testing. If any problem occurs, then the error is set up and just added to the code at the appropriate position.

Advantages:

Speed and quality are the main advantages of Rapid Application Development, while potentially reduced scalability and feature sets are the disadvantages.

The main goal of RAD is the speed delivery of the product using CASE tools, which helps in converting the requirements to code automatically. The speed delivery is the main feature of RAD because the product has the competitors and demand in the market.

The software developed by the RAD has versions and each version is better, has new features or at least overcomes the defects of the previous versions.

Disadvantages:

Scalability and the reduced features are main drawbacks of the RAD

Due to very less time using the time boxing the development of the product that can construct the advanced features is not possible.

By using time boxing we have very less time to develop much more features and more enhanced features.

Yahoo Messenger

The versions of yahoo messenger that are developed with the features are:

Version 3.0: Yahoo Messenger 3.0 (1.3 MB)

The first basic yahoo messenger was version 3.0 with basic features of chat, webcam, file transfer and emoticons that can incorporate in between the text in chat box.

Version 3.5: Yahoo Messenger 3.5 (1.9 MB)
This version has the new features of mail updates of the user account and the option of my display image. This feature enables the user to show his picture to the person with whom he/she chatting.

Version 4.1: Yahoo Messenger 4.1 (2.3 MB)
In this version the send contact details, message archive are introduced. Send contact details option enables the user to send the messenger list in his account to others. If message archive option is set then all the conversations done by the account user can be stored in the local system where person chats.

Version 5.0: Yahoo Messenger 5.0 (2.2 MB)

This version has the new feature of photo share through which two persons can share the pictures by just dragging and dropping the pictures into the sharing box. This is the great feature that had made yahoo! messenger more popular.

Version 5.5.1228: Yahoo Messenger 5.5.1228 (2.6 MB)

This version has the option to change the skins and the option to join the chat rooms all over the world.

Version 6.1922: Yahoo Messenger 6.1922 (4.5 MB)

This version ahs the feature of play game with the other person in the chat. And the other new feature is buzz which alerts the with a sound. The chat box is provided with the text format tool bar.

Version 7.0: Yahoo Messenger 7.0 (8.2 MB)

This version has the drastic changes and much new features than the previous versions. The IM environment option that changes the backdrop of the chat box.

Version 7.426: Yahoo Messenger 7.426 (8 MB)

This version has the new feature called the voice chat. With this option a person can record his voice message and send it to this other person in the chat. This feature revolutionized the yahoo! Messenger and made popular.

Version 7.437: Yahoo Messenger 7.437 (8 MB)

In this version we have the plug-ins of yahoo! Games, yahoo! Music and yahoo! Weather. These features enable the users to play the games, listen to music and see the weather report in certain areas all over the world.

Version 7. 5.0.647: Yahoo Messenger 7.5.0.647 (7.7 MB)

This version has very slight difference than its pervious versions with only new feature that is calling pc-to-pc using the VOIP protocol that is developed for voice transmission over Internet.

Version 8.0.0.506: Yahoo Messenger 8.0.0.506 (10 MB)

This is the very advanced version of the yahoo messenger, which has an option sending the SMS to the mobile directly to the person who has signed in into his mobile device. And the persons who are have the account into the messenger list.

The new and smart tool is the audibles tool bar for chat box, which has many prerecorded audibles in different languages and different animated pictures speaking out those audibles.

This is how the 11 versions of yahoo! Messenger is developed using RAD. And many other versions are upcoming using this method of software developing such as yahoo! Messenger 8.0(Beta), which is under testing phase.

With in 8 years the yahoo had developed 8 versions of Yahoo! Messengers with versions numbered from 3.0 to 8.0.0.506 with pc -to-pc talk and SMS to mobile.

Developing Yahoo! Messenger with Water Fall Model

The first and the foremost is that in water fall model all the requirements are taken at a time. The design and coding is done in the most common way i.e. from the design phase itself it is designed.

Requiremental Analysis and Design:

The requirements of the yahoo messenger are the login window, chat window, the server side application for maintenance. All these are the requirements that are required for the development of yahoo messenger.

The client application requirements are

Login window

Frame window

Chat window

Manage Contacts

Authentication message window

Then after the language in which the coding is to be done is decided. Data base for the server side application should be developed; the entire design depends on the data base that is structure to store the data of every client.

The design of the yahoo messenger is taken up by the minimum and basic requirements. The design is made normally with out nay future plans.

Development Diagrams

The UML diagrams play an important role in the software development diagrams. These diagrams illustrate the clear cut idea of the software that is being developed.

Use case Diagrams:

Use cases describe the behavior of the system when one of these actors sends one particular stimulus. This behavior is described textually. It describes the nature of the stimulus that triggers the use case; the inputs from and outputs to other actors, and the behaviors that convert the inputs to the outputs. The text of the use case also usually describes everything that can go wrong during the course of the specified behavior, and what remedial action the system will take.

Context diagrams:

A context diagram is a data flow diagram, with only one massive central process that subsumes everything inside the scope of the system. It shows how the system will receive and send data flows to the external entities involved.

Class Diagrams:

Class diagrams are widely used to describe the types of objects in a system and their relationships. Class diagrams model class structure and contents using design elements such as classes, packages and objects. Class diagrams describe three different perspectives when designing a system, conceptual, specification, and implementation. These perspectives become evident as the diagram is created and help solidify the design.

Data Flow Diagrams:

A data flow diagram (DFD) is a graphical representation of the "flow" of data through an information system. A data flow diagram can also be used for the visualization of data processing. It is common practice for a designer to draw a context-level DFD first which shows the interaction between the system and outside entities. This context-level DFD is then "exploded" to show more detail of the system being modeled.

Implementation and Coding:

In this phase the actually the code is developed. Before that the total code is divided into independent modules, so that the coding becomes easy. So the coding part is divided into modules such as

Integration and Unit testing :

After the coding is done for individual modules such as data base structure, frame work and the data base or server connectivity module are integrated into one module of code for the code to work with all the functions full. Then this code is tested after the integration is done, to check weather the code is working collectively after integrating the all the modules into one single code.

In the testing phase the developed software or website is tested in two ways i.e. alpha testing and beta testing. Alpha testing is the testing done by the developers before delivering the product. This alpha testing can be done in two ways i.e. white box testing and the black box testing. The testing for all the modules is done to check weather all the code is working properly or not and to ensure that each function is fully operational while at the same time searching for the errors in the code is called white box testing. Testing the internal and primitive operations and to sure that all are working according to the specification is called black box testing. Testing done by the customer to check weather all the specification & requirements are working properly is called beat testing. If any problem occurs, then the error is set up and just added to the code at the appropriate position.

Maintenance Phase:

This is phase in which the maximum amount of resources are used. In this water fall model the yahoo messenger requires many changes in the features for adding new features such as the voice chat, video conference, pc to pc call etc.

For all these new features the present code is not venerable to add the new models or to integrate, so that the reason why all the code is developed again with new features in the water fall model which consumes more time and resources.

Developing Yahoo! Messenger with RAD

Instant messenger is first lunched by yahoo named as Yahoo! Messenger on 21 July 1999. The first version of yahoo messenger is version 3.0 for MAC operating system with the features of webcam, file transfer, emoticons.

The important requirement of an instant messenger is chat, and this chat is enabled between system to system because the messenger chat box communicate between two systems using there MAC (Message Authentication Code) address. Windows Application version of instant messenger and web messenger are the products of yahoo.

Analysis Phase

In this phase the requirements such as software & hard ware requirements are analyzed and listed for the usage of the development of the product.

The main problem is that the windows application cannot be directly connected to the remote database (for authentication, chat,

offline message). For that the web service is the best solution that can connect database remotely and can call the methods in the remote classes. Because the web service transmits the data from the remote database, and it is in very robust form to destroy.

Then its is to be decided in which platform the project should be developed either in java or Microsoft .net or etc. in some cases the customer itself asks the product to be done in a particular platform. If the customer did not ask for any particular platform we can chose the platform on our own.

Estimation of cost is made in this phase itself. The total cost estimation for development, maintenance, etc. the cost for development is calculated in man hours of work.

Requirement analysis:

Actually the requirement of an software include the requirements of the customer that he want in the software and the other software and hardware requirements that are needed for the software development.

The features of the yahoo instant messenger are enhanced form version to version. There are many version of yahoo messenger from version 3.0 to version 8.1. in each version the new changes and features had been added such as voice chat, pc-to-pc call, plug-ins, IM-Environment, SMS to Mobile etc.

For developing software or windows application or a web application we need software to develop such as C++, VC++, Java or Microsoft Visual Studio etc.

For instant messenger we need to develop a windows application that can be run at the clients pc and we a need a web service to communicate the client-client transaction.

The windows application cannot directly communicate with the remote database and cannot communicate with the other client without a web reference. So web service is used a web service for checking the authentication of the user's account and his details.

The first version of the Yahoo! Messenger 3.0 has only few features such as chat, web cam, emoticons. In the later version the features such as voice chat, pc-to-pc call, plug-ins, IM-Environment, SMS to Mobile added. But all these features are not added at time. They are all added for the future versions of 3.0 to 8.1.

With all these requirements a prototype model is prepared. And for designing the software that prototype model should be approved by the client.

Hardware Requirements

For developing an instant messenger an ordinary system is sufficient. But to make the instant messenger work we need a server that acts as web service for the instant messenger to communicate between the users of the instant messenger.

The uninterrupted internet connection to the server is very much important so that no users finds incontinent to work. And steps need to be taken for a fast recovery at the time of crashing of the server.

Design phase

First the total development of the yahoo messenger is divided into modules. Then the software diagrams are drawn for the convenient for the developing the code. First the context diagram is drawn for the project. Then comes the data flow diagrams in which the flow of the data in the project is shown. The next diagram is the ER-Diagram in which the all the parameters of the total project are represented in diagrams. This diagram is very much useful in developing a database in which a column is made for every single column in the

database. In this database the data should be maintained in the tables. And these tables should have the primary keys and foreign keys (primary keys of other table in the current table is called foreign key).

In this design phase it self the use case diagrams, activity diagrams and sequence diagrams are developed. Then the use case diagrams which sub parts or modules of the project. Depending on these all diagrams the total project is divided into small modules and these modules are distributed to each team for development.

Time boxing is adding features to future versions of the software and developing it no time. It is very important aspect of RAD to complete the job in less time and get the best product out than other competitors.

In the design phase a first a prototype model is prepared with all the requirements that are analyses in the requirement analysis phase. And for designing the software that prototype model should be approved by the client. The total project is divided in small chunks so that it would be easy to develop the software in no time.

The design phase has many sub phases, they are

Software development diagrams: These diagrams are very important and help a lot in the development of the project. The diagrams are

Context diagrams,

Entity relationship diagrams,

Data flow diagrams,

Use case diagrams,

Collaboration diagrams,

Sequence diagrams.

All these diagrams act as a blue print of the development of the project and will be very useful at the time of the software development.

Development Diagrams

The UML diagrams play an important role in the software development diagrams. These diagrams illustrate the clear cut idea of the software that is being developed.

Use case Diagrams:

Use cases describe the behavior of the system when one of these actors sends one particular stimulus. This behavior is described textually. It describes the nature of the stimulus that triggers the use case; the inputs from and outputs to other actors, and the behaviors that convert the inputs to the outputs. The text of the use case also usually describes everything that can go wrong during the course of the specified behavior, and what remedial action the system will take.

The use case diagram gives the details of the requirements, options in the product specified by the client. These requirements don't change whatever the software development procedure used, so that use case diagram is same as that of the diagram that uses water fall model for software development.

why in water fall model there is only one main class and all the other sub classes or child classes are developed under it.

When a product is developed in .net, default folder AppCode is created in which all the class files, script files are developed. In the figure shown below the the authentication, chat address book, preferences are separate classes developed under the AppCode.

Database Design:

The design of database consists of making the data tables that are used in the project. Designing the tables includes deciding the primary keys and foreign keys in the tables and the data types of the columns of the tables.

After completing all these diagrams and the database design, the project is divided in chunks and distributed among the team members for development of the project.

RAD is best suited for developing software than website or a web service because the software can have versions with new features in the future versions which increase the marker for the product if it as an commercial software and maximum number of users for a free software.

In the preliminary stages of the development of the yahoo messenger its main aim for developing it is for instant messenger only. Later the features like photo share, voice chat, video conference, etc.

Let's start from the designing phase of the instant messenger.

Planning

First in the planning the required features of the messenger should be listed out for feature development.

The main features that are to be in messenger are

Contacts management

Address book

Chat options

Sign out option

Chat window

Messenger window

The contacts management is adding new contacts, mange the contact in the groups, delete a contact, move the contacts form one roup to the other group of contacts.

Address book management such as adding a contacts address (it is automatically added as we add the new contact in the friends list), deleting a contact.

For chat on clicking a contact in the friends list a chat window should be opened. Then what ever is typed in that window should be transmitted to the contact with whom the chat window is linked. Here in case the user at the other end is not online then all the messages he received must be stored in his account.

In the above phase (planning phase) all the requirements are gathered from the customer who requires the product. For the yahoo messenger all the basic requirements are listed above.

Build Code

The code for the project is built in this segment of project. Here the code is build in individual chunks of code by different programmers in a firm. Then all this small chunks of data is collected is made into single code which can work perfect.

The code for yahoo messenger is developed partially, in this code there are two parts one is the client application and the server application. I have developed the client application partially due to insufficient time.

Testing

Then next part of the coding is testing in which all the code is testing for its perfect working. And is also check for all the requirements for the customer. Fro this there is two types testing. Alpha testing is the testing done by the developers before delivering the product. This alpha testing can be done in two ways i.e. white box testing and the black box testing. The testing of all the models that are working properly or not and to ensure that each function is fully operational while at the same time searching for the errors in the code is called white box testing. Testing the internal and primitive operations and to sure that all are working according to the specification is called black box testing. Testing done by the customer to check weather all the specification & requirements are working properly is called beat testing.

If any problem occurs, then the error is set up and just added to the code at the appropriate position.

Deploy

In this phase, a search is done for future requirements. This can also be called as maintenance phase. As the time passes the new features are need to be embedded in to the product, so the software is again released as newer version with all the new features included.

This cycle continues as the new features or requirements are requested by the customer. Her the main them is that the product should be developed fast in order to avoid the market risks and so it is called Rapid Application Development

Again this process starts from the design phase for the new requirements then again the software development starts from the design level.

After the designing phase the development of the code is done is developed for the new requirements and attached to the old code or the code is again developed if there are any faults in the previous version of the code.

This process is called iterative development. : Iterative development means creating increasing functional versions of a system in short development cycles.

Each version is reviewed and approved by the client to produce requirements that feed the next version. This process is repeated until all functionality has been developed. Then again tested if the new features that are embedded is working properly or not. Next step is the JAD. The RAD methodology recommends the use of small teams that consist of experienced, versatile, and motivated members that are able to perform multiple roles. As the client plays a vital role in the development process, dedicated client resources must be available during the initial Joint Application Development (JAD).

The main features of RAD that defer from other software process model are:

Prototyping: This part of the RAD can be done by the Computer Aided Software Engineering that focus on capturing requirements, converting them to a data model, converting the data model to a database, and generating code all in one tool.

Iterative development: Iterative development means creating increasing functional versions of a system in short development cycles. Each version is reviewed and approved by the client to produce requirements that feed the next version. This process is repeated until all functionality has been developed.

Time boxing: Time boxing is adding features to future versions of the software and developing it no time. It is very important aspect of RAD to complete the job in less time and get the best product out than other competitors.

Team members: The RAD methodology recommends the use of small teams that consist of experienced, versatile, and motivated members that are able to perform multiple roles. As the client plays a vital role in the development process, dedicated client resources must be available during the initial Joint Application Development (JAD)

Management approach: Active and involved management is required to reduce the risks of lengthened development cycles, client misunderstandings, and missed deadlines. In addition to enforcing a strict timeline, management must focus on team member selection, team motivation, and on clearing media or political obstacles.

This is how a yahoo messenger is developed with more 11 versions each having a new feature.

Analysis

The development of the software with out any break downs and time delays depends on selecting the appropriate software development process. Here are the differences of RAD and water fall model in every phase.

Analysis of Each phase

Differences in Requirements Analysis phase:

Design phase is the important phase in which the total software development is dependent. In water fall model all the requirements are gathered at time and then analyzed for the further process. It's difficult in this model to add the requirements later after the phase is completed. And there is no possibility for changing the requirements if once the product done and even no possibility for modifying the code.

In Rapid Application development model the requirements can be modified at any time at the time of code and there is an option for remaking the old code for adding the new features. That's the reason the RAD model is a cyclic from of software development and the designing phase comes many times before completing the product if the requirements change from time to time.

Differences in the Design phase:

The design phase is the basic building blocks of coding. Depending upon the design the entire structure of the code is dependent. In water fall model the design phase can be normal or in general form, because this is the most common form of developing the software.

But in the case of RAD the main thing is that design phase should be care fully done keeping that it should be easily changeable at any time. That is the design of the code should be in more generalized from and should be easily adaptable for adding new features with chaining the whole code again. This is the reason the design phase is the most important part in the RAD model of software development, because the design of the structure should be done with, future requirements, changes and new modules in mind.

Differences in coding phase:

The entire coding phase depends on how the software was designed in the design phase. The coding is done according to the design that was designed. In water fall model, the code is in general and straight from with out any special attachments.

In RAD the coding is in most generalized form, so that a new module or new item can be added with out much effort. This can be done by developing the most customized and robust way of coding.

Differences in Testing Phase:

The testing phase is almost same for all the software development models. The difference occurs at how are the bugs are solved. In water fall model a bug is solved by re designing the code of that part. But in the RAD the bug is modified to solve it, to make the product error free in short span of time.

Differences in Maintenance phase:

The maintenance phase is the most resources consuming phase in the software development. In this phase of water fall model, for the new requirements the software is done again from the first phase with all the requirements along with new ones again.

In the RAD the maintenance phase is easy. As already the software is designed in most customized form, new thing can be added very easily with out much effort, moreover there is no need to develop the whole software once again with all the requirements along with the new ones again.

Comparison of water fall model and RAD:

Features

Water Fall Model

RAD

Requirements

All the requirements should be collected at one time and starting itself.

The requirements can be added easily at any time

Design

The design is done to fully satisfy the requirements that are presently mentioned, but without the enhancements to add new modules in future.

The design is done with a basic structure and in most customized way, so that any new modules in future can be added very easily

Coding

The coding is done in a normal way as it is designed

The coding is done in most customized way.

Testing

Testing is done in ordinary way such as white box testing and black testing

Testing is done in ordinary way such as white box testing and black testing

Maintenance

If new features are to be added, the code is redesigned from staring with new features

The new features cab be easily added to the code, as it has the basic customized structure

Resources Used

More

Less when compared to water fall model

Time taken

Takes more time

Takes less time

Lines of Code

Less

More

Conclusion

In this competitive world time is one of the valuable factors. Because it's important that how fast you develop the software than others, weather your software have more features. Because making software with all the features takes long time and mean while the compotators grow up.

That's the reason why RAD model has become more popular in the recent years. Using this model we can develop the software with limited features initially. Then later using the RAD model it's easy to develop the newer version of the software with new features with in less time and less effort. This is the reason why the RAD is most preferred for application software development. Using this model the new versions of software can be developed with solved bugs that are in the previous versions and with new features.But using the RAD model there are some disadvantages such as more LOC than other models.

From the experience of developing the code in both waterfall model and RAD, I prefer that RAD is the appropriate for software development due its agenda in completing the project fast and with calculating all the risks in developing the project using the risk analysis which the important part of the RAD.

I was asked to resubmit the project with development of yahoo messenger using the RAD model and show the differences in the LOC. This part was added at the last of this document.

Reflections

The analysis of the software development model includes a lot of procedures and methods. This project made practically to know the every single phase of software development clearly, and participate in all the phases of the software development.

Analysis of Waterfall model illustrated the oldest and basic method of software development. From this method I have learnt that how the design & analysis phase plays a major role. The analysis phase should be so clear that if any mistakes or in complete information gathered leads to delay in the completion and some time lead the failure of the project which needs to be redesigned, which wastes both time and money.

RAD model is the advanced model than the waterfall model in software development. Most of the time, this model is used for fast development of the product. As there are many risks in developing the product fast, the risk analysis is the major part of the RAD. Using this model made practically understand how the risk analysis is done.

Along with the above reflections from the project, I have known how to write the documentation for the projects and the reports making etc.

References

The data in the project report is written, by referring the data in the following websites and books.

The websites referred are:

http://www.cs.odu.edu

http://www.developers.net

http://library.theserverside.com

www.credata.com/research/rad.html

http://www.ctg.albany.edu

http://enterprisearchitecture.nih.gov/YourPart/What/

http://courses.cs.vt.edu/csonline/SE/Lessons/LifeCycle/index.html

The books referred are :

Software Engineering: A Practitioner's Approach, Fifth Edition

Publisher McGraw-Hill/Osborne

Author(s) Pressman, Roger S

ISBN 0073655783

Release Date 01 January 2001

Formal Software Development

Publisher Palgrave Macmillan

Author(s) Aaron Kans

ISBN 0333992814

Release Date 09 September 2003

Agile Software Development

Publisher Addison-Wesley

Author(s) Alistair Cockburn

ISBN 0201699699

Release Date 15 December 2001

Engineering and Managing Software Requirements

Publisher Springer-Verlag

Author(s) Claes Wohlin

ISBN 3540250433

Release Date 08 August 2005

Categories for Software Engineering

Publisher Springer-Verlag

Author(s) JosT Luiz Fiadeiro

ISBN 3540209093

Release Date 29 November 2004

Agile Software Development: Evaluating The Methods For Your Organization

Publisher Artech House Publishers

Author(s) Alan S. Koch

ISBN 1580538428

Release Date 31 October 2004

End If

byteCat(aPacketLengthTemp, Chr(0))

byteCat(aPacketLengthTemp, Chr(0))

byteCat(aPacketLengthTemp, Chr(CInt(Math.Floor(iPacketLength / 256))))

byteCat(aPacketLengthTemp, Chr(CInt(iPacketLength Mod 256)))

Return aPacketLengthTemp

End Function

Shared Function pbService(ByVal service As yService) As Byte

Select Case service

Case yService.Logon

Return &H1

Case yService.Logoff

Return &H2

Case yService.IsAway

Return &H3

Case yService.IsBack

Return &H4

Case yService.Idle

Return &H5

Case yService.Message

Return &H6

Case yService.Ping

Return &H12

Case yService.Notify

Return &H4B

Case yService.Verify

Return &H4C

Case yService.AuthResp

Return &H54

Case yService.List

Return &H55

Case yService.Auth

Return &H57

Case yService.ExperimentalBrowser

Return &H9A

Case yService.LoginUnknown2

Return &HEF

Case yService.BuddyUpdate

Return &HF0

Case yService.List

Return &HF1

End Select

End Function

Shared Function pbStatus(ByVal status As yStatus) As Byte()

Select Case status

Case yStatus.Available

Return utf8.GetBytes(Chr(&H0) + Chr(&H0) + Chr(&H0) + Chr(&H0))

Case yStatus.BRB

Return utf8.GetBytes(Chr(&H0) + Chr(&H0) + Chr(&H0) + Chr(&H1))

Case yStatus.AuthRespInvisible

Return utf8.GetBytes(Chr(&H0) + Chr(&H0) + Chr(&H0) + Chr(&HC))

Case yStatus.Notify

Return utf8.GetBytes(Chr(&H0) + Chr(&H0) + Chr(&H0) + Chr(&H16))

Case yStatus.AuthRespNormal

Dim aTemp() As Byte = {&H5A, &H55, &HAA, &H55}

Return aTemp

Case Else

Return utf8.GetBytes(Chr(&H0) + Chr(&H0) + Chr(&H0) + Chr(&H0))

End Select

End Function

Shared Function pbAddPayLoadField(ByVal strField As String, ByVal strValue As String) As Byte()

Dim aAddFieldTemp() As Byte = ascii.GetBytes("")

byteCat(aAddFieldTemp, strField)

byteCat(aAddFieldTemp, &HC0)

byteCat(aAddFieldTemp, &H80)

byteCat(aAddFieldTemp, strValue)

byteCat(aAddFieldTemp, &HC0)

byteCat(aAddFieldTemp, &H80)

Return aAddFieldTemp

End Function

#End Region

Code for yahoo messenger using RAD:

Imports System.Data.SqlClient

Public Class ChatLogin

Inherits System.Web.UI.Page

Protected WithEvents txtUsername As System.Web.UI.WebControls.TextBox

Protected WithEvents btSignIn As System.Web.UI.WebControls.Button

Protected WithEvents txtValidFirstName As System.Web.UI.WebControls.TextBox

Protected WithEvents txtValidSignin As System.Web.UI.WebControls.TextBox

Protected WithEvents txtUserNameNew As System.Web.UI.WebControls.TextBox

Protected WithEvents txtPassWordNew As System.Web.UI.WebControls.TextBox

Protected WithEvents Textbox3 As System.Web.UI.WebControls.TextBox

Protected WithEvents txtFirstNameNew As System.Web.UI.WebControls.TextBox

Protected WithEvents txtLastNameNew As System.Web.UI.WebControls.TextBox

Protected WithEvents txtScreenNameNew As System.Web.UI.WebControls.TextBox

Protected WithEvents btnAddNew As System.Web.UI.WebControls.Button

Protected WithEvents Textbox1 As System.Web.UI.WebControls.TextBox

Protected WithEvents lblError As System.Web.UI.WebControls.Label

Protected WithEvents lblWelcome As System.Web.UI.WebControls.Label

Protected WithEvents txtPassword As System.Web.UI.WebControls.TextBox

Dim objChatBLL As New Chat_BLL()

#Region " Web Form Designer Generated Code "

'This call is required by the Web Form Designer.

<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

End Sub

Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init

'CODEGEN: This method call is required by the Web Form Designer

'Do not modify it using the code editor.

InitializeComponent()

End Sub

#End Region

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

'Put user code to initialize the page here

End Sub

Private Sub btSignIn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btSignIn.Click

Dim strUserName As String = txtUsername.Text

Dim strPassWord As String = txtPassword.Text

Dim intUserID As Integer

If Trim(strUserName) = "" Then

lblError.Text = "UserName is a required field"

ElseIf Trim(strPassWord) = "" Then

lblError.Text = "PassWord is a required field"

Else

Dim rdr As SqlDataReader = objChatBLL.LoginChatUser(strUserName, strPassWord)

If rdr.Read Then

Session("CurrentUser") = CStr(rdr("UserID"))

Session("FirstName") = rdr("FirstName")

Session("LastName") = rdr("Lastname")

Session("ScreenName") = rdr("ScreenName")

Response.Redirect("ChatWelcome.aspx")

Else

lblError.Text = "UserName/Password was not found in the database. If this is your first time chatting, please sign in under the section labeled 'New to Chatty Ways?'"

End If

End If

End Sub

Private Sub btnAddNew_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAddNew.Click

Dim strUserName As String = txtUserNameNew.Text

Dim strPassWord As String = txtPassWordNew.Text

Dim strFirstName As String = txtFirstNameNew.Text

Dim strLastname As String = txtLastNameNew.Text

Dim strScreenName As String = txtScreenNameNew.Text

Dim intUserID As Integer

If Trim(strUserName) = "" Then

lblError.Text = "UserName is a required field"

ElseIf Trim(strFirstName) = "" Then

lblError.Text = "FirstName is a required field"

ElseIf Trim(strLastname) = "" Then

lblError.Text = "LastName is a required field"

ElseIf Trim(strScreenName) = "" Then

lblError.Text = "ScreenName is a required field"

Else

intUserID = objChatBLL.AddChatUser(strUserName, strPassWord, strFirstName, strLastname, strScreenName)

Select Case intUserID

Case -1

lblError.Text = "UserName/Password already exists in the database. Please select a different UserName/PassWord and try again."

Case -2

lblError.Text = "ScreenName already exists in the database. Please select a different Screen Name and try again"

Case Else

'success

Session("CurrentUser") = CStr(intUserID)

Session("FirstName") = strFirstName

Session("LastName") = strLastname

Session("ScreenName") = strScreenName

Response.Redirect("ChatWelcome.aspx")

End Select

End If

End Sub

End Class

Imports System.Data.SqlClient

Public Class ChatWelcome

Inherits System.Web.UI.Page

Protected WithEvents Button1 As System.Web.UI.WebControls.Button

Protected WithEvents txtUsername As System.Web.UI.WebControls.TextBox

Protected WithEvents txtChatID As System.Web.UI.WebControls.TextBox

Protected WithEvents txtUserID As System.Web.UI.WebControls.TextBox

Protected WithEvents btGo As System.Web.UI.WebControls.Button

Protected WithEvents DataGrid1 As System.Web.UI.WebControls.DataGrid

Protected WithEvents lblDescription As System.Web.UI.WebControls.Label

Protected WithEvents lblWelcome As System.Web.UI.WebControls.Label

Protected WithEvents txtDescription As System.Web.UI.WebControls.TextBox

Protected WithEvents txtFullname As System.Web.UI.WebControls.TextBox

Dim objChatBLL As New Chat_BLL()

#Region " Web Form Designer Generated Code "

'This call is required by the Web Form Designer.

<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

End Sub

Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init

'CODEGEN: This method call is required by the Web Form Designer

'Do not modify it using the code editor.

InitializeComponent()

End Sub

#End Region

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

'Put user code to initialize the page here

doSetScreenValues()

'If the user just left a chat, remove him from the ChatUserListing

objChatBLL.DeleteSession(Session.SessionID)

If Not Page.IsPostBack Then

BindGrid()

End If

End Sub

Private Sub doSetScreenValues()

Dim strMessages As String

Dim strUserName As String = ""

Dim strFullName As String = ""

Dim strUserID As String = "0" & Session("CurrentUser")

Dim strFirstName As String = "Invalid"

'If the user's session is timed out, send them to the login page.

If Trim(strUserID) = "0" Then

Server.Transfer("default.aspx")

End If

Dim rdr As SqlDataReader = objChatBLL.get_UserInfo(strUserID)

While rdr.Read

strUserName = rdr("UserName")

strFirstName = rdr("FirstName")

strFullName = rdr("FirstName") & " " & rdr("LastName")

End While

lblWelcome.Text = "Hello " & strFirstName & ", welcome to ChattyWays." ' Your Chat name is: " & strFullName

txtUsername.Text = strUserName

txtFullname.Text = strFullName

txtUserID.Text = strUserID

Session("UserID") = strUserID

End Sub

Private Sub btGo_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btGo.Click

AddChat(txtDescription.Text)

doGoToMessagePage()

End Sub

Public Class Redirect

Inherits System.Web.UI.Page

#Region " Web Form Designer Generated Code "

'This call is required by the Web Form Designer.

<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

End Sub

Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init

'CODEGEN: This method call is required by the Web Form Designer

'Do not modify it using the code editor.

InitializeComponent()

End Sub

#End Region

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim bCurrentBrowser As Boolean = True

Dim strPageType As String = UCase(Request.QueryString("PageType"))

Dim strChatID As String = Request.QueryString("ID")

Dim strNewURL As String = "http://www.xmlpitstop.com"

bCurrentBrowser = Double.Parse(Request.Browser.Version) > 5.01

Session("ChatID") = strChatID

'Put user code to initialize the page here

Select Case strPageType

Case "PRINT"

If bCurrentBrowser Then

strNewURL = "report/CreateChat_Preview.aspx"

Else

strNewURL = "report/ChatReport.aspx"

End If

Case "JOIN"

If bCurrentBrowser Then

strNewURL = "ChatIE/ChatIEFrame.aspx"

Else

strNewURL = "ChatNS/ChatNSFrame.htm"

End If

End Select

Response.Redirect(strNewURL)

End Sub

End Class

Analysis of Code

The above codes for yahoo messenger in both waterfall model and RAD model.

In the code for waterfall model has only one main class and the remaining are sub classes and functions. The hierarchy of classes is maintained as the code is developed in a collective manner by programmers. For this reason, first a main class is created with all the required properties and attributes, so that it would be easy to develop the reaming part of code without developing any other more classes, just by creating the sub classes and inherit the main or parent class.

The code in RAD is developed fast and with in short time. For this reason the code is divided into chunks and developed by the individuals or by few groups of developers. Since the development of code is done individually, for every part of code a class is crated. This is the reason why the code developed in RAD has more LOC (Lines of Code) than that of the code developed in the Waterfall model.

As the LOC increase the execution time, system resources also increase.

Lines of Code

It is actually a count of instruction statements. LOC represent the actual program size and complexity. A line of Code is (LOC) the simplest, oldest and traditional one to measure the complexity of any software irrespective of the language. Researchers have found that defects increase as the lines of executable statements increase within the code.

Earlier Studies reveal that the larger the module sizes the smaller the defect size. Recent studies show that defect density decreases with code size. There is no proper proportionality between the code size and the defect density .For example if the code having 5000 lines of code is replaced by 2000 lines of code even though new code is not an efficient one. So the researchers have advised to not only use lines of code as an only metrics in order to determine code complexity.

For the calculation of LOC Practiline Source Code Line Counter 1.0.5.33 software was used.

Method used

Total Line Count

Lines of Code

Water fall model

369

326

RAD

642

629

The reports that are generated by this software are attached in the appendix.