Чтение онлайн

на главную

Жанры

Человеческий фактор в программировании
Шрифт:

Остальные детали этого подхода можно найти у Роланда Рако (Roland Racko), Меилира Пейдж-Джонса (Meilir Page-Jones) и других настоящих ОО-гуру. В своих статьях и книгах они показывают, что даже во всей своей красе 00 не обязательно должно быть трудным — даже для тех заржавелых, старых умов, которые до основания заражены структурными методами.

Субъективное программирование

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

рано или поздно вы обязательно сориентируетесь. Хороших источников знаний и советов по объектно-ориентированным методам предостаточно.

Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода. Использование правильного языка может быть очень полезным. В качестве такого языка можно выбрать почти любой, но, вероятно, больше всего для этого подходит Eiffel — язык, который заслуживает большей известности и большего коммерческого успеха. Хотя он и не является самым лучшим языком из тех, что создавались для разработки программного обеспечения, этот язык является виртуальной противоположностью намного более известного языка С++. Eiffel помогает научиться думать и проектировать с помощью объектов, тогда как С++ помогает заставить себя думать, что вы изменились, даже если вы выдаете все тот же старый гуталин. В отличие от С++, Eiffel — это четкий и компактный язык. С помощью Eiffel легко программировать хорошо и трудно программировать плохо. Если бы Eiffel применяли больше производителей и на большем количестве платформ, этот язык мог бы выиграть за счет своей жизнеспособной и разнообразной среды визуальной разработки, а его инструменты поддерживали бы принятые методы и системы обозначений. Вероятно, собственный компилятор кода также был бы полезен. А еще языку не помешало бы, чтобы некоторые из его сторонников были менее жесткими. Smalltalk — больше, Java — это напиток дня, a Eiffel — это тот язык, который по-прежнему любят многие. (Je suis ton ami1, Bertrand.)

В качестве учебника по ОО для начинающих программистов я многие годы рекомендовал книгу, написанную человеком, который в конце концов сделал структурное проектирование доступным для обычных смертных. «What Every Programmer Should Know About Object-Oriented Design» (Что должен знать каждый программист об объектно-ориентированном проектировании) (Page-Jones, 1995 [55]) была не первой книгой на эту тему, но никогда не поздно писать о сложных предметах ясно и понятно. (Сейчас ее заменила другая, не менее полезная книга того же автора: «Fundamentals of Object-Oriented Design» (Основы объектно-ориентированного проектирования) (Page-Jones, 2000 [56])).

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

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

25

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

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

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

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

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

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

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

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

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

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

Поделиться:
Популярные книги

Вечная Война. Книга VIII

Винокуров Юрий
8. Вечная Война
Фантастика:
боевая фантастика
юмористическая фантастика
космическая фантастика
7.09
рейтинг книги
Вечная Война. Книга VIII

Идеальный мир для Лекаря 16

Сапфир Олег
16. Лекарь
Фантастика:
боевая фантастика
юмористическая фантастика
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 16

Отмороженный

Гарцевич Евгений Александрович
1. Отмороженный
Фантастика:
боевая фантастика
рпг
5.00
рейтинг книги
Отмороженный

Сфирот

Прокофьев Роман Юрьевич
8. Стеллар
Фантастика:
боевая фантастика
рпг
6.92
рейтинг книги
Сфирот

Снегурка для опера Морозова

Бигси Анна
4. Опасная работа
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Снегурка для опера Морозова

Волк: лихие 90-е

Киров Никита
1. Волков
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Волк: лихие 90-е

Газлайтер. Том 8

Володин Григорий
8. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 8

Враг из прошлого тысячелетия

Еслер Андрей
4. Соприкосновение миров
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Враг из прошлого тысячелетия

Кодекс Охотника. Книга XVII

Винокуров Юрий
17. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XVII

Неудержимый. Книга XVIII

Боярский Андрей
18. Неудержимый
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Неудержимый. Книга XVIII

Диверсант

Вайс Александр
2. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
5.00
рейтинг книги
Диверсант

Королевская Академия Магии. Неестественный Отбор

Самсонова Наталья
Любовные романы:
любовно-фантастические романы
8.22
рейтинг книги
Королевская Академия Магии. Неестественный Отбор

Неудержимый. Книга XI

Боярский Андрей
11. Неудержимый
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Неудержимый. Книга XI

Бестужев. Служба Государевой Безопасности. Книга вторая

Измайлов Сергей
2. Граф Бестужев
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Бестужев. Служба Государевой Безопасности. Книга вторая