It is considered as a traditional method of developing an engineering software simply because its steps are usually linear sequential flow and rigid. Additionally, it has very specific objectives for each phase of its process whereby once a phase is completed and the next has begun, there is no going back to the previous phase for correction (Bassil, 2012). One of the disadvantages of this methodology is that it is not flexible which means that once an application reaches the testing phase or is in its final stage, it cannot be changed because of the difficulties involved when going back to the prior stages to make corrections. Also it is generally not applicable for maintenance or the ongoing projects and can only be used for projects with very specific requirements. However, there are advantages that accrue to waterfall methodology which may include: it allows departmentalization and makes management easy simply because of its rigidity, it is easy to understand, saves time and allows easy testing and analysis of the software.
This methodology focuses on minimizing the risks by developing the software in short time boxes known as the iterations which last from a period of one week to one month. Every iteration is independent and acts as a lone project with the idea of releasing its own developed software at the end (Rosen, 2005). Every iteration has its planning, scheduling, coding, testing, requirement analysis and documentation steps but its overall aim is always to achieve the expected goal and objective (final software development). One of the advantages of agile methodology is that: it is flexible for various projects, encourages communication and continuous feedback hence transparency between team members, corrections are possible at any time and it is certainly time conscious and cost effective. Nonetheless there are disadvantages as well, which are: the project can get off track if the requirements are not clear and specific and its focus is on the software and no documentation which may be needed after all.
Dynamic System Development Model
It is derived from the rapid application development model. It is simply an iterative and incremental model whose aim is to benefit the end user the best way possible. In addition to that, it also focuses on providing the developed and functional software on time and within the budgeted costs. It is a flexible process because it is prone to changes whenever need be and that it involves testing and analysis of the results at every step of the way (Conboy, 2009). Some of the advantages are: the end users are highly involved in its development and in every step of the way, it provides easy software access for the users, functional software delivery or completion is quick and on time and projects are delivered within the set budget. However, there are disadvantages as well, which include: it is expensive to fund, it is an upcoming methodology and therefore not very common and popular for the developers and it is difficult to understand.
Joint Application Development Methodology
It involves requirements-classification and user-interface expansion whereby the clients, users and developers attend frequent meetings and conferences to be able to approve of the software they would prefer developed. The clients or the users are always or must be involved in the designing, planning and expanding of the software (Dings?yr et al, 2012). However, it focuses on business current problems rather than the technical issues affecting the business. It has some advantages as well, like: encourages information sharing, produces the project on time, proper and fast problem solving and provide an opportunity to learn new ideas. Nevertheless, the methodology has got some disadvantages too, like: high expertise is required but rare to find, it is expensive to fund and takes a lot of time to plan and manage.
For the case study in question, the best model to use is the Dynamic System Development Model. This is simply because it has all the requirements that are needed for it to achieve the stated objectives in the case study. Since its main aim is to benefit the users by making it easy for them to use the software, giving them quality product and providing them with the product on time, then it is the best methodology that can be applied for the case study.
My discussion will be on waterfall methodology. Despite the fact that it is not the best choice for the case study software development, it is also suitable. Waterfall methodology is a methodology that involves several steps or phases to be followed for the software to be successfully developed (Munassar et al, 2010). It is a six step process which starts with:
Requirement Gathering and Analysis
This stage involves the defining, analyzing and recording of the required materials necessary to complete the software development. Defining stage requires the developers to contact the users and find out what they would actually need at the end of the development process. They will have to collect clear raw data from them to enhance effective and efficient production of the software. Also the need to analyze the information collected to make sure that it is complete, clear, precise and consistent with all of them. Then the recording has to be done for later reference. The information is simply stored to be used during the actual implementation of the project development.
This involve the designing of the software art fact just as required by the users. The developers will have to show a simple model of what the software will be like but in theoretical terms. This stage involves the planning, scheduling and managing of materials to be used during the actual software development implementation stage. The design should be able to meet the objectives of the users and solve any problems that may come up even in future. This stage determines how the programming will be done and how the whole software will appear like and function like in real action. As for the case study, I will make sure that some users are present during this stage and that they have approved the design before it is implemented.
This is the actual programming of the software design. It involves analyzing, coding, setting algorithms and taking into action all the requirements for the previous steps. This implementation phase involves putting into action the actual design of the software. This stage is dependent on the previous phases. It is the stage in which the actual prototype or software is revealed. As for the case study, I would involve some of the end users are aware of the development of the software development process by making sure that they make some check-ups especially during this stage. By involving them, there will certainly be idea sharing even from them to help the developers not lose track on the main objective of the project.
This is a step that involves giving some users the developed software to use with an aim of finding out its functionality. The developers have to make sure that the software has achieved its objective and goals as needed and expected by the users and therefore they take the first outcome under test. Apart from desiring to find out about its functionality, they will be aiming to know about its quality and problem solving ability. For the case study, I would give a few of the end users a chance to test the software themselves to know whether it has fulfilled their requirements.
This is simply the actual release of the developed software to the public for use. The software should however be in accordance to the characteristics and requirements of the users. Therefore, the developers should ensure that it is fully functional. Referring to the case study, it will involve moving the software into the computers and setting and activating the actual commands to enable usage.
This is the frequent check-ups of the software after release to correct faults, improve the modifications or characteristics and make sure that it is still functional. This phase is determined by the success of the software in real life i.e. the number of problems reported by users. The more the failure reports the higher the maintenance costs. As for the case study, I would make sure that the developers stay in touch with the users to be able to correct, update and improve the software whenever needed.
The Agile methodology is step by step process whereby each phase is independent i.e. it aims at producing its own complete and functional software at the end of every phase (Dyb?, et al, 2008). However, the waterfall methodology is also a step by step process but once a phase is completed there is no coming back for corrections. Therefore, the waterfall can use the idea brought about by agile methodology where by before moving to the next step, the developers will be sure that the previous one is complete, right and needs no correction. This will certainly increase the chances of success of the project.
The tools that would be used for this work are some of the following: Mind maps or Charts, labor (software developers and programmers), design patterns, database modelling tools (toad, MySQL Workbench), UML tools and techniques, java or PHP, Google, Testing tools and frameworks (JMeter, WebUI test tools, testing Anywhere), algorithms, Scrum desk, programming languages (Java, PHP) to name just but a few tools.
Dynamic Systems Development Model Methodology (DSDMM)
This methodology was developed in the 1990s in the United Kingdom. It is a better development of the rapid application development (RAD). Apparently, the aim of this methodology is to focus mainly on the users while that of RAD is to reduce the amount of construction needed to produce a certain product or complete a certain project. Apart from being a better version of RAD, it is also a constituent of the agile methodologies which give it more values of being efficient and effective in software development projects (Uhrmacher, 2001). DSDM methodology assumes that there is no project that is ever perfect at first but after development and continuous usage and customer involvement, it can be.
According to the case study, the users of the software want: to be involved in entire process of the software development, be given as much support from the software as possible, the software to be economically cost effective and time conscious especially in terms of product delivery and to be of good and high quality. This means that all they want is to have a software that is simple, understandable and easy to operate and manage. Therefore, I can say that the DSDM methodology is the perfect applicable methods for this case because of the characteristics that it uses during software development projects. To be precise, it will fulfill all the needs of the users and even more i.e.:
- Encourages active and easy user control and involvement
- Puts a lot of focus on product deliveries
- It is flexible for any change that may come up
- Its main focus is entirely on the organization’s needs and especially the users
- There is the ability to test the software or product at any time and at any stage
- Increases cooperation and unity between the users and the software developers
- Decisions are made by specific group which is usually an expert on the field
The Dynamic System Development Model methodology is just like any other methodology. This means that it also has its advantages and disadvantages, which include the following:
Advantages of DSDM Methodology
- It is cost effective hence economically perfect
- Users are aware of the software development process
- Provides quick functional product i.e. the software
- Produces high quality work
- Offers easy access to the end users
- There is the ability of the users to effect project change because of their involvement
- Delivers the software on time
- Can be able to indicate the chances of project success and failure early enough
Disadvantages of DSDM Methodology
- May be costly to fund when done by small business organizations
In addition to that, the DSDM methodology is still evolving. It is still being improved in very many different ways so that it can be applicable and be used by every type of business organization, be it be small or large. Therefore, just like any other methodology, the goal of this evolution is to help the workers in the organization work effectively and efficiently together and to achieve the organizational goals. Also, it will also be able to solve so many other organizational problems like: squeezed budgets, delayed product delivery, tight production schedules, lack of user or customer involvement with the organization, lack of cooperation among the workers, missing deadlines of any organizational activity and lack of top management and collaboration.
To conclude, I can say that the Dynamic Systems Development Process method is the best compared to others like waterfall methodology, Joint Application methodology, Spiral methodology to name just but a few. This is simply because it not only have more advantages than disadvantages compared to others but also because its characteristics or the principles that underline it are entirely in relation to the case study. The users of the software in the case study have the same reasons for software development as the reasons for using DSDM methodology. Therefore, if the organization applies this method in its software development, then the chances of it succeeding are way better than when it chooses to use any other possible method.
Industry Examples include: the banking industry (Loyds Bank Insurance Services), construction industries (Loforte et al, 2010), transport and telecommunication industries like: British telecommunication and British airways (Roses et al, 2016)
Dings?yr, T., Nerur, S., Balijepally, V. and Moe, N.B., 2012. A decade of agile methodologies: Towards explaining agile software development.
Munassar, N.M.A. and Govardhan, A., 2010. A comparison between five models of software engineering. IJCSI, 5, pp.95-101.
Dyb?, T. and Dings?yr, T., 2008. Empirical studies of agile software development: A systematic review. Information and software technology, 50(9), pp.833-859.
Conboy, K., 2009. Agility from first principles: Reconstructing the concept of agility in information systems development. Information Systems Research, 20(3), pp.329-354.
Uhrmacher, A.M., 2001. Dynamic structures in modeling and simulation: a reflective approach. ACM Transactions on Modeling and Computer Simulation (TOMACS), 11(2), pp.206-232.
Gentleman, R.C., Carey, V.J., Bates, D.M., Bolstad, B., Dettling, M., Dudoit, S., Ellis, B., Gautier, L., Ge, Y., Gentry, J. and Hornik, K., 2004. Bioconductor: open software development for computational biology and bioinformatics. Genome biology, 5(10), p.R80.
Rosen, C.C.H., 2005. The influence of intra team relationships on the systems development process: A theoretical framework of intra-group dynamics. In 17th Workshop of the Psychology off Programming Interest Group, Sussex University.
Bassil, Y., 2012. A simulation model for the waterfall software development life cycle. ArXiv preprint arXiv: 1205.6904.
Roses, L.K., Windm?ller, A. and Carmo, E.A.D., 2016. Favorability conditions in the adoption of agile method practices for software development in a public banking. JISTEM-Journal of Information Systems and Technology Management, 13(3), pp.439-458.
Loforte Ribeiro, F. and Tim?teo Fernandes, M., 2010. Exploring agile methods in construction small and medium enterprises: a case study. Journal of Enterprise Information Management, 23(2), pp.161-180.