Архитектор программного обеспечения чек-лист из 9 обязанностей

Этот контент является частью серии:Специалист по архитектуре программных систем

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

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

Локальные информационные системы

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

Готовые работы на аналогичную тему

  • Курсовая работа Архитектура информационной системы 440 руб.
  • Реферат Архитектура информационной системы 260 руб.
  • Контрольная работа Архитектура информационной системы 250 руб.

Получить выполненную работу или консультацию специалиста по вашему учебному проекту Узнать стоимость

Персональные характеристики

Деловые взаимоотношения между командами разработчиков программного обеспечения и управленческим аппаратом всегда были «камнем преткновения» в сфере информационных технологий. При этом обе группы отличает диаметрально противоположный подход к решению данной проблемы. Во всех руководствах по менеджменту подробно описывается, как руководители проекта должны контролировать деятельность разработчиков и управлять ей. Тем не менее, отсутствие взаимопонимания все еще остается обычной практикой и служит одной из главных причин неудачи многих проектов. Участие в проекте хорошего специалиста по системной структуре проектируемого программного продукта является наилучшим из известных способов решения этой проблемы. Первоочередная обязанность системного архитектора – обеспечивать надежную платформу для эффективного взаимодействия разработчиков и руководителей проекта путем согласования бизнес-правил и требований с техническими параметрами и ограничениями, что в итоге позволяет гарантировать успех проекта. Ниже приводятся некоторые характерные особенности, отличающие хорошего специалиста по архитектуре программного обеспечения.

Читайте также:  Резюме бармена: образец и правила составления

Готовность и способность к взаимодействию. Самая ценная черта архитектора ПО – высокий уровень деловой коммуникабельности. Вам нужно искать квалифицированных и опытных разработчиков, которым уже приходилось брать на себя инициативу по обеспечению соблюдения требований и учета интересов бизнеса в процессе реализации проектов. Специалист, определяющий системную структуру создаваемого программного продукта, должен предвосхищать и устранять проблемы, связанные с несогласованностью подходов и несовпадением точек зрения, причем желательно до того, как эти проблемы начнут оказывать свое негативное влияние на процесс проектирования. Архитектор ПО должен сделать все от него зависящее для согласования в рамках проекта абстрактных математических алгоритмов и технических методик с реальными задачами бизнеса. В его обязанности не входит планирование и координация обмена мнениями между разработчиками и заказчиками – это, как правило, прерогатива руководителя проекта. Задача архитектора состоит в определении эффективной методологии, стимулирующей активное рабочее взаимодействие всех заинтересованных сторон в процессе проектирования системы. Он должен обладать способностью своевременно определять, какие из применяемых инструментов малоэффективны или какие из используемых методов дают сбои, и оперативно менять рабочие средства или искать новые подходы. Важно также умение составлять технические описания и работать со специализированными программами по созданию чертежных документов, сводных отчетов, таблиц и диаграмм.

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

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

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

Разработчики часто бывают сильны исключительно в математических абстракциях, тогда как хорошие архитекторы ПО стремятся совершенствовать свои вербальные способности; иными словами, уметь представлять свои мысли в устной речи. «Прикладной» склад ума, который разработчики часто приписывают менеджерам – вот хороший критерий для оценки специалиста по архитектуре программных систем. Архитектор, безусловно, должен обладать глубокими знаниями и опытом для эффективного решения технических проблем, но он также должен четко представлять себе, как конечные пользователи будут взаимодействовать с разрабатываемыми технологиями. Для этого нужно уметь абстрагироваться от битов и байтов программного кода, что зачастую не так просто, как кажется.

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

Виды архитектуры информационной системы

Любая информационная система (ИС) включает в себя три компонента:

  • Управление данными;
  • Бизнес-логику;
  • Пользовательский интерфейс.

Данные хранятся в базах данных, а управление ими осуществляется с помощью системы управления базами данных (СУБД). Бизнес-логика определяет правила, по которым обрабатываются данные. Она реализуется набором процедур, написанных на различных языках программирования. Пользователь работает с интерфейсом, где логика работы ИС представлена в виде элементов управления – полей, кнопок, списков, таблиц и т.д.

Однако, эти три компонента в разных ИС взаимодействуют друг с другом различными способами.

Определение 1

Архитектурой информационной системы называется концепция, согласно которой взаимодействуют компоненты информационной системы.

Существуют следующие виды архитектур ИС:

  • Локальная;
  • Файл-серверная;
  • Клиент-серверная;
  • Трехслойная.

Контроль в течение всего жизненного цикла разработки

Хорошие специалисты по системной архитектуре приобретают ценный профессиональный опыт, как правило, в организациях с четко налаженным жизненным циклом разработки программного обеспечения (Software Development Life Cycle, SDLC). Архитектор должен понимать смысл наиболее важных операционных процедур в свой области. Это не обязательно означает, например, работу на верхнем уровне Модели развития функциональных возможностей (Capability Maturity Model, CMM – концептуальная организационная модель, описывающая эволюционные этапы, или уровни, управления бизнес-процессами на предприятии). Хороший специалист-архитектор может придти из организации, использующей методологию экстремального программирования Extreme Programming (XP) на отдельных этапах цикла SDLC. Для системного архитектора очень важно глубокое понимание принципов традиционных методик разработки программного обеспечения, таких, как методы программирования Майкла А. Джексона (Michael A. Jackson): Структурированное программирование Джексона (Jackson Structured programming, JSP) и Разработка системы Джексона (Jackson System Development, JSD) (См. Ресурсы). Для специалиста по программной архитектуре изучение методов Джексона важно в такой же степени, как изучение классических книг по программированию Дональда Эрвина Кнута (Donald Ervin Knuth) для разработчиков программ. Системный архитектор должен быть знаком с любой классической (или проверенной долговременной практикой) методологией разработки программного обеспечения.

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

Анализ. На этапе анализа хороший специалист по системной архитектуре занимается изучением различных нетехнических аспектов, а также среды, в которой будет осуществляться разработка проекта. Сисиемный архитектор, используя весь свой опыт в области программного обеспечения, оценивает риски, связанные с будущим проектом. В поисках хорошего архитектора обращайте внимание на опытного разработчика, который помогает сотрудникам бизнес-подразделений понять, что необходимо ИТ-специалистам для правильного толкования требований технического задания на проект. И еще: ищите разработчика, который смог предугадать возможные проблемы на ранних стадиях разработки проекта.

Читайте также:  Образец резюме начальника службы безопасности

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

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

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

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

Советы тем, кто готовит системных архитекторов в своем коллективе разработчиков

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

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

Добавить комментарий

Adblock
detector