Всегда помните об ограничениях проекта и бизнеса при создании и анализе архитектуры информационной системы
и программного обеспечения (стоимость, время, бюджет, уровень квалификации и т. д.)
Не поддавайтесь хайпу - останавливайтесь, анализируйте компромиссы, изучайте тенденции и подходите к новым технологиям с осторожностью
Больше фокусируйтесь на «зачем», а не на «как» - именно это действительно важно, в особенности в архитектуре
Распространение знаний более ценно, чем индивидуальный вклад.
Люди будут делать одно и то же, как ты ни бейся.
Изменить свое мнение и следовать тому, что исправляет ошибку, более соответствует свободе, чем настойчивость в своей ошибке.
Со временем, по причинам постепенных «рывков» развития сферы информационных технологий, последующего масштабирования на все области деятельности человечества, архитектура программного обеспечения стала целиком и полностью предметом работы разработчиков программного обеспечения и в большинстве случаев, незримо подразумевалась как часть процессов жизненного цикла разработки информационных систем. Это было связано с тем, что ресурсов на создание программного обеспечения стало выделяться меньше, различные этапы «сращивались», а результатов от разработки, внедрения и применения стали ждать как можно раньше.
С учетом постепенно возрастающего количества запросов к качеству информационных продуктов, складывающегося из множества различных компонентов, так долго продолжаться не может ибо инвестиции в бардак - увеличивают бардак.
Мои навыки и опыт системного архитектора / аналитика
Формирование архитектурных решений в 4-х представлениях
Информационная архитектура
Функциональная архитектура
Архитектура приложений
Архитектура данных
Разработка архитектурного решения поставленной задачи
Проектирование решений по бизнес требованиям (декомпозиция требований по функциональности модулей).
Проектирование модели данных, логической и физической структуры
Разработка структур хранения и обмена данными, интеграционных API
Определение правил и ограничений интеграции компонентов
Определение требований к хранению и передаче данных между компонентами
Определение протоколов взаимодействия
Разработка технической и проектной документации
Описание и согласование технических заданий, интеграционного взаимодействия, архитектурной документации и т.п.
Контроль реализации архитектурных решений, с точки зрения соответствия целевой архитектуре предприятия
Понимание роли и места архитектуры в процессах разработки ПО.
Понимание сервис-ориентированной и микросервисной архитектуры, шаблонов проектирования интеграционных приложений
Мои навыки и опыт инженера
Языки программирования: Microsoft .Net (C#), Borland Pascal и Delphi, Java, JavaScript
Базы данных и доступ к данным: SQL, NoSQL, WebAPI (REST / SOAP), RPC
Технологии разработки: Aspect-Oriented software development, Model-View-Controller software development, SOA, mSOA, Client-server, Web-сервер, Message-oriented middleware, Event-driven-middleware
Я следую рекомендациям, подходам и практикам, изложенным в:
Руководство Microsoft по проектированию архитектуры приложений
Приёмы объектно-ориентированного проектирования. Паттерны проектирования. (GoF)
Предметно-ориентированное проектирование (DDD). Структуризация сложных программных систем. (E. Evans)
Шаблоны интеграции корпоративных приложений (G. Hohpe, B. Wolf)
Путь аналитика. Практическое руководство IT-специалиста (А. Перева, В. Иванова)
Путь IT-менеджера. Управление проектной средой и IT-проектами (А. Перева, В. Иванова)
Разработка требований к программному обеспечению (Д. Битти; К. Вигерс)
и многое другое, о чём буду стараться держать вас, читателей, в курсе
Основные виды работ, которыми мне приходилось заниматься в разное время и в разных компаниях
Концептуальное проектирование
Проведение интервью «верхнего уровня» (высшее руководств, руководители подразделений, внешние партнеры), сбор и структурирование информации по видению и требованиям к решению различных заинтересованных сторон
Создание моделей концептуальной архитектуры решения
Презентация концепции архитектуры, сбор замечаний и доработка моделей (несколько итераций в процессе согласования)
Оценка сроков, стоимости и рисков работ по созданию системы, подготовка плана работ (этапы, вехи)
Подготовка итогового комплекта документов с описанием концепции IT-решения
Разработка технического задания (ТЗ) на создание информационной системы
Составление и согласование технического задания
Обследование, анализ и проектирование процессов информационной системы и др.
Формулирование требований к системе, наложенных на перспективные бизнес-процессы, в которых будет использована создаваемая система
Создание и защита архитектуры (подсистемы, модули, взаимосвязь между ними, а также с существующими информационными системами)
Оформление технического задания в соответствии с ГОСТ
Разработка технического проекта (ТП) информационной системы, функциональных спецификаций
Разработка и согласование технического проекта
Анализ технических заданий (частных технических заданий) на создание системы / подсистем и другой имеющейся документации
Создание «логического дизайна» системы в требуемом формате, например, в виде набора UML-диаграмм и пояснений к ним
Оформление технического проекта в соответствии с согласованными структурой и стандартом
Результаты... зависят от поставленных целей и задач. Обычно это:
Модели и описания архитектуры
Технические задание и документация ИТ проекта
Функциональные, ролевые, статические и динамические модели
Описания сценариев использования
Логические модели данных
Модели, описывающие основные алгоритмы
Технические проекты (проектные и/или архитектурные решения)
Функциональные спецификации
...
Наука не занимается мнениями, наука занимается сокращением количества интерпретаций вокруг определённого факта.
Потому что, чтобы иметь мнение, надо иметь знание.