Physical Aspects of Waterfall
Introduction
This module covers the physical aspects of Waterfall-based development practices. The Waterfall development methodology has been a traditional approach for managing the software development life cycle (SDLC) for several decades, and is still a viable and recommended approach today for projects that require significant up-front analysis, design, planning and/or involving large, geographically disparate teams.
Concepts
Waterfall teams differ from Agile teams
- Waterfall teams work on particular phases and aspects of the SDLC (e.g., Requirements, Design, Implementation, Test, and Maintenance will typically involve separate teams)
- Teams are generally not cross-functional
- Teams do not need to be co-located
- Meetings are frequent, requiring corresponding meeting spaces and/or virtualized meeting environments
Projects are Managed by Managers
- The different teams in a Waterfall project are typically managed by one or more managers (may or may not have technical expertise)
- Project managers may also be used (may or may not have technical expertise)
- A large project may include multiple management levels
Large Waterfall Projects May Require Multiple Environments
- Development
- Test
- Production
- Combinations of Dev/Test/Production
Workspaces
Since Waterfall teams do not need to be co-located, Waterfall offers greater flexibility in the layout of workspaces. Moreover, different teams can work in workspaces having entirely different structures.
Examples of Different Workspaces and Environments are discussed:
-
Cubicles
-
Open Spaces
-
Mixed WorkSpace Design
Example of a modern cubicle workspace with high walls
Example of an open workspace at Microsoft
Source: A tour of my Microsoft workspace
Mixed WorkSpace Designs
Workspaces may also have a mixture of open spaces, invidual workspaces, and collaborative workspaces.
Example of a mixed workspace
Patterns
Requirements Team
Requirements teams work frequently with project stakeholders/product owners
-
For development of Enterprise systems (i.e., software to be used within an enterprise), requirement team members, often called business analysts, work closely with members of the business unit for which the software is being developed
-
These same benefits apply to a design workshop . In contrast to a requirements workshop it does not include customers, but it does include all members of the feature team–the people with skill in programming, system engineering, architecture, testing, UI design, database design, and so forth.
Requirements Gathering
Source: Requirements Gathering Techniques for IT Business Analysts
Requirements may be gathered at a meeting using large, movable sheets, enabling the BA to save the requirement data and keep it nearby.
Example of Gathering Requirements using movable sheets
Source: How to run a user-centered, requirements gathering workshop
Design Team
The design team includes software architectures, data architects and data models, and other software developers. Software design teams also may be divided, such as using separate teams for data modeling and back-end design work and front-end (UX) design. Design team member workstations are generally similar to those used for developers (see below). Dependent on the design tools used, a design team may need a one or more separate servers to host the design tools and the models they generate. For example, and example of a design tool typically run on a separate server is DigitalML Ignite.
Since many aspects of software design is visual, it is common to have large diagrams displayed in designer workspaces. Such diagrams may include data model diagrams, software architecture diagrams, and user experience (UX) diagrams.
UX team Collaborative Design Space (Walmart)
Development Team
Software developers may use a wide variety of workspaces, including open workspaces and individual cubicles, or even individual offices (for lead developers). Developers also may telecommute or be part of a remote or offshore team. Under the Waterfall model, collaboration among team member is less important that for Agile approaches, and does not (generally) require use of shared workspaces to facilitate pair programming or the like.
A typical software developer workstation including all of the essentials (dual monitors, phone, Starbucks, and bottled water)
Source https://peoplesofttipster.com/category/how-i-work/
Test Teams
Software testers are often described as their own breed, and have there own preferences for work environments. Such environments include test “caves,” test labs, open space test environments. It is also becoming more common to have offshore or otherwise remote test teams.
Test teams using work in with a test environment, as opposed to the production environment used for operations. As a result, the physical environment requires facilities for both test and production environments.
Internet Explorer Performance Lab at Microsoft
Testing may also involve multiple test environments, such as shown below.
Separate equipment required for multiple development, test and production environments
Operations/Maintenance Teams
The operations team is responsible for operating the software system. This may include maintenance aspects as well, or the maintenance team may be separate. There is also a movement towards “DevOps,” which combines the roles of development and operation into a single role. The operations team works in the production environment, which has its own set of production equipment (e.g., servers, software, storage, networking, etc.).
Software as a Service (SaaS) is typically deployed in a data center. All or a portion of the operation team members may work in the data center, or may work remotely using APIs that facilitate interaction with data center equipment. For example, a large number of SaaS deployments are implemented using Amazon Web Services (AWS), which provides various API’s that enable operations engineers to install and deploy Web services remotely.
Meetings, Meetings, Meetings
Meetings are a central communication pillar in Waterfall. For example, a senior designer or architect on a large development project may participate in multiple meetings a day. Generally, the meetings may be any of in-person, on-line virtual meetings, via teleconference, or a combination (some participants meet in person, while others are either on-line, or via teleconference). It is common for companies to have conference rooms for conducting the meetings, and large companies will typically have conference rooms of different sizes. A conference room may include a projector and/or one or more large wall monitors.
There are also situations under which “all-hands” meetings are conducted. Depending on the company, it facilities, and its practices, an all-hands meeting may be conducted on premises or off-premises (for larger companies).
Example of All-hands meeting on company premises
Source: Pure Storage Office Photos