Before we begin looking at frameworks and tools for software development, we need to first understand SD methodologies/philosophies or the software development lifecycle. This describes the process your project will take to get from conception to production, including the way in which design changes/updates to your software will be released to the users.
There are many methodologies, designed for different situations, but all of them in some way break-down a software development project into smaller pieces of work, and then determine how these will be performed to develop and/or maintain an application. Below are some examples of these pieces of work or steps in the process:
- Requirements/analysis
- Design/build
- Debugging/testing
- Deployment/release/updates
- Maintenance.
There are many factors which may influence your decision, including but not limited to the nature of the software, the organisation and organisational culture, the team creating/maintaining the application, the users, budget, time constraints.
The most common methodologies are:
- Agile - In short, agile represents these four values: individual & interaction, working software, customer collaboration, responding to change. Agility not rigidity.
- Scrum, Extreme Programming (XP) - Iterative development strategies meaning there are frequent incremental improvements
- DevOps - Continuous improvement
- Waterfall - Structured, rigorous, ordered, step by step approach
- Rapid application - Developer and user work closely to test and redesign and test and redesign until perfect and then cutover (release)
In saying that, most developers use a hybrid approach, combining parts of different methodologies to make something that suits each individual project. You may need to discuss this with stakeholders as your decision is likely to affect more than just yourself.
Eban Escott, CEO of Codebots explains more on this in his article and video combo What is the best software development methodology?
Methodologies
Select the most appropriate methodology to the given scenarios.
Development frameworks are platforms for developing applications. They have existing quality code to perform low-level/common tasks in your application, so that you don’t have to reinvent the wheel. They also have methodology built in.
It’s a bit like buying the framework for a house, where a lot is already done for you (and it’s fixed), but you can add on to that what you need or want, to make it your own.
Keep in mind that many frameworks will have been worked on and perfected over time to suit most situations, so using frameworks will save you time and make you more productive. Frameworks are linked to languages, for example Django uses Python and Meteor uses JavaScript.
Take the time to find the right framework for your application. You don’t want to weigh down your application with unnecessary code (this is typically called code bloating).
Essentially, using frameworks streamlines the process of software development and saves valuable time.
Read Top 100 development frameworks (Butler, R., 2020) to find out more about frameworks, and to see a list of frameworks for web applications as well as mobile applications.
Which of these are frameworks?
Do your own research and then return here and select which 5 of these items are frameworks.
A SD tool is an application you will use to design, build, test, debug, edit, and maintain an app you are developing. Tools often also provide forums so you can look for solutions to problems as you go, all in one place.
There are many software development tools you can use to make your work easier, more productive, and more efficient. You will find that they all specialise in different things. So, you may need different tools for different projects.
When you’re looking at which tool to choose for a project, you’ll need to think about what language you’d like to use, whether you need the ability to share, or integrate, and what devices and operating system/s you’re building for.
Another tool you might want to look at is Trello, an online project management tool.
Watch 5 Tools/technologies every software engineer needs to know where Tim discusses the 5 most important tools for software development (Tech with Tim, 2020) (11:10).