Selecting a methodology for a project
What this guide covers
A brief overview of methodology (also referred to as process models, methods or lifecycles) and how to select one for a given situation.
Reading this is not sufficient to complete the coursework. You will also need to research a number of process models.
What is a process model?
The process model is a model at the highest level of abstraction; that is it models the whole software development or data science project process.
There is no universally applicable process; different situations require different approaches.
There are typical activities for software development and data science that most processes will cover. However, there are many variations and not all processes cover all activities.
There are also frameworks or guidelines intended to help you select the most appropriate processes for a given situation.
Typical activities in a software development process model
According to Ian Sommerville (2011) a software process typically includes 4 stages:
- Specification: Requirements gathering, analysis, design
- Development: Implementation, unit testing
- Validation: System testing, integration testing, user validation
- Evolution: Deployment, maintenance
Typical activities in a data science process model
The data science process provides a systematic approach to solving a data problem. Typical stages include:
- Understand and frame the problem
- Data collection, i.e. collect the raw data
- Data cleaning, i.e. process the data for analysis
- Exploratory data analysis
- Perform in-depth analysis; model building
- Communicate results of the analysis; model deployment
How can you select a process model for a given project?
There is no single method for selecting an appropriate process model to use for a given project.
An approach that could be used for the coursework is:
- Choose selection criteria that are relevant to your project.
- Select a shortlist of methodologies.
- Carry out research to determine the extent to which each methodology meets your criteria.
- Select the methodology that best meets the criteria.
- Optionally, consider if there are any concerns with your choice.
You could carry out your own research and determine an approach to selecting a method. For example, use Google Scholar or UCL Library Explore and search e.g. 'how to choose a software development methodology', 'factors affecting the choice of data science methodology'. A few example papers include:
- Data Science Methodologies:Current Challenges and Future Approaches
- Factors that Influence the Selection of a Data Science Process Management Methodology: An Exploratory Study
- Criteria for choosing the right software development life cycle method for the success to software project
- One size does not fit all: Choosing the right project approach
- Selection of appropriate software development life cycle using fuzzy logic
- M. A. Khan, A. Parveen and M. Sadiq, "A method for the selection of software development life cycle models using analytic hierarchy process," 2014 International Conference on Issues and Challenges in Intelligent Computing Techniques (ICICT), 2014, pp. 534-540
- P. M. Khan and M. M. S. S. Beg, "Extended Decision Support Matrix for Selection of SDLC-Models on Traditional and Agile Software Development Projects," 2013 Third International Conference on Advanced Computing and Communication Technologies (ACCT), 2013, pp. 8-15
There are also online articles where the authors provide their own criteria and ranking for various methods, again if you search you will find results such as:
- Formalization of the prediction and ranking of software development life cycle models
- Data Science Methodologies and Frameworks Guide
- Top 12 software development methodologies with their advantages and disadvantage
- Top 7 Software Development Methodologies: Pros & Cons
- Agile for data science
1. Choose selection criteria that are relevant to your project
What criteria do you imagine could be important to you and your team when choosing a methodology to use for the coursework project?
Think of the project not just as COMP0035 coursework 1, but as the whole project to design, develop and test two data science web applications:
- An app that allows other developers to get data programmatically from your dataset
- A web app that gives data related features (perhaps a data dashboard or an app that gives predictions)
Think about how may selection criteria to have, too few, and you might find there is not enough to make a decision, too many, and you may have too much information to reach a clear decision.
Below are some suggestions, though you can carry out research as to how organisations and others choose a process model.
You could use the grid such as the following to record your criteria (the methodology names are covered in the next step).
Method: Criterion |
1 {insert name} |
2 {insert name} |
3 {insert name} |
---|---|---|---|
1 {insert criterion 1} |
|||
2 |
|||
3 |
|||
4 |
|||
5 |
Potential criteria:
- Level of volatility (change) in the requirements: Do you know now what the app needs to do ('requirements') and is this unlikely to change, or is what the app needs to do likely to evolve and therefore the requirements change?
- Level of complexity of the requirements: Is what the app needs to do likely to be straightforward and something that has been done before, or will it be challenging and complex?
- Size of the project team: How people many are there? Group size is set at 4 so this is a relatively small team.
- Team location: Are all team members in same location? Some methods may work better for co-located rather than distributed teams.
- Experience of the team in working together: Is this a new team? Does the team have experience of working on software development projects?
- Experience of the team in particular methods: Do the team members have any experience of using particular methodology? This might influence your choice.
- Timeframe of the project: What is the timeframe? Is there a fixed deadline? How long do you have to complete the project?
- Ease of learning the method/availability of documentation and support: How will you learn the methodology? Is it important to you to have free and easily accessible guidance/training?
- Business criticality of the project: How important is this project? Is it critical to the business or person that is likely to use it? This could be difficult as you do not yet know who you will be creating the web apps for (you will look at this in week 2)
- Does it need to explicitly support software development activities?
- Does it need to explicitly support data science activities?
For example, if you were creating a diagnostic app to determine whether a patient has a particular disease for the NHS, and were part of a large NHS software development team based in several sites around the UK, the following selection criteria might be most relevant:
- Must be suitable for business critical software (a failure in the app could have consequences for patients)
- Must be suitable for a large, distributed project team
- Must explicitly support a software development activities
- Must some changing requirements as the diagnosis process is well documented but how an app would support this is not clearly understood
- May support data science activities
2. Select a shortlist of methodologies
Given the criteria you selected above, find a shortlist of ~3 methods to compare.
The following links give summary information of some of the more popular methodologies. The list includes both software development and data science methodologies.
The table suggests where they are most likely be used; this does not mean a given model cannot be used for a different type of project.
Method | Type, Origins etc. |
---|---|
Cross-Industry Standard Process for Data Mining (CRISP-DM) | Data science |
Domino data science lifecycle | Agile, Data science |
Dynamic systems development method (DSDM) | Agile, IT projects |
Essence | An Agile meta method rather than a methodology. It is a framework for selecting components from other methods. |
Extreme Programming (XP) | Agile, Software development |
Feature driven development | Agile, Software development |
Kanban | Agile, Software development |
Obtain, Scrub, Explore, Model, and iNterpret (OSEMN) | Data science |
SAFe Scaled Agile | Agile, Software development |
Scrum | Agile, Software development |
Team Data Science Process (TDSP) | Agile, Data science |
Waterfall | Waterfall, Systems |
3. Carry out research to determine the extent to which each methodology meets your criteria
Use the links in the table above, the course reading list; or search for materials using UCL Library explore or other research tools.
Try and find evidence that supports whether the methodologies you are researching meet your criteria. Keep a note of any references and include these in your work.
4. Select the methodology that best meets the criteria
Given your research, which methodology do you now think best suits your criteria?
5. Optionally, consider if there are any concerns with your choice
Optionally, consider if there are areas where you don't feel the methodology is well suited, or you have concerns:
- Do you have any concerns with the method you have selected?
- What aspects might be the most challenging to implement for this scenario?
- Are there aspects you think could be challenging to implement? Which/why?
- Are there any trade-offs you had to make and if so what might be the implications of those for your project?
Organisations often adapt methodologies to their own needs, and may add extra techniques from another model.
There are frameworks such as, Essence which is an agile framework that suggests what generic activities are needed and then allows you to select the specific way to carry out those activities from a range of methodologies.