Basic Guide On Software Project Planning
Starting a Project?
A project plan must be one of the first things you put in place before starting your project. Otherwise you might end up going back and forth with your technical team or hired developer. So you end up disorganized, delaying, postponing or even not executing the project at all. The truth is you can never have it all figured out at the beginning, but as time goes on you may need to add more features or fix bugs here and there still, it is better to have a working plan from the start of your project, have a direction, a target than to just blindly jump into a project.
What is a project life cycle?
SDLC (Software Development Life Cycle) includes a detailed plan for how to develop, alter, maintain, and replace a software system.
Software Project Planning is a process that produces software with the highest quality and lowest cost in the shortest time.
You can Read more on Software development Life cycle here.
Following or planning your project life cycle will cost you absolutely nothing but it will save you a lot of time, money and stress. Now if you read through the above article you will already know that there are different models of SDLC (Software Development Life Cycle), each variably tailored to specific project concepts but one thing is common among all these models. After ideation the next and most important step is planning.
There is a saying that if you do not plan at all then you plan to fail
Most of the time we get soo eager to see our ideas come to life as soon as possible that we forget to plan. Well in today's article, I am going to give you a simple step by step sample project plan to guide you in coming up with your project plan, as applicable to and suitable for your project/building process. Note that it doesn't matter what stage you are, in your project. It is never too late to plan.
Better late than never
Sample Project Plan: Food Delivery Application
Below is a sample Project plan for a simple food delivery app (FoodieExp)
FoodieExp is a delivery section of a high-end urban market that helps the market deliver fresh produce ordered by clients to different destinations within the city.
Product Overview
FoodieExp provides delivery quotes based on the distance of the client from the market and the food type (Vegetable, Fruit, Grains, Beans and Nuts, Dairy Food, Meat and Poultry, Fish and Seafood).
Proposed Product Features
Features are super important they are like the Engine of the whole project, without the features there is definitely no project, hence planning the required features is a very important aspect of your project planning and development process, it is as important as the project itself. Features are definite and key characteristics of an application, software or project
Required Features :
- Users can create an account and log in.
- Users can create a produce delivery order.
- Users can change the destination of a produce delivery order.
- Users can cancel a produce delivery order.
- Users can see the details of a produce delivery order.
- Admin can change the status and present location of a produce delivery order.
- The application should display a Google Map with Markers showing the pickup location and the destination.
- The application should display computed travel distance and journey duration between the pickup location and the destination. Leverage Google Maps Distance Matrix Service.
- The user gets real-time email notification when Admin changes the status of their produce.
- The user gets real-time email notification when Admin changes the present location of their produce
It is also important to note the limitations and possible actions a particular role(user, admin, super admin etc) can execute on the platform: for instance as demonstrated below some limitations/possible actions are clearly defined:
- The user can only cancel or change the destination of a produce delivery when the produce’s
status is yet to be marked as delivered. - Only the user who created the produce delivery order can cancel the order.
Preparation Guide
These are the steps to take or platforms to have in place before starting the project
- Create a Pivotal Tracker Board or trello story
- Create a Github Repository, add a README, and clone it to your computer
Tip: find how to create a Github Repository here.
Further Reading and Exercise
- Though Github is the most popular, there are other repository platforms, list some below in the comment section
- List some project management platforms you have used in the comment section below
Stage 1. Create UI templates
Assigned Time : 2 weeks
Note: Timing is at your discretion and size of project
Process Summary
Create UI templates with HTML, CSS, and Javascript.
Specify the framework you would like your team to use for the project, there are different CSS frameworks e.g Bootstrap, Materialize, sass/scss.
Process Guides
You can further specify how you want the flow of communication and the details you expect to see in every UI progress update
- On Pivotal Tracker (or any project management platform you decide to adopt for your project), create user stories to setup the User Interface elements:
a. User sign-up and sign-in pages.
b. A page/pages where a user can do the following:
i. Create a produce delivery order.
ii. Change the destination of a produce delivery order.
iii. See the details of a produce delivery order such as the pickup location, weight, type,
destination, and price.
iv. Cancel a produce delivery order.
v. View all produce delivery order the individual user has created
c. A page/pages for a user’s profile which, at minimum displays:
i. The number of produce delivery order that has been delivered.
ii. The number of produce delivery orders that are yet to be delivered (in
transit).
iii. List of all produce delivery orders
d. A page/pages where an Admin can do the following:
i. Change the status of a produce delivery order.
ii. Change the present location of a produce delivery order.
- On Pivotal Tracker, create stories to capture any other tasks not captured above. A task can be feature, bug or chore that might crop up in the process of development.
Note:
You are to create a pull request to elicit review and feedback for the UI templates when you are done working on them
Stage 2: Create API endpoints
Assigned Time : 2 weeks
Note: Timing is at your discretion and size of project
Process Summary
You are expected to create a set of API endpoints already defined below and use data structures to store data in memory. Do NOT use a database yet that would come up later.
Again Clearly state what you expect of your Project, decide the standard you want to use and state your requirements
Example you can decide that:
- All JavaScript MUST be written in ES6 or higher and should use Babel to transpile down to ES5.
- Classes/Modules MUST respect the SRP (Single Responsibility Principle) and MUST use the ES6 methods of module imports and exports.
Always specify the tools and technology you are comfortable with using on your project, this decision should be based on personal knowledge of tools and ease of continuing the project in the eventuality that you need to change your team or relieve some of the team members. You should also consider the following in determining the tools best suitable for your project: quality of project codes, ease of updating, use, maintenance, tracking, getting support and community of user, popularity and compatibility with browsers,
Tools
Server side Framework: Node/Express
Linting Library: ESLint
Style Guide: Airbnb
Testing Framework: Mocha or Jasmine
Process Guide
This are your activities for this Section
- On Pivotal Tracker(or your project management platform), create user stories to set up and test API endpoints that do the following using data structures
Create a produce delivery order
Get all produce delivery orders
Get a specific produce delivery order
Cancel a produce delivery order - On Pivotal Tracker create stories to capture any other tasks not captured above. The
tasks can be feature, bug or chore for this stage. - Setup the server side of the application using the specified framework
- Setup linting library and ensure that your work follows the specified style guide
requirements - Setup the test framework
- Version your API using URL versioning starting, with the letter “v”. A simple ordinal
number would be appropriate and avoid dot notation such as 2.5. An example of this
will be: https://exampleapp.com/api/v1/users - Using separate branches for each feature, create version 1 (v1) of your RESTful API to power front-end pages
- At the minimum, you should have the following API endpoints working:
Endpoints | Functionalities |
---|---|
GET /produces | Fetch all produce delivery orders |
GET /produces/<produceId> | Fetch a specific produce delivery order |
GET /users/<userId>/produces | Fetch all produce delivery orders by a specific user |
PUT /produces/<producesId>/cancel | Cancel the specific produce delivery order |
POST /produce | Create a produce delivery order |
PUT /produces/<produceId>/destination | Change the location of a specific produce delivery order |
Note: Only the user who created the produce delivery order should be able to change the destination of the produce
- Write tests for the API endpoints
- Ensure to test all endpoints and see that they work using Postman.
The next steps below are totally dependent on the quality of codes you expect from your development team: - Integrate TravisCI for Continuous Integration in your repository (with ReadMe badge).
- Integrate test coverage reporting (e.g. Coveralls) with a badge in the ReadMe.
- Obtain CI badges (e.g. from Code Climate and Coveralls) and add to ReadMe.
Note:
You are to create a pull request to elicit review and feedback for the Server Side setup when you are done working on them
Further Reading and Exercise
What other Tools or technology might you want to adopt in building the server-side of your project, comment it below
Stage 3: Create more API endpoints and integrate a database
Assigned Time : 2 weeks
Note: Timing is at your discretion and size of project
Process Summary
You are expected to create all the user authentication and admin authentication/role endpoints required to meet all the requirements listed below and ensure that you persist data with a database.
Write SQL queries that will help you write to and read from your database. The endpoints are to be secured with JWT (You can decide which authentication module you would like to use, JWT is just one of them)
Requirements:
Every project is unique to the owner
Again Clearly state what you expect of your Project, decide the standard you want to use and state your requirements:
- All Javascript MUST be written in ES6 or higher and should use Babel to transpile down to ES5
- Classes/modules MUST respect the SRP (Single Responsibility Principle) and MUST use the ES6 methods of module imports and exports.
- Use PostgreSQL for the Database:
Process guide
-
On Pivotal Tracker, create a chore for setting up the database.
-
On Pivotal Tracker, create user stories for setting up and testing API endpoints that do
the following using database:
a. The user can create user accounts and can sign in to the app.
b. The user can change the destination of a produce delivery order.
c. The user can view all produce delivery orders he/she has created.
d. Admin can view all produce delivery orders in the application.
e. Admin can change the status of a produce delivery order.
f. Admin can change the present location of a produce delivery order -
On Pivotal Tracker,
I. create the story for the implementation of token-based authentication using JSON web token (JWT) and the security of all routes using JSON web token.
II. create stories to capture any other tasks not captured above. The tasks could be feature, bug or chore for this stage.
III. create user story(ies) to implement the following features:
a. The application should display a Google Map with Markers showing the destination.
b. The application should display a Google Map with a line connecting both Markers
(Produce Market ( location ) and the destination).
c. The application should display a Google Map with computed travel distance and
journey duration between the produce market ( location ) and the destination.
d. The user gets real-time email notification when Admin changes the status or the
present location of a produce. -
Setup database.
-
Write tests for the endpoints specified below.
-
You should have the below-listed API endpoints working
-
Test all endpoints with Postman.
-
Use API Blueprint, Slate, Apiary or Swagger to document your API. Docs would be
accessible via the application’s URL.
Endpoints | Functionalities |
---|---|
POST /auth/signup | Register a User |
POST /auth/login | Login a User |
PUT /produces/<produceId>/status | Change the status of a specific produce delivery order |
PUT /produces/<produceId>/presentLocation | Change the present location of a specific produce delivery order |
Note: The PUT (Status and Location update) endpoint should be accessible by only the Admin
Note:
- Aside from Pivotal tracker, there are other Project Management Platform you can adopt
- Ensure your work is completed and merged to the develop branch before you get started.
- You are to create a pull request to elicit review and feedback for the continuation of the Server Side setup when you are done working on them
- You are to create a pull request to elicit review and feedback when you are done working on this stage
Further Reading and Exercise
What ORM tools can we use in this Stage, comment them below
List other Databases you know below
List other Project Management platform you know or have used below
Stage 4: Power The Front-end App
Assigned Time : 2 weeks
Note: Timing is at your discretion and size of project
Process Summary
You are expected to power your HTML templates or front-end pages from Stage 1 with data from the API built in Stage 3. This Stage requires that you implement the frontend part of the application using vanilla Javascript.
NB:
- Ensure that Stage 3 is completed, approved and merged to the develop branch before you get started.
- You are to make use of Fetch API for making requests to the backend
- State your prefered language e.g you can decide that JQuery can be used only for aesthetics.
- If you are interested in using a framework for your project you can state the framework you would prefer to use like Angular, Vue or React.
Process Guide
- On Pivotal Tracker create stories to build out your frontend with vanilla Javascript.
- On Pivotal Tracker create stories to capture any other tasks not captured above. The tasks can be feature, bug or chore in this stage
- Create a new folder and branch in which you will develop your front end (this is dependent on your branching system).
- Setup linting library and ensure you configured the style guide properly
- Implement your front-end.
Lastly Project Review, Clean-Up and Deployment
Clean up and Deploy project to Selected Hosting services
Note That this is just a summarised guide, based on project with limited features. I hope this serves as a guide for you to create a more robust plan for your Project. Note that an alternative way of doing this is to simply list out the steps of activities you intend executing towards achieving your application development goals, either ways ensure you are detailed and you make your expectations clear with a timeline. You can Drop any additional step you think is missing below in the comment section.
Thank you