I was recently involved in a project as the development team lead where we successfully applied a number of "agile" development practices within a traditional software development lifecycle (SDLC). I have agile in quotes as we weren't following any particular methodology, we just took different practices (not all of them agile) and applied them in a successful way.
I want to outline the things we did and how it helped us be a more efficient, effective team. These development practices were applied within a fixed scope, fixed timeframe environment.
- Use of user stories
This practice originates from scrum and xp I believe. We broke the requirements down into cards that each described a single user interaction with the system. From here we had a member of the test team help us write acceptance criteria, the things that must occur for the story card to be accepted or complete. This was a great way to organise development and track/measure the progress of the development team.
- Delivery in milestones
In an FDD manner we delivered useable software in fortnightly milestones. This allowed us to get regular feedback on the working software from our sponsor and built confidence in our work and progress. The user stories made communicating the content of these milestones easy.
- Co-location
Lots of methodologies endorse this, much as it may seem obvious it makes a big difference to the workings of a team. We had the development team all sitting together in a 'pod' along with a fulltime tester and a part time business owner. This resulted in easier, earlier communication all-round.
- Daily builds
We had a daily build process where the tester in the 'pod' was running the previous days build. This was a great way to bring forward any testing feedback, so where possible issues could be sorted out within the milestone while the suspectible user story was fresh in the development teams mind.
- Morning standup meetings
Everyone STANDS. The key here is speed. Quick resolution of issues and everyone kept on the same page.
- Continuous Integration (CI)
Another XP practice. We had automated builds both CI and the daily build which ran like clockwork. The benefits of unit tests are a whole seperate post, we had 650 of them at project completion.
- Code Review
We had a policy that before any code is checked into the repository it must be reviewed by any other member of the development team. This results in shared knowledge, learning and an increase in quality.
All of this resulted in a measurable increase in quality, and a successful project. While we may not be able to always run agile projects - there is no reason we can't use good engineering practices in all the work we do.