Изменить стиль страницы

Так что сориентируйтесь и вы.

Из журнала Software Development, том 3, № 6, июнь 1995 г.

25

Шито белыми нитками

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

Согласно современным мифам об объектной технологии, бесшовное про-эктирование обеспечивает создание более качественного программного эбеспечения с помощью более простого процесса. Каким образом? На про-гяжении всего процесса разработки применяется один общий и согласованный набор компонентов — понятий предметной области. Понятия представлены согласно их трактовке реальными пользователями, обитающими в сказочной стране, называемой «реальным миром». На основе гаких понятий создаются модели, с помощью которых разработчики анализируют и решают свои задачи. Таким образом, понятия воплощаются в замой структуре кода. Разработчики упрощают свою задачу благодаря мышлению в терминах объектов и непрерывному использованию одного я того же набора идей на всех этапах процесса. Так во всяком случае это преподносится.

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

Большая часть моей работы связана с облегчением участи пользователей, ограждением их от страданий и унижений, приносимых плохим программным обеспечением с непостижимыми инопланетными интерфейсами. Пользователи вкушают плоды, которые может дать бесшовное проектирование. В свою очередь, компоненты предметной области, которые заполняют классы и объекты программного обеспечения, могут быть отражены в пользовательских интерфейсах, организованных на основе тех же понятий. Это удивительно, но продукт бесшовной разработки, ориентированный с помощью объектов из мира пользователя, является продуктом, говорящим на его языке. Такой продукт представляет собой узнаваемое продолжение мира, в котором работает пользователь. В нем объединены как раз те предметы, которые пользователь воспринимает или применяет одновременно (см. главы 24 и 28).

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

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

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

Время инструментов

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

Инструменты для создания программного обеспечения продолжают совершенствоваться, особенно визуальные средства разработки. Начиная с Visual Basic и Delphi и заканчивая Visual С++ и J-Builder, визуальные инструментальные средства сделали большой шаг вперед в области разработки приложений и программного обеспечения. Это относится не только к технологии, но и к тому, как такие инструменты соответствуют методам, с помощью которых люди решают задачи. Лучшие из этих инструментов помогают разработчикам легко перемещаться между визуальным представлением программного продукта (пользовательским интерфейсом) и кодом, лежащим в его основе. Другими словами, они позволяют думать либо о видимых объектах, либо о невидимом коде — в зависимости от того, что требуется для решения текущей задачи.

Швы в инструментах начинают проявляться именно между пользовательским интерфейсом и теми моделями, которые разработчики применяют для представления объектов, взаимосвязей и задач. Обещание полной и совершенной интеграции, о которой шла речь в главе 23, еще не материализовалось. Инструменты моделирования все еще являются лишь инструментами моделирования, а инструменты проектирования — лишь инструментами проектирования. Даже если они импортируют файлы друг у друга и способны обмениваться информацией через API, швы и молнии зачастую очень заметны. Более того, инструменты не способны распознать ключевые связи и отношения. Например, пользовательские ситуации повсеместно признаны в качестве модели, имеющей важное значение для объектно-ориентированного проектирования. Они поддерживаются некоторыми инструментами моделирования, однако связь пользовательских ситуаций с пользовательским интерфейсом не распо-знается большинством таких инструментов и пребывает исключительно в умах разработчиков.

Что же в таком случае мы хотим получить от наших инструментов, чтобы создавать высококачественные программы с помощью бесшовного проектирования? Нужно, чтобы поставщики инструментов выходили за пределы своих привычных представлений. Нужно, чтобы они поняли саму идею визуального проектирования — идею, которая так долго ждала своего часа (см. главу 18).

Ракурсы

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