The Software Development Life Cycle
All software development, Python or otherwise, above a certain level of complexity follows repeatable patterns, or has a life cycle. A Software (or System) Development Life-Cycle (SDLC) might be used as its own distinct development methodology, providing a set of tasks and activities that apply to the development process. That is, even if there is no formal process wrapped around an SDLC, any or all of the activities that go on through one may still take place, and any or all of the artifacts that come out of them may be available during the development of a project.
From the perspective of the actual development, not all of the artifacts resulting from an SDLC, formal or otherwise, may be significantly useful, either, particularly those coming out of the first few phases of the life cycle's process. Even so, the more knowledge that is available during the development process, the less likely it is that development efforts will go in directions that run contrary to the intentions of the system on a longer-term basis.
In order to fully explore what an SDLC might provide, we'll use one of the more detailed ones that can be found on the internet. It breaks the life cycle down into ten phases, which would be executed in the following order, barring process alterations from a development methodology:
- Initial concept/vision
- Concept development
- Project management planning
- Requirements analysis and definition
- System architecture and design
- Development (writing code) and quality assurance
- System integration, testing, and acceptance
- Implementation/installation/distribution
- Operations/use and maintenance
- Decommissioning
The first three phases may all occur before any code is written, defining the high-level concepts and goals, and planning for how to accomplish those goals. The last three generally happen after code is complete, though as new features are thought of, or as bugs surface, code development may restart to address those items. The balance, phases 4 through 7, are loosely classifiable as during development, though, except for the actual writing of code in phase 6, that classification may depend on what development processes or methodologies are in play, something that is likely decided during phase 3 if it isn't already determined by external policies or forces.