Читать книгу Beginning Software Engineering - Stephens Rod - Страница 16
PART I
Software Engineering Step-by-Step
CHAPTER 1
Software Engineering from 20,000 Feet
HIGH-LEVEL DESIGN
ОглавлениеAfter you know the project’s requirements, you can start working on the high-level design. The high-level design includes such things as decisions about what platform to use (such as desktop, laptop, tablet, or phone), what data design to use (such as direct access, 2-tier, or 3-tier), and interfaces with other systems (such as external purchasing systems).
The high-level design should also include information about the project architecture at a relatively high level. You should break the project into the large chunks that handle the project’s major areas of functionality. Depending on your approach, this may include a list of the modules that you need to build or a list of families of classes.
For example, suppose you’re building a system to manage the results of ostrich races. You might decide the project needs the following major pieces:
● Database (to hold the data)
● Classes (for example, Race, Ostrich, and Jockey classes)
● User interfaces (to enter Ostrich and Jockey data, enter race results, produce result reports, and create new races)
● External interfaces (to send information and spam to participants and fans via e-mail, text message, voice mail, and anything else we can think of)
You should make sure that the high-level design covers every aspect of the requirements. It should specify what the pieces do and how they should interact, but it should include as few details as possible about how the pieces do their jobs.
TO DESIGN OR NOT TO DESIGN, THAT IS THE QUESTION
At this point, fans of extreme programming, Scrum, and other incremental development approaches may be rolling their eyes, snorting in derision and muttering about how those methodologies don’t need high-level designs.
Let’s defer this argument until Chapter 5, “High-Level Design,” which talks about high-level design in greater detail. For now, I’ll just claim that every design methodology needs design, even if it doesn’t come in the form of a giant written design specification carved into a block of marble.