Methods of design and requirements processing should ensure effective communication between team members and provide agile development of software with the possibility of further modernization. In the course of evolution, IT has accumulated a rich set of practices for projects with different complexity, scale and purpose: user story, use case, BDD, TDD, FDD, DDD, architectural work in SAF, and more traditional approaches. As it always happens with a wide range of tools, the problem of choice appears. Well-known tools or methods' comparision on model tasks are mostly preferred. But what's good for small tasks, not always suits long project.
The report provides an overview of various practices that help to solve communication problems and the conceivable models of labour division within the team. The presentation also considers approaches to support the product development and modernization on a long life cycle. This report develops the ideas of my "Agile Engineering practices" post.