There are so many software development process’s, best practices, philosophies, and frameworks out there that I just wanted to create a complete reference list of valuable things to remember. Note that some of these I recommend NOT using, however I have listed them so that we can ensure to remember what not to do. However, you would be surprised how in some cases some of these practices are valid, even though they might see ridiculous. Anyway, here is the list, and as always feel free to post your comments and I will try and review them and add the ones that are valid!
- Agile Software Development
- Extremely popular at the moment, Agile tries to minimize risk by developing software in short iterations. Each iteration is a small project in itself.
- Agile Unified Process (AUP)
- A simplified version of the Rational Unified Process. It is based around four phases: Inception, Elaboration, Construction, Transition.
- Best Practice
- The best way to get a specific outcome your looking for.
- Constructionist design methodology (CDM)
- A methodology used to develop cognitive robotics, artificial intelligence systems, and communicative humanoids.
- Cowboy Coding
- Your screwed, well.. I guess unless your trying to learn something new, some quick solution for an extremely small problem, or seeing if something might work.
- Design by Use (DBU)
- A software development technique that helps if your working with multiple teams building components that will be integrated to build a larger system. Communicate early and integrate immediately.
- Design-Driven Development (D3)
- An Agile process for creating really cool and innovative requirements to build awesome solutions. Works really nicely with SCRUM and XP.
- Don’t repeat yourself (DRY) or Once and Only Once (O3)
- Process philosophy aimed at reducing duplication.
- Dynamic Systems Development Method (DSDM)
- A framework based originally around Rapid Application Development, now an agile method based around continuous feedback from users and responds nicely to changing requirements.
- Extreme Programming (XP)
- A set of rules to run a team based around: Communication, Simplicity, Feedback, Courage, and Respect. This is done by: Coding, Testing, Listening, Designing.
- Pair Programming
- An extreme programming practice, works great! Two programmers working side-by-side, alternating turns on the keyboard and mouse, while the other watches and analyzes.
- Iterative and Incremental Development
- The idea of developing software systems incrementally, giving time for developers to learn from earlier releases.
- KISS principle (Keep It Simple, Stupid)
- Everything should be done as simple as possible.
- MIT Approach (Worse is better)
- Simplicity of the interface is the most important than anything else, even correctness, completeness, and consistency.
- Open Unified Process
- Part of the Eclipse Process Framework, it’s just an implementation of RUP and UP.
- Quick-and-Dirty
- A crude solution or programming implementation that is imperfect, inadequate, but solves the problem, or masks the problem, at hand.
- Rational Unified Process (RUP)
- A well known refinement of the unified process, it is an iterative software development process created by Rational Software Corporation (now a division of IBM).
- Scrum (management)
- Agile methodology wrapping extreme programming.
- Spiral model
- Combines top down and bottom down methodologies.
- Software Scouting
- Experiment before building (proof of concept, prototypes, mocks, simulations, etc.).
- Test-driven development (TDD)
- Write test case first, then write code that passes the test.
- Unified Process
- Iterative and incremental software development process framework that can and should be customized before use by any organization.
- Waterfall Model
- Requirements, Design, Implementation, Verification, Maintenance.
- Worse is better (New Jersey style)
- Simplicity over correctness.
- You Ain’t Gonna Need It (YAGNI)
- Never add functionality until it is necessary.