Thursday, September 5, 2019

Software Process Development: Water Fall Model and the RAD

Software Process Development: Water Fall Model and the RAD 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. Its 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 organizations 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 companys 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. Thats 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 1980s. 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 users 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 dont 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

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.