
Python for Geeks
By :

Before we discuss the optimal development life cycle, let's start by identifying the different phases of a Python project. Each phase can be thought of as a group of activities that are similar in nature, as illustrated in the following diagram:
Figure 1.2 – Various phases of a Python project
The various phases of a typical Python project are outlined here:
An important point is to ensure that the requirement-analysis phase should be kept out of the iterative loop of the design, development, and testing phases. Requirement analysis should be fully conducted and complete before moving on to the next phases. The requirements should include both functional requirements (FRs) and non-functional requirements (NFRs). FRs should be grouped into modules. Within each module, the requirements should be numbered in an effort to map them as closely as possible with the code modules.
Note that coming up with the right design is an important part of a Python project. Any missteps in the design phase will be much more expensive to correct than missteps in later phases. By some measure, it takes 20 times more effort to change the design and implement the design changes in the subsequent phases (for example, coding phase), as compared to a similar degree of changes if they happen in the coding phase—for example, the inability to correctly identify classes or figure out the right data and compute the dimension of the project will have a major impact as compared to a mistake when implementing a function. Also, because coming up with the right design is a conceptual process, mistakes may not be obvious and cannot be caught by testing. On the other hand, errors in the coding will be caught by a well-thought-out exception-handling system.
In the design phase, we perform the following activities:
a) We design the structure of the code and identify the modules within the code.
b) We decide the fundamental approach and decide whether we should be using functional programming, OOP, or a hybrid approach.
c) We also identify the classes and functions and choose the names of these higher-level components.
We also produce higher-level documentation.
Having understood what the different phases of a project are, we will move on to see how we can strategize the overall process.