Любая часть программного обеспечения спроектирована по конкретной схеме. Проектирование охватывает архитектуру системы, структуру проектов, структуру и качество кода. Оно может либо ясно сообщать о назначении системы, либо вводить в заблуждение. Прежде чем разработать корпоративное приложение или систему, инженеры должны их спроектировать. Для этого необходимо определить назначение данного программного обеспечения (ПО).
У каждого действия как в повседневной жизни, так и в деятельности крупной организации или разработке программного проекта, есть своя причина. Нам, людям, нужны причины, для того чтобы что-то делать. Разработка корпоративных программных продуктов не исключение.
При создании программного приложения в первую очередь нужно задать вопрос: зачем? Зачем нужна эта часть программы? Почему необходимо потратить время и силы на разработку данного решения? И почему компания должна сама заботиться о разработке этого решения?
Другими словами: каково назначение приложения? Какую проблему должно решать это программное обеспечение? Хотим ли мы, чтобы приложение выполняло важный бизнес-процесс? Принесет ли это прибыль? Будет ли оно приносить
доход непосредственно, например путем продажи товаров, или косвенно — за счет маркетинга, поддержки клиентов или бизнес-процессов? Существуют ли другие возможности обслуживания клиентов, работников или бизнес-процессов?
Эти и другие вопросы определяют бизнес-цели приложения. Вообще говоря, каждый элемент программного обеспечения нуждается в таком обосновании, чтобы сначала увидеть общую картину и только потом вкладывать в разработку время и силы.
Наиболее очевидным обоснованием является реализация необходимых бизнес-сценариев. Они имеют определенную ценность для всего бизнеса, рано или поздно автоматизируются и приносят доход. В конце концов, главной целью создания ПО является максимально эффективная реализация бизнес-сценариев.
На чем сосредоточиться разработчику
Разработчикам программного обеспечения, а также руководителям проектов следует в первую очередь ориентироваться на требования предприятия и сосредоточиться на реализации бизнес-сценариев.
Это кажется очевидным, но слишком часто внимание в корпоративных проектах уделяется другим проблемам. Разработчики тратят время и силы на реализацию деталей и функций, бесполезных при решении актуальных задач. Вспомните, сколько реализаций журналирования, самодельных корпоративных фреймворков и технически перегруженных уровней абстракций встречалось нам за последнее время.
Нефункциональные требования, качество ПО и так называемые сквозные проблемы на самом деле являются важными составляющими разработки ПО. Но первой и главной точкой приложения всех инженерных усилий должны быть удовлетворение требований бизнеса и разработка программного обеспечения, которое действительно приносит пользу.
Удовлетворение требований клиентов
Ответьте на следующие вопросы.
- В чем назначение приложения?
- Какие его функции наиболее важны для пользователей?
- Будет ли приложение приносить доход?
Ответы на эти вопросы должны быть известны всем заинтересованным сторонам. Если это не так, то следует сделать шаг назад, еще раз проанализировать проект в целом и пересмотреть его право на существование. Не всегда цель создания программного обеспечения диктуется исключительно бизнесом. На практике во многих случаях внедряют решения, которые не приносят дохода напрямую, но делают это косвенно, поддерживая другие продукты. Такие решения, безусловно, необходимы, и мы рассмотрим их в главе 8 в рамках вопроса о том, как создать рациональную системную среду.
За исключением этих вспомогательных программных систем мы будем концентрироваться на бизнес-аспектах. Помня об этой главной цели, первое, на что следует обратить внимание, — способ моделирования бизнес-сценариев и преобразования их в программное обеспечение. Только после этого можно реализовывать сценарии с помощью тех или иных технологий.
Такие приоритеты отражают также требования клиентов. Все участники разработки приложения заинтересованы в том, чтобы оно соответствовало своему назначению.
Инженеры-разработчики программного обеспечения склонны видеть все иначе. Они заботятся о деталях реализации и изяществе решений. Инженеры часто увлечены той или иной технологией и тратят много времени и усилий на выбор правильного решения и его качественную реализацию. Это влечет за собой множество сквозных технических проблем, таких как ведение журнала и чрезмерное техническое усложнение системы, что не является обязательным с точки зрения бизнеса. Высокое мастерство программирования, безусловно, имеет большое значение и необходимо для написания хорошего программного обеспечения, но во многих случаях оно расходится с целями клиента. Прежде чем тратить время и усилия на реализацию технических деталей, инженеры должны изучить требования клиента.
Требования к срокам выполнения проекта — еще один аспект, который необходимо учесть. Группы разработчиков оценивают бизнес-сценарии, сравнивая их с качеством технических решений. Они склонны отказываться от необходимых тестов ПО и проверки качества, чтобы уложиться в сроки. Технология, используемая для внедрения бизнес-приложения, должна поддерживать эффективную и прагматичную разработку.
Посмотрев на корпоративный мир глазами клиента, который платит деньги, или менеджера с ограниченными временем и бюджетом, разработчики программного обеспечения, скорее всего, поймут их приоритеты. Первостепенную важность приобретает реализация сценариев, приносящих доход. Техническое обеспечение, выходящее за рамки этого, рассматривается клиентами и менеджерами как бесполезное.
В дальнейшем мною будет показано, как соединить и сбалансировать эти две мотивации с помощью Java EE.