Software development has become a highly complex and diverse practice, which isn’t properly reflected in present solutions for ALM. Typical trends in the software engineering, which are more relevant to our project (UQASAR), are low formalism processes, customer-driven development, self-managed teams, and a great variability in process frameworks.
1. A Trend of Lower Formalism
Modern software developments like agile methods and now lately Lean approaches are based on low formalism in the sense that plans and documentation are kept to a minimum (but not forgotten) and that teams to some extent are self-managed. This is based on the assumption that plans will change and that extensive development of plans early in the development process represents a cost and a potential waste. Traditional formalism is ideally replaced by simple artefacts such as product backlogs, KanBan boards, information exchange in face-to-face meetings etc.
2. Customer-Centric Development
The customer or someone representing the user of the software is given a central and active role in most modern software development projects. For example, both Scrum and RUP clearly defines such roles, and the external user representative is ideally active in all phases of the project. One of the motives for having someone from the receiving end taking an active part in planning, development and verification is that this role provides valuable feedback on the quality of the software being developed.
3. Self-Managed Teams
In particular agile methods benefit from self-managed teams, meaning that the traditional project leader role often is replaced with a facilitator, for example the Scrum master. This probably affects how quality measurements should be reported or made available. For example, a RUP-type of process may have clearly defined project leader roles which require different reporting than the members of a self-managed Scrum team.
4. Process Frameworks
Processes which are based on the Unified Process build on a rich set of roles, artefacts and processes. UP is a process framework, meaning that is has to be adapted to the specific context and each UP-based process represents a subset of process components. This creates a great variability.
The field is in constant evolution and new phenomenon in the software development are emerging all the time. If you are aware of some, which you think are important and should be kept an eye on, please do share !