How to Implement a Software Development Process in an Existing Project

agileembedded-systemsmethodologyproject-management

My question involves setting up a Software Development process. If you came in to an existing project that had no formal methodology or process set up, and then were asked to set one up yourself, how would you handle it? I have looked into various methodologies like Agile, or subsets thereof like XP, but these are primarily aimed at how to set up new projects. I am rather unsure how to implement them into an existing project.

Also, many of these are aimed at web or desktop applications. My software project is an embedded system, so while many aspects of them are applicable, it is a bit overwhelming trying to figure out which one to use and how to convert it for use in an embedded system. Unit testing on embedded hardware (especially with a Single Board Computer for which no simulator exists) is incredibly difficult, particularly if the software is very far along, and to add a hardware abstraction layer to aid unit testing would involve tearing up the code dramatically.

What tips would you have for setting up a Software Development Process for an existing project, for a programmer that knows how to program, but is new to software development process management?

Best Answer

First of all do it step by step. It's hard to teach old dog new tricks and if you try to implement all at once - nothing will get implemented.

Here are some questions that may help you to figure out if you are ready for methodology ;)

  1. Code repository (do you use code repository? do you have branching strategy? if I ask you who and when introduced last major bug / feature and why - can you tell me?)
  2. Do you have a road map of the project? Are you able which commits in the repository are directly related with accomplishing the next major goal.
  3. Do you have a bug tracker?
  4. Do you know (have written down) the process of deploying your app? Who decides when you deploy? Who merges the changes to the release branch of code repository? etc..
  5. Do you have code guidelines in place? (variable names, function names, test names etc.)

Maybe this is not directly answering your question but I'm writing from experience. I also once was assigned a task to implement methodology in a company. Unfortunately it's hard to build methodology if code is send between programmers in zip files, stored in a dozen of shared folders without versions and nobody knows where code from few years ago is stored.

If you can answer all of the above questions and still feel good about the state of things the tip for implementing methodology is - choose what makes you feel comfortable.

If you have a strong base (repository, road map, bugtracker, deployment workflow, code guidelines) just test methodologies one by one and see which works best for you and your team.