Hands-On Software Engineering with Python
上QQ阅读APP看书,第一时间看更新

Iteration goals and stories

Each iteration will have a very specific, and reasonably tightly-focused set of goals to be accomplished, building upon the accomplishments of previous iterations until the final system is complete. In order, the goals for each iteration are:

  • Development foundations: Setting up projects and processes. Each of the functional iterations needs be testable, buildable, and deployable by the time they are finished, so some attention needs to be paid early in the system project to making sure that there is some sort of common foundation to build those on as development progresses.

  • Business object foundations: Definition and development of business-object data structures and functionality.

  • Business-object data-persistence: Making sure that the various business objects in use can be stored and retrieved as needed.

  • Service foundations: Building out the bare-bones functionality for the main office and Artisan services, which will be the backbone of the communication and data-exchange processes for the system as a whole.

  • Service communication: Defining, detailing, and implementing the actual communication processes between components of the system, particularly the service-layer implementations.

Each of these iterations has a perhaps-surprising amount of design- and implementation-level decision-making that has to happen, and a lot of opportunities to exercise various software-engineering principles across a wide variety of functional, conceptual, and implementation scenarios.

Each iteration's efforts will be captured in a set of user stories, of the type described when examining the Scrum and Kanban methodologies. Each iteration's criteria for being complete will include having all of the stories associated with it complete, or at least resolved. It's possible that some stories will have to be moved to later iterations in order to accommodate functional dependencies, for example, in which case it may not be possible to complete an implementation of those stories until later in the system's development.