Главная - Литература

0 1 2 3 4 5 [6] 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294

ГЛАВА

Семь раз отмерь, один раз отрежь: предварительные условия

Содержание

tittp: oc2exom/0309

3.1. Важность выполнения предварительных условий

3.2. Определите тип ПО, над которым работаете

33. Предварительные условия, связанные с определением проблемы

3.4. Предварительные условия, связанные с выработкой требований

3.5. Предварительные условия, связанные с разработкой архитектуры

3.6. Сколько времени посвятить выполнению предварительных условий?

Связанные темы

Основные решения, которые приходится принимать при конструировании: глава 4

Влияние размера проекта на предварительные условия и процесс конструирования ПО: глава 27

Связь между качеством ПО и аспектами его конструирования: глава 20

Управление конструированием ПО: глава 28

Проектирование ПО: глава 5

Перед началом конструирования дома строители просматривают чертежи, проверяют, все ли разрешения получены, и исследуют фундамент. К сооружению небоскреба, жилого дома и собачьей конуры строители готовились бы по-разному, но, каким бы ни был проект, перед началом конструирования они провели бы добросовестную подготовку с учетом всех особенностей проекта.

В этой главе мы рассмотрим компоненты подготовки к конструированию ПО. Как и в строительстве, конечный успех программного проекта во многом определяется до начала конструирования. Если фундамент ненадежен или планирование выполнено небрежно, на этапе конструирования вы в лучшем случае сможете только свести вред к минимуму.



Популярная у плотников поговорка «семь раз отмерь, один раз отрежь» очень актуальна на этапе конструирования ПО, затраты на который иногда составляют аж 65% от общего бюджета проекта. В неудачных программных проектах конструирование иногда приходится выполнять дважды, трижды и даже больше. Как и в любой другой отрасли, повторение самой дорогостоящей части программного проекта ни к чему хорошему привести не может.

Хотя чтение этой главы является залогом успешного конструирования ПО, само конструирование в ней не обсуждается. Если вы уже хорошо разбираетесь в цикле разработки ПО или вам не терпится добраться до обсуждения конструирования, можете перейти к главе 5. Если вам не нравится идея выполнения предварительных условий конструирования, просмотрите раздел 3.2, чтобы узнать, какую роль они играют в вашем случае, а затем вернитесь к разделу 3-1, в котором описываются расходы, связанные с их невыполнением.

3.1. Важность выполнения предварительных условий

Ивкршиаи тшт Поеышб* Общей чертой всех программистов, создающих высокока-ниа анишййл к шастау ПО - чественное ПО, является использование высококачествен-са«ый эффективный тто ных методов, ставящих ударение на качестве ПО в самом поаышаш пшт

начале, середине и конце проекта, ти труда ярйграишздш.

раздал ШЩ, Если вы подчеркиваете качество в конце проекта, это при-

ходится на этап тестирования системы. Именно о тестировании думают многие люди, представляя процесс гарантии качества ПО, но тестирование - только один из компонентов стратегии гарантии качества, и не самый важный. Тестирование не позволяет обнаружить такие ошибки, как создание не того приложения или создание нужного приложения не тем образом; эти ошибки должны быть определены и устранены раньше - до начала конструирования.

Если вы уделяете повышенное внимание качеству в середине работы над проектом, вы подчеркиваете методы конструирования, которым и посвящена большая часть этой книги.

Если вы подчеркиваете качество в начале проекта, вы качественно выполняете планирование, определение требований и проектирование. Если вы спроектировали автомобиль «Понтиак Ацтек», то сколько бы вы его ни тестировали, он никогда не превратится в «Роллс-Ройс». Вы можете создать самый лучший «Ацтек», но если вам нужен «Роллс-Ройс», это нужно планировать с самого начала. При разработке ПО такому планированию соответствуют определение проблемы и определение и проектирование решения.

Конструирование - средний этап работы, поэтому ко времени начала конструирования успех проекта уже частично предопределен. И все же во время конструирования вы хотя бы должны быть в состоянии определить, насколько благополучна ваша ситуация, и вернуться назад, если на горизонте показались черные тучи неудачи. В оставшейся части этой главы я подробно расскажу, почему адекватная подготовка к конструированию так важна и как определить, действительно ли вы готовы перейти к нему.



Выбор ттщотт т тшт быть тежестшш!». Шт-ша (ыть основана на сшон т-еом и эфф${(Тйв»о» и догю/1на-на старым и заспуживающим

Актуальны ли предварительные условия для современных программных проектов?

Порой говорят, что предварительные действия, такие как разработка архитектуры, проектирование и планирование проекта, в современных условиях бесполезны. Такие заявления не подтверждаются ни прошлыми, ни современными исследованиями (подробности см. ниже). Оппоненты предварительных условий обычно приводят примеры неудачного выполнения предварительных условий и делают вывод, что такая работа неэффективна. Тем не менее подготовку к конструированию можно выполнить успешно, и

данные, накопленные с 1970-х, свидетельствуют о том, что в таких случаях работа над проектом оказывается эффективнее.

Общая цель подготовки - снижение риска: адекватное планирование позволяет исключить главные аспекты риска на самых ранних стадиях работы, чтобы основную часть проекта можно было выполнить максимально эффективно. Безусловно, главные факторы риска в создании ПО - неудачная выработка требований и плохое планирование проекта, поэтому подготовка направлена в первую очередь на оптимизацию этих этапов.

Так как подготовка к конструированию не является точной наукой, специфический подход к снижению риска будет в значительной степени определяться особенностями проекта (см. раздел 3.2).

Причины неполной подготовки

Возможно, вам кажется, что все профессионалы знают о важности подготовки и всегда до начала конструирования проверяют выполнение предварительных условий. Увы, это не так.

Зачастую причина неполной подготовки к конструированию ПО объясняется тем, что отвечающие за нее разработчики не имеют нужного опыта. Для планирования проекта, создания адекватной бизнес-модели, разработки полных и точных требований и высококачественной архитектуры нужно обладать далеко не тривиальными навыками, однако большинство разработчиков этому не обучены. Если разработчики не знают, как выполнять предварительную работу, рекомендация «выполнять больше такой работы» не имеет смысла: если работа изначально выполняется некачественно, ее выполнение в больших объемах не принесет никакой пользы! Объяснение выполнения этих действий не является предметом данной книги, однако в разделе «Дополнительные ресурсы» в конце главы я привел массу источников, позволяющих получить такой опыт

Некоторые программисты умеют готовиться к конструированию, но пренебрегают подготовкой, потому что не могут устоять перед искушением пораньше приступить к кодированию. Если вы принадлежите к их числу, могу дать два совета. Первый: прочитайте следующий раздел. Возможно, у вас откроются глаза на не-

фесшонашшй прогрмме ботки ПО, поо1йряюивй гщт-mm эш навыков, ом. тщ Ч

http: cc2e.com/03ie



0 1 2 3 4 5 [6] 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294



0.0029