Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
книги хакеры / Питер_Гудлиф_Ремесло_программиста_Практика_написания_хорошего_кода.pdf
Скачиваний:
16
Добавлен:
19.04.2024
Размер:
9.23 Mб
Скачать

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

19

Спецификации

Составление спецификаций программного обеспечения

В этой главе:

Зачем нужны спецификации

Типы спецификаций

Что в них содержится

Почему их игнорируют?

Не было у меня таких тревог, которые не улеглись бы после чтения в течение часа.

Шарль Монтескье

Практически все, чем вы пользуетесь, имеет документацию. У вашего DVD%плеера есть инструкция по эксплуатации. У вашей ма% шины есть руководство по обслуживанию. В контракте есть текст, набранный мелким шрифтом. У шоколадного торта есть рецепт. Есть книги и журналы, посвященные прак% тически любым задачам, которые могут воз% никнуть. Если ваше программное обеспече% ние представляет собой какую%то ценность, у него тоже должна быть хорошая докумен% тация.1

Мы все знаем, что тщательно протестиро% ванное программное обеспечение, которое

1Разумеется, это не оправдание для плохого интерфейса; он все равно должен быть прос% тым и интуитивно понятным.

 

 

 

 

hang

e

 

 

 

 

 

 

C

 

E

 

 

 

X

 

 

 

 

 

-

 

 

 

 

 

d

 

F

 

 

 

 

 

 

t

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

to

 

 

 

 

w Click

 

 

 

468m

 

 

 

 

w

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

.

 

 

 

 

 

.c

 

 

p

 

 

 

 

g

 

 

 

 

df

 

 

n

e

 

 

 

 

-xcha

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

Глава 19. СпецификацииClick

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

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

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

Профессиональному программисту необходимо умение составлять спе% цификации и работать с ними. Способность общаться на английском (или каком%то другом естественном языке) так же важна, как способ% ность общаться с помощью кода.1 Так же как употребление в пищу ово% щей и регулярные физические упражнения, спецификации «полезны для вас» и полезны для ваших программ. Тем не менее, как и в случае капусты и гимнастического зала, мы ими пренебрегаем, а потом горь% ко жалеем о последствиях, когда получаем нездоровое, дряблое про% граммное обеспечение.

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

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

1В самом деле, Дейкстра заметил однажды: «Помимо склонности к матема% тике, очень важным качеством квалифицированного программиста явля%

ется отличное владение родным языком».

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

Чтоm

же это такое, конкретно?

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

Что же это такое, конкретно?

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

469Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Приложи сердце твое к учению и уши твои – к умным словам.

Притчи 23:12

Спецификации – это официальные документы, участвующие в процес% се разработки и предоставляющие внутреннюю документацию для программного обеспечения. Есть много видов спецификаций (мы их вскоре рассмотрим) для разного рода информации и разных аудито% рий. Каждая спецификация относится к конкретной стадии процесса создания программного обеспечения – от замысла проекта до итогово% го поставляемого продукта. Мы пользуемся ими, чтобы точно зареги% стрировать требования пользователя (или что он надеется получить, если это разные – что, как правило, случается – вещи), подробно опи% сать архитектуру программного решения, интерфейс конкретного мо% дуля кода, решения о конструкции и реализации части кода и т. д.

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

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

Спецификации представляют собой форму внутренних и внешних коммуникаций команды. Мы уже видели, что проекты гибнут при не% достаточном общении. Поэтому мы должны использовать специфика% ции как средство связи – там, где это необходимо. (Проекты могут тер% петь неудачу и потому, что слишком много времени тратится на со% ставление документов, а на написание кода его не хватает!)

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

Спецификации – важный механизм связи между разработчиками программно& го обеспечения. Они служат для фиксирования сведений, которые не должны быть потеряны или забыты.