This is the dev ops assignment repo that will be used for team 1's assignment for ETI sem 3.2 2020
After careful consideration of seven different methodologies, we realised that there were some of which would not be a great fit to the project that we are currently working on. These methodologies are the Rationalized Unified Process Methodology (RUP) and the Spiral Methodology.
One of the main reasons why the RUP (Rationalized Unified Process) methodology wouldn’t work for this project, is due to the fact that it uses past work/resources to reduce the development time, and another major factor that we have to consider is that this methodology relies heavily on developers being experts in their fields, and if there are some members in our team which are not well versed in development, it will hinder the project timeline and create a major setback.
Although the Spiral methodology has been used in companies such as Airbnb, Cisco and Spotify, this model does not really suit our agenda, as this project is a smaller scale project. Not only is it more suitable for projects on a larger scale, it is also not cost friendly as it is said to be very expensive, and as we are students we would not have the money to execute this methodology. Additionally, a project like ours will have requirements and changes that can happen at any time, the spiral model wouldn’t be something that we can use as it follows a very strict protocol.
In conclusion to this part of our evaluation, we feel that these methodologies would not suit our goal based on the scale of the project and the current resources that are available to us.
Following that, there were two other Software Development Methodologies that could have been applied but were striked off due to some disadvantages that would have impacted the project. They are the Waterfall model and V Shape model.
Both models are quite similar to each other in terms of being simple to understand and use, as well as being appropriate for smaller projects. As the scale of the project is small and it’s requirements are clearly defined at the start, both methodologies can be applied. However, the disadvantage for both models is that it is not very adaptable to new features/ requirements. This would be the main concern as the client (tutor) may make some changes to the program to handle other features. As we are not very experienced with dealing with these changes in requirements, we may end up spending more time trying to learn how to make changes to our model instead of working on the project itself. Thus, we have decided to take these two Software Development Methodologies off the list.
Finally, we narrowed it down to three software development methodologies. Incremental, Agile and Extreme Programming (XP).
The reasons why we considered these methodologies is because they are similar in that they are able to adapt to changes, are flexible and save the costs and time for our project.
The disadvantages of these methodologies would be needing developers to be more focused on the code. It takes more time and effort to maintain the test suite as developers and customers must constantly interact with each other, and there’s no clear end because projects become ever-lasting.
As stated in the assignment case study, there may be changes made to our program to handle other features. Therefore, we decided that these four methodologies are able to meet the requirements needed for this project as the given project is small, it is more focused on the code rather than the design and it requires the QA (tester) to write scripts and developer to cooperate in amending the failed test before continuing to write new code.
After much thought, we decided on the Agile methodology as the best fitted Software Development Methodology for our project. Agile is flexible to changes which is important to our project as well as enables the detection of issues to fix faster. It allows for immediate feedback which could improve the developer skills and it is low in cost to maintain. Additionally, some of us have experienced using this methodology during our internships so we have a better idea of how it works.
Agile also allows teams to deliver a prototype and improve upon it every cycle which is fast, increases productivity and allows us to have a clearer idea of how close the project is to completion as we have something to compare against the requirements. These are outcomes that apply greatly to our project and thus, we have chosen it as our best fitted Software Development Methodology.