Дж. Рамбо, М. Блаха - UML 2.0 - Объектно-ориентированное моделирование и разработка (1158633), страница 47
Текст из файла (страница 47)
Существует определенная последовательность этапов разработки, которая применима к любой части системы. 208 Глава 10 ° Обзор процесса разработки Таблица 10.1. Ключевые понятия главы анализ предметной области анализ анализ приложения архитектура концептуализация системы проектирование системы реализация итерационная модель разработки тестирование обучение проектирование классов жизненный цикл развертывание поддержка водопадная модель разработки Библиографические заметки В первом издании этой книги этап проектирования классов назывался этапом проектирования объектов. Упражнения 1. (2) Никогда не хватает времени на то, чтобы сделать работу правильно с первого раза, но всегда находится время на то, чтобы ее переделать. Обсудите, каким образом подход, предлагаемый в этой главе, позволяет преодолеть особенности человеческого поведения.
Какие ошибки вы совершите, если сразу броситесь кодировать новую программу? Сравните усилия, затрачиваемые на предотврашение ошибок, с усилиями, необходимыми для их выявления и устранения. 2. (4) В этой книге рассказывается о том, каким образом объектно-ориентированные технологии применяются для создания программ и баз данных. Обсудите, каким образом их можно было бы применить в других областях, напримердля проектированияязыков, представления знаний и проектирования оборудования. Например, параллельные команды разработчиков могут разрабатывать дизайн базы данных, ключевые алгоритмы и пользовательский интерфейс.
Итерационный подход характеризуется гибкостью и быстрым откликом на изменение требований. Сначала создается ядро системы, которое затем расширяется до тех пор, пока не получится готовое приложение. ализация Концепту системы 11.1. Изобретение концепции системы В большинстве случаев идеи, на которых основываются новые системы, являются продолжением уже существуюших идей. Например, в отделе кадров имеется база данных сотрудников, в которую служащий вносит все изменения. Очевидное расширение системы состоит в том, чтобы предоставить сотрудникам возможность самостоятельно просматривать содержимое своих записей и вносить необходимые изменения.
Для реализации этой идеи придется решить множество вопросов (зашищенность, надежность, конфиденциальность и т. д.), но сама идея является достаточно очевидным продолжением существующей концепции. Иногда новшество бывает радикальным. Например, сетевой аукцион автоматизирует древнюю идею аукциона — конкуренции покупателей за продукты, но первые системы для проведения сетевых аукционов были абсолютно новыми программами. Концепция стала осуществимой только после одновременного появления нескольких технологий: Интернета, персональных компьютеров, а также надежных серверов. Большое количество покупателей и низкая стоимость в расчете Концептуализация системы — это зарождение приложения. Все начинается с того, что кто-то один, разбирающийся в потребностях бизнеса и в технологии, формулирует идею приложения.
После этого разработчики исследуют идею, пытаются понять потребности потенциальных клиентов и предложить возможные варианты решений. На этапе концептуализации системы не нужно углубляться в детали, нужно понять картину в целом: какой потребности отвечает предлагаемая система? Можно ли ее разработать за приемлемую стоимость? Покроет ли спрос на конечный продукт затраты на его производство? В этой главе мы рассмотрим конкретный пример: разработку банкомата (АТМ). Этот пример будет изучаться со всех сторон в последующих главах до конца книги. 210 Глава 11 ° Коицептуализация системы на единицу товара, достигнутая благодаря автоматизации, изменили природу аукционов; на сетевом аукционе можно продавать даже дешевые товары и все равно извлекать прибыль.
Кроме того, сетевые системы сделали аукцион параллельным и распределенным. Существует несколько способов поиска концепций новых систем. ° Новая функциональность. Можно добавить функциональность в существующую систему. ° Модернизация. Снятие ограничений или универсализация работы системы. ° Упрощение. Предоставление обычным людям возможности заниматься тем, чем раньше занимались только специалисты. ° Автоматизация. Автоматизация ручных процессов. ° Интеграция.
Объединение функциональности различных систем. ° Аналогии. Поиск аналогий в других предметных областях н исследование их на наличие полезных идей. ° Глобализация. Путешествия в другие страны и изучение их культуры и деловой практики. 11.2. Проработка концепции Большинство систем начинают свое существование в виде нечетких идей, требующих дальнейшего уточнения.
Хорошая концепция системы должна давать ответы на следующие вопросы. ° Для кого предназначено приложением Нужно ясно представлять себе, какие организации и частные лица будут заинтересованы в новой системе. Заинтересованные лица бывают двух основных типов: это спонсоры и конечные пользователи. Важность спонсоров не подлежит сомнению, потому что они оплачивают новую систему.
Они рассчитывают, что проект будет выполняться в соответствии с планом и уложится в бюджет. Вам придется договориться с ними о том, каким образом будет оцениваться успешность выполнения проекта. Вы должны четко представлять себе, в каком состоянии система будет считаться готовой и удовлетворяющей их требованиям. Пользователи тоже являются заинтересованными лицами, но в другом смысле. Именно пользователь в конечном итоге определяет успех новой системы тем, что его производительность нли эффективность повышается (или понижается). Пользователи могут помочь вам, если они будут готовы к сотрудничеству, и не поленятся снабжать вас критическими комментариями.
Они могут повысить качество системы, сообщая вам о том, чего в ней недостает, а что может быть усовершенствовано. Вообще говоря, пользователь не будет заниматься новой программой, если он не почувствует заинтересованности в атом (личной или деловой). Нужно постараться заинтересовать своих пользователей, чтобы и они внесли свой вклад в систему.
11.2. Проработка концепции 211 Если это не удается, вам стоит задуматься о том, насколько необходим ваш проект и не нужно ли его пересмотреть. ° Какую задачу приложение будет решаться Нужно четко ограничить масштабы усилий и установить область их применения. Нужно определить, какими функциями будет обладать новая система, а какими не будет. Вы должны удовлетворить пользователей из разных организаций, обладаюших разными точками зрения и политическими мотивациями.
Вам нужно не только решить, каких функций будет достаточно, но и получить согласие влиятельных лиц. ° Где будет использоваться системами На раннем этапе бывает полезно получить общее представление о том, где может использоваться новая система. Нужно выяснить, будет ли она критической для задач организации, или станет экспериментом, или же это будет просто новая возможность, которую можно будет внедрить, не нарушая последовательность прочих работ.
Вы должны получить хотя бы приблизительное представление о том, как новая система будет дополнять уже существуюшие. Важно знать, будет ли она использоваться на локальных компьютерах или в распределенной сетевой среде. Для коммерческих продуктов обязательно предварительно охарактеризовать контингент заказчиков. ° Когда будет нужна система7 Для нового приложения важны два аспекта, связанных со временем. Во-первых, это время на осушествление, то есть время, за которое система может быть разработана с учетом ограничений по стоимости и с использованием доступных ресурсов. Во-вторых, это требуемое время, за которое система должна быть разработана, чтобы удовлетворить потребностям бизнеса.
Нужно убедиться в том, что оценка времени, полученная с учетом технологических возможностей, соответствует временным потребностям бизнеса. В противном случае нужно начать диалог между технологами и бизнес-экспертами, чтобы найти приемлемое решение. ° Почему нужна эта системами Возможно, вам придется приготовить экономическое обоснование системы в том случае, если этого уже не сделал кто-нибудь другой. Экономическое обоснование включает информацию о стоимости, ошутимой выгоде, нематериальной выгоде, рисках и альтернативных вариантах.
Вы должны ясно представлять мотивацию разработки новой системы. Экономическое обоснование даст вам представление о том, чего ожидают заинтересованные лица, позволит приблизительно указать область применения системы и даже предоставит некоторую информацию для будущих моделей.
В случае коммерческого продукта необходимо оценить количество единиц продукции, которые могут быть проданы, и определить приемлемую цену. Доход от продаж должен покрывать затраты и давать некоторую прибыль. ° Как она будет работать7 Нужно устроить мозговой штурм задачи технической осуществимости. Если речь идет о большой системе, следует рассмотреть достоинства различных архитектур. На этом этапе нужно не выбрать решение, а выработать у себя уверенность в том, что задача может быть решена.
Возможно, потребуется прототипирование и проведение экспериментов. 212 Глава 11 ° Концептуализация системы Пример с банкоматом. На рис. 11.1 приведена наша оригинальная концепция системы банкомата (Анготагес! Те!!ег МасМпе — АТМ). Чтобы проработать эту концепцию, мы ответим на свои собственные вопросы. разработка программного обеспечения, позволяющего клиентам получать доступ к банковской компьютерной системе н выполнять транзакции без участия банковских служащих. Рис. 11.1. Концепция банкомата ° Для кого предназначено приложение? Банкоматы производятся несколькими компаниями.
Поэтому только производитель автомата или крупная компания может компенсировать расходы и трудозатраты на создание программного обеспечения банкомата. Производителю пришлось бы конкурировать за клиентов на сформировавшемся рынке. Крупный производитель, конечно, сможет войти на такой рынок, но ему может оказаться выгоднее стать партнером существующего поставщика или купить его целиком. Небольшому производителю потребуется придать своему продукту какую-либо отличительную черту, чтобы выделиться из толпы других производителей и привлечь к себе внимание. Маловероятно, что финансовому предприятию удастся компенсировать затраты на разработку программного обеспечения банкомата для своего собственного использования, потому что это будет дороже, чем купить готовый продукт.