Sunday, December 18, 2011

System Analysis and Design: Assignment 4


The very first system development models that had created and made the basis of the other system development model’s framework is the Waterfall Model. The Waterfall model is a sequential software development which can be seen as a flowing steadily downwards by the development, like a water fall, that passes through several phases. The Waterfall Model has a process that one should move to the next phase only if the preceding phase or process is completed and perfected. The developments of every phase in the waterfall model are as a consequence of discrete, and there is no jumping back and forth or overlap between them. As many professionals now in the present that see this approach as particularly rigid, modifying the waterfall model has been made over the years and new variants of the model have emerged. This Waterfall Model had been created several decades ago by Royce on 1970. He was proposed as what is now popularly called The Waterfall Model as an initial concept, and he made a statement that the model he had created was flawed. Then his documentation was explored on how the waterfall model could be developed into an Iterative Model, another method of structured system development model. And it has a feedback from each phase that influences the previous phases, which is similar to other system development models used widely and highly regarded by many in the present. Kahit na ang intensyon ni Royce sa kanyang ginawang Waterfall Model ay pagbutihin, palawagin at i-improve into an Iterative Model, the Waterfall Model is still widely use in the present because of its purely sequential process. And the term Waterfall Model in software development structure has always been refer to any approach to software creation which is seen as inflexible and non-iterative. Even though the waterfall model has always been attacked in many years for being too rigid and unrealistic when it comes in meeting the needs of the customers quickly, but still the waterfall model is still popular in the present at ang pagkakaroon ng teoritikal na basehan para sa ibang prosesong modelo o process models dahil para ito ay ang pinakamalapit na resembolo ng henerikong modelo para sa pagpapa-unlad ng pagbabago o pagdevelop ng mga software. The waterfall model has followed the phases perfectly in sequential order, namely, Requirements Specifications, System Design, Implementation, Integration, Testing, Installation, and Maintenance. The Requirement specification phase must capture the all possible requirements of the system to be developed. These requirement gathering must be gathered from the end user (who will be using the system) at the start of the software development phase, but those requirements must have some set of functions and constraints that the end user expects from the system. After gathering data, the requirements are analyzed for their validity, and also studied for the possibility of incorporating the requirements in the system to be developed. Then the last is the creation of a document of requirement specification which serves the purpose of guideline for the next phase. But some source stated that System Conceptualization must be the first step in the process because it refers to the consideration of all aspects of the targeted business function or process, with the goals of determining how each of those aspects relates with one another, and which aspects will be incorporated into the system, and the extensive communication between the customer and the developer is essential. That is why the first step is mainly the job of a system analyst because it is the purpose of his profession in a team project of collecting and gathering required data, and having an analysis on the collected data with the goal of determining how these requirements will be accommodated in the system. And the first process in the waterfall model is very crucial in the hands of the system analyst and project manager because this is the foundation of the software development, and for some instance that the system requirements they have gathered are incorrect or mayroong pagkukulang at taliwas sa kagustuhan ng kliyente, and they proceed in the next phase without completing or perfecting the gathering and analysis of the system requirement, mayroon sigurong mangyayaring hindi maganda sa pagsisimula ng software development at mahahantong sa project failure ng isang team kasi importante sa waterfall model ang pagperpekto sa isang phase bago simulan ang susunod na process para walang aberya mangyayari sa project. In the System and Software Design, it is really important in understanding the requirements of the end user and having an idea on how should the end product looks like before starting the actual coding phase. The first phase of requirements specifications are studied in the second phase and a system design is prepared. System Design helps in defining the overall system architecture, and specifying hardware and system requirements. The specifications of system design must serve as an input for the next phase. It is really necessary in identifying the details on how the system will be constructed to perform necessary tasks after the requirements have been collected and analyzed, and the System Design phase is focused on the data requirements, and software and interface construction. The basis of the second phase’s success depends on the completion and perfection of the first phase’s requirements gathering and analysis because the design is mainly dependable on how accurate and worthy the data gathered from the sources. Designing a system maybe difficult if the gathered data is inaccurate in some reason that limited resources or limited information with the system analyst’s lack of responsibility in working his tasks. Next is the Implementation phase, the actual coding is started here and the work is divided in modules or units after receiving the system design documents. Ang system ay una munang dinedevelop sa isang maliliit na programs na tinatawag na units, which are integrated in the next phase. Every unit is developed and tested for their functionality and it is called unit testing. The purpose of unit testing is to verify if the modules or units meet their specification. This implementation phase can also be called programming because this process is mainly worked by coding all those design presented using any programming languages, and involves the creation of the system software. All those requirements and systems specifications are all translated into machine readable computer code from the System Design phase. In the implementation phase or coding phase, there are lots of individuals must be grouped in this process because of the complexity of the process that must be worked out, but it depends on the system they are working with and the skills of the programmer possess, and the programmer must always interact with the designer to make their work complement each other because having misunderstanding with their works may cause major disaster in the software development and may also cause of wasting the important time they might use in creating and implementing the desired design. After creating and implementing the designed system, it is important to have some testing of the coded software to ensure that the system created is working well, and detect some bugs and errors in the programmed system because working a large system might encounter some technical errors due to overlapping statements and functionalities in the program. In Integration and System testing, it is first divided the system into units which are developed and tested for their functions. After that, the units will be integrated into a complete system during integration phase and have some testing to check if all modules or units can coordinate each other, and the system as a whole behaves as per the specification. After running a successful testing of the software, it is finally delivered to the client. Testing has generally focused on two areas, namely, internal efficiency and external effectiveness. The goal of external effectiveness is to have verification on the software if it is functioning according to the system design, and that it is performing all the important functions or sub-functions. While the goal of internal efficiency testing is to make sure that the program codes is standardized, efficient, and well documented.  Because of its iterative nature, internal efficiency testing can be a labor intensive process. Then the last step of the waterfall model is the maintenance phase, and the operations and maintenance phase is the phase of the waterfall model which is virtually a never-ending phase. Sa pangkalahatan, ang lahat ng mga problema na maaring makita sa paggawa at pagdevelop ng system, ngunit hindi ito nakita sa panahonng development life cycle, ay maari lamang malaman at makita pagkatapos nitong i-deploy at gamitin ng mga customer kasi hindi lahat ng mga problema maaaring mangyari ay medaling madetect habang pinaplano at ginagawa pa ito bilang isang proyekto. Kaya ang mga isyung nauugnay sa isang system ay maari lamang masolusyunan kapag ito ay pagkatapos maideploy ang system. The problems are not all come into picture directly and easily but they arise from time to time and need to be solved as fast as possible, that is why this process is called maintenance. Every system that have created in any individual, establishments, companies, and organization, there has always been a maintenance process in the software system they are using because of the reason that there is no perfect software system that a man had created in the technological age, and every devices, every software we are using must have a maintenance in its lifetime. There are some advantages in using the Waterfall Model in the software development, one of it is that the work and control in the waterfall model has a clear compartmentalization because it is easier to set schedule for everyone’s tasks to be completed within a specific period of time since there is a compartmentalization. The other advantage of the waterfall model is that if the work of the particular phase has over after it was done working, it is the time to start for the next phase of the model. Because of it, there is no overlapping of every phases or the product does not need to have to go through different iterative steps. And most of the managers are prefer to use the waterfall model in their software project because it is the easiest model to implement due to its linear model, and the managers are like to reduced in a large extent the cost of its resources because the processes of the waterfall model are carried out in a linear manner. This in turn helps the client or the organization in reducing the cost of the project considerably. Then the last is the creation of documentation and running a test happens at the end of each phase, which in turn, helps in maintaining the quality of the project. If there is an advantage in using a waterfall model in a particular system development, there are also some disadvantages with the usage of that model. One of the disadvantages is the time consuming of gathering in all the important requirement specifications and the analysis of all the data, because it is very important to collect and gather all the possible requirements in the process of requirement gathering and analysis phase in order to properly design the system, but not all of the time that the requirements are received at once due to some lack of cooperation of some end users or customers. Sometimes the requirements that must need to gather from the customer can be added to the list even after the end of the process of requirement gathering and analysis phase that can affect the system development process and the success of solving the negative aspects. And most of the programmers or every individual who had an experienced in creating a database design also experienced this kind of problem arising from not well planned project and one of it is the problem in one phase are never solved completely during the timeline of working that phase and it is a fact that many problems regarding in that particular phase arise after the phase is signed off and move to the next phase of the process because they only see the problem and errors of the previous phase when there are some mismatch and flaws of the two phases. And that results in badly structured system because not all of the problems related to that phase are solved during the same phase and the other reason is that the project is not partitioned in every phases in a flexible way because of its linear manner. And as the reasons of the requirements of the end users are only getting added to the list even if the requirement gathering and analysis phase was finished, not all of the requirements are fulfilled and being put into process, and this results in development of almost unusable system. That is why some of the system development can experience the increase of cost of resources because of the problem of some requirements are not fulfilled of the finished project and they want to meet the added requirements in the newer version of the system. There are so many criticisms that also arises because many real projects in the present rarely follow the sequential flow that the model proposes, and most of the beginning of the project is that there is often a very great deal of uncertainty in their requirements and goals, and it is then difficult for the client to identify those criteria on a detailed level. And the waterfall model does not provide accommodation  in this natural uncertainty very well. Using the waterfall model in the development of the system can be a long, painstaking process that does not give way in a working version of the system until late in the process. But even though there are arises some or few disadvantages that may experience in applying the waterfall model, it still to continue to be one of the popularly and widely used software development approach in the business and information technology industry in the world. This can be attributed to the fact that many of the advantages in using the waterfall model can outweigh or go beyond the disadvantages of it in certain kind of system projects. And the waterfall model perfectly fit for a particular project that the team who handled it does not have lots of experiences in creating a large system development.
Another sytem develoment model that had created by man to address nad modify the traditional system develoment life cycle is the Prototype Model. The Prototype Model is the development of the program that is not based on strict planning, but instead it is based on the response of the end users. Because most of the traditional system development life cycle are those type of development who have all focused on the developers and not in the end users. The concept of prototyping has its bases on the development by creating prototypes after prototypes until the software created has been perfected. The Prototype Model is building slowly from a simple concept of what is a program, and the software is updated and tested little by little in a real time environment. The users have its participation and able to test and improvethe software as what they are created. There are different types of the Prototype Model of system develoment life cycle. Each of the different types have their own advatages and disadvantages but the protype model has its purpose in constantly changing until it reaches their intendedend users and functions. There are mainly four types of Prototype Models that is based on their development planning: The Patch Up Prototype, Non-Operational Prototype, First of a Series Prototype, and Selected Features Prototype. The first type of the Prototype Model is the Patch Up Prototype, it is the of Prototype Model that encourages cooperationin different developers. Every developers will only work on a specific part of a program, and after each of the developers has done their part, the integration of the program will takes place and each of the program will combine resulting in a whole new program. Patch Up Protoype is a fast development model because everyone is working on a different field, and if every developers are highly skilled, there is no need in overlapping in a specific function of work. The Patch Up Prototype as the type of software development model that only need a strong and experoenced project manager who can monitor the development of the program. The project manager only controls the work flow of the developers and ensure there is no overlapping of functions happende among different developers. The second type of Prototype Model is the Non-Operational Prototype. The Non-Operational Prototype Model is only used on a certain part of the program that should be updated. The specific part of the program will work ir could be tested as planned, even though it is not a fully operational program. The prototype or the main sotware is not affected by updates and modifications as the dummy program is applied in the application. This non-operational prototype is only implemented when certain problems in a specific part of the program arises, and because the software could be in a prototype mode for a very long time, updating and maintenace ofspecific parts isvery important. Then the third type is the First os a Series Prototype, this is also known as beta version and could be very efficient if it is properly launched. But even though it is fully functional software, the only aim of it being in a beta version is to gather feedbacks, and suggestions. This kind of prototype model could be very successful if it is properly done. And the last and fourth type of prototype model is the Selected Features Prototype. It is also a beta version of releasing a software but in another form. This selected features prototype is only introduced in the public the only selected features or limited access to some imortant tools in the program.
The another type of system development model is the Exploratory model, this used occasionaly to design and develop a computer system and this is an experimental, research-based system develoment model. This is the process that involved in the Exploratory model:
·         The work is determined at starting point. It as gathered together all of the information in attempt to get an idea on what will be the new system looks like, and how it can be done.
·         A rudimentary first-generation system is put together, based on the idea that has been formulated in the previous step.
·         The first-generation system is need to test to see how it performs,what will be updates need to do, and what it can and cannot perform.
·         A second-generation system is created from the first system, based on the improvements planned in the previous step.
·         The second-generation system is tested. There have an evaluation of the performance,and the possibility of improvements determined.
·         Then the process is repeated as many time as necessary to get the satisfaction of the end users,or until it is decided the the project is unusable.
·         Then the last is the routine maintenace is carried out on a long-term basis to avoid large-scale failures and to minimize downtime.

References:

http://it.toolbox.com/wiki/index.php/Prototyping_Model

http://www.learn.geekinterview.com/it/sdlc/prototype-model.html
http://www.buzzle.com/editorials/1-5-2005-63768.asp
http://www.ctg.albany.edu/publications/reports/survey_of_sysdev/survey_of_sysdev.pdf

No comments:

Post a Comment