Разработчик, аналитик, заказчик — как найти общий язык?ngrebnev
В проектах по разработке программного обеспечения участвуют множество различных специалистов, у которых разные роли, разные специализации, своя терминология, свой жаргон. И часто в проекте люди не понимают друг друга. Заказчики не понимают, почему те или иные доработки стоят так дорого. Аналитики вынуждены выступать переводчиками между пользователями и разработчиками. А разработчики работают сразу с двумя моделями системы — с моделью представленной аналитиками и моделью реализованной в коде. Это приводит к тому, что основные усилия расходуются не на разработку полезного функционала, а на попытки удержать обе модели в голове и сопоставить их друг с другом.
Методология Domain Driven Design (проектирование на основе предметной области — далее DDD) для решения этой проблемы предлагает в качестве единой опорной точки использовать модель предметной области. Такая модель хорошо понятна заказчикам, служит отличным инструментом для аналитиков. Но важной особенностью такой модели является то, что она может быть напрямую реализована в коде, а значит, пригодна для использования разработчиками.
При принятии решения всегда встают вопросы:
– Что такое Domain Driven Design?
– На каких проектах можно применить DDD? Является ли мой проект таким?
– Какова цена и какие риски?
– Какие типичные ошибки ждут на пути?
Cтатический анализ кода (на примере DDD-фреймворка)ngrebnev
Они расскажут как при разработке бизнес-приложений в модели Domain-driven design они предупреждают ошибки программиста с помощью статического анализа кода и доменной модели. А именно: возможности ORM-платформы по статическому анализу, преимущества широкого использования Linq, декларативных ограничений, модель состояний и формальной верификации элементов доменной модели.
Они разберут, в чем заключается удобство разработчика по использованию статического анализа и простота применения механизмов для задания формальных ограничений на модель предметной области. Интеграция средств статического анализа ORM в среду разработки, невозможность игнорирования ошибок, гарантия прохождения всех статических проверок до первого запуска программы. Ограниченные возможности запросов Linq к модели предметной области по сравнению с Linq to Objects и пути их преодоления.
Они расскажут, как обстоят дела с аналогичными механизмами в других ORM-системах и почему они решили реализовать собственную платформу для поддержки разработки в рамках DDD.
Разработчик, аналитик, заказчик — как найти общий язык?ngrebnev
В проектах по разработке программного обеспечения участвуют множество различных специалистов, у которых разные роли, разные специализации, своя терминология, свой жаргон. И часто в проекте люди не понимают друг друга. Заказчики не понимают, почему те или иные доработки стоят так дорого. Аналитики вынуждены выступать переводчиками между пользователями и разработчиками. А разработчики работают сразу с двумя моделями системы — с моделью представленной аналитиками и моделью реализованной в коде. Это приводит к тому, что основные усилия расходуются не на разработку полезного функционала, а на попытки удержать обе модели в голове и сопоставить их друг с другом.
Методология Domain Driven Design (проектирование на основе предметной области — далее DDD) для решения этой проблемы предлагает в качестве единой опорной точки использовать модель предметной области. Такая модель хорошо понятна заказчикам, служит отличным инструментом для аналитиков. Но важной особенностью такой модели является то, что она может быть напрямую реализована в коде, а значит, пригодна для использования разработчиками.
При принятии решения всегда встают вопросы:
– Что такое Domain Driven Design?
– На каких проектах можно применить DDD? Является ли мой проект таким?
– Какова цена и какие риски?
– Какие типичные ошибки ждут на пути?
Cтатический анализ кода (на примере DDD-фреймворка)ngrebnev
Они расскажут как при разработке бизнес-приложений в модели Domain-driven design они предупреждают ошибки программиста с помощью статического анализа кода и доменной модели. А именно: возможности ORM-платформы по статическому анализу, преимущества широкого использования Linq, декларативных ограничений, модель состояний и формальной верификации элементов доменной модели.
Они разберут, в чем заключается удобство разработчика по использованию статического анализа и простота применения механизмов для задания формальных ограничений на модель предметной области. Интеграция средств статического анализа ORM в среду разработки, невозможность игнорирования ошибок, гарантия прохождения всех статических проверок до первого запуска программы. Ограниченные возможности запросов Linq к модели предметной области по сравнению с Linq to Objects и пути их преодоления.
Они расскажут, как обстоят дела с аналогичными механизмами в других ORM-системах и почему они решили реализовать собственную платформу для поддержки разработки в рамках DDD.
Domain Driven Design в условиях разработки распределенных приложенийngrebnev
Распределенная архитектура приложения сейчас является наиболее актуальным выбором при проектировании корпоративных информационных систем. Такие архитектурные шаблоны как сервисно-ориентированная архитектура (SOA) и трехзвенная архитектура (3-tier architecture) являются de-facto стандартами в разработке корпоративных приложений.
Зачастую, главной проблемой в разработки является борьба со сложностью решаемой задачи, при этом для приложений уровня предприятия сложность с каждым годом стремительно увеличивается. Одним из наиболее эффективных средств борьбы с растущей сложностью является методология проектирования на основе модели предметной области (Domain Driven Design, DDD).
Каждый, кто пытался применить DDD в приложениях, имеющих распределенную архитектуру, будь то сервисы или клиент-сервер, знает с каким количеством трудностей приходится сталкиваться. В докладе будут рассмотрена целесообразность применения DDD в приложениях с сервисно-ориентированной архитектурой и в многозвенных приложениях, будут освещены трудности, возникающие при использовании DDD, и обозначены пути их преодоления. Будут даны ответы на вопросы:
- Стоит ли использовать DDD при разработке распределенных приложений?
- Как использовать DDD при использовании различных архитектурных стилей?
- Какую роль играют библиотеки, инструменты и фреймворки в разработке на основе модели предметной области?
- Какова эффективность использования DDD в agile-процессе разработки распределенных приложений?
Test Driven Development как инструмент уменьшения кадровых рисковngrebnev
Как мы все знаем, одним из ключевых факторов, определяющих успех проекта по разработке программного обеспечения, является команда реализующая проект. В случае если команда фиксируется на весь срок проекта, никто не болеет, все работают в одно и то же время, то проблем никаких не возникает. Но в реальности, команда меняется походу проекту, в проект приходят новые люди, ключевые участники проекта уходят в самый неожиданный момент, нередки случаи, когда на время надо срочно заменить выбывшего члена команды.
Ввод нового человека в проект — это всегда риски, риски, того, что у человека окажется недостаточно квалификации, риск внесения ошибок вследствие плохого знакомства с проектом. Неожиданное отсутствие члена команды проекта может, как минимум, привести к задержке сроков, а в случае, если другие не знакомы с его фронтом работ, то возможен и крах проекта. Незаменимость членов команды, введение нового человека в проект, завышенные ожидания от разработчиков - острейшие проблемы во многих проектах по разработке ПО, а особенно сильно эти проблемы проявляются на крупных проектах, где фиксировать состав команды и избежать всех неожиданностей физически невозможно.
Существенно снизить все выше перечисленные риски возможно при правильном использовании практики Test Driven Development (TDD). TDD — это техника разработки программного обеспечения, которая предполагает активное использование модульных тестов (unit-тестов), что делает их центральной частью дизайна системы. Разработка посредством тестирования при грамотном проектировании обеспечивает не только высокое качество ПО, но и стимулирует к созданию слабосвязанной архитектуры приложения. Более того, хорошо изолированными частями системы являются классы, т. е. фактически минимально возможный элемент системы. Слабая связность системы и хорошая изолированность ее частей, позволяют разработчикам быть уверенными, что их исправления или изменения будут локальными и не приведут к падению всей системы.
Хорошее покрытие тестами, а также архитектура приложения, к которой провоцирует использование TDD, обеспечивает не только качество программного обеспечения и хорошую самодокументируемость кода, но и позволяет быть у
Уменьшение влияния человеческого фактора при разработке бизнес приложенийngrebnev
В этом докладе мы постараемся рассказать о принципах разработки инструментов для написания бизнес-логики, позволяющих сократить количество ошибок. Речь пойдет о нескольких практиках, принятых в отделе технологического развития нашей компании. Принципы будут проиллюстрированы на примере инструментария компании для платформы Microsoft .NET.
Максимум статических проверок. Под статическими проверками мы понимаем проверки времени компиляции. Этот принцип является важным, но, к сожалению, зачастую недооценивается разработчиками инструментария разработки. Проверки времени компиляции могут отлавливать большой спектр ошибок. Есть и другая особенность – это удобство. Ошибки времени исполнения сложнее воспринимаются, труднее найти причину ошибки.
Разнообразие и декларативность проверок. Проверки общего назначения удобно задавать в декларативном виде. При этом сами проверки должен осуществлять фреймворк. За счет уменьшения дублирования и декларативности снижается вероятность ошибок. Проверки должны быть, как техническими, так и уровня доменной модели. Мы будем говорить о проверках уровня доменной модели.
Возможность анализа декларативных проверок. Любые ограничения порождают некоторую модель. Эту модель (проверки) можно формально верифицировать. Вообще, проблема доказательства большинства свойств программы невозможна. Этот вопрос выходит далеко за рамки нашего доклада. Но существует возможность верификации более слабых (менее выразительных моделей).
Во второй части мы обсудим функционал, который мы называем "состояния". Эти "состояния" образуют что-то вроде автомата, или структуру Крипке. Так вот, существуют алгоритмы проверки выполнимости темпоральных логик на таких структурах.
Пустая болтовня или эффективное совещание? – Все в руках scrum-мастераngrebnev
Не секрет, что гибкие методологии разработки предполагают организацию и проведение достаточного большого числа совещаний. Это могут быть как мероприятия предписанные процессом (например, ретроспектива, daily scrum meeting или планирование), так и обсуждение технических аспектов или просто спонтанно возникшие митинги.
Многие команды сталкиваются с проблемами продуктивности таких совещаний. После прохождения эффекта новизны ретроспективы становятся обузой, DSM длится долго и на нем всем скучно. Ну, а обсуждение технических вопросов превращается в священные войны, где никто ни с кем не согласен. Такая обстановка не способствует повышению мотивации и развитию чувства локтя у команды, к тому же в пустую расходуется достаточно много времени.
Но, эффективность собраний можно поднять на существенно более высокий уровень. Немалая роль в этом процессе ложится на scrum-мастера, в его силах так организовать и провести ретроспективу, DSM или обсуждение выбора технологий, чтобы каждый принял активное участие, чтобы все мнения были выслушаны. А в результате были приняты нужные решения и никто бы не жалел о потраченном времени.
Прослушав доклад, Вы узнаете:
- Как эффективно подготовить и провести ретроспективу, планирование или обсуждение нового процесса разработки.
- Какой выбрать формат мероприятия – игры или прослушивание подготовленных выступлений, свободная тема или жесткий регламент и т. д.
- Какие совещания стоит проводить, а про какие нет.
- Как удержать внимание группы и не дать никому заскучать.
- Как выработать решение вопроса в процессе обсуждения.
Психология управления: создание самоорганизующихся процессовngrebnev
Любая сложная деятельность состоит из множества различных аспектов. Каждый из этих аспектов является важным, и любой руководитель стремится их все контролировать. Но возможности человека ограничены и, если держать одновременно слишком много фокусов, то неизбежно будет упущено немало важных вещей или изменений и, как следствие, ухудшится качество управления.
Так и в разработке программного обеспечения для достижения успеха необходимо следить за аналитической работой, определением приоритетов, правильной архитектурой, качеством кода, тестированием, документацией и многими другими вещами. И, наверное, каждый, кто пробовал управлять разработкой ПО знает, что уследить за всем этим одновременно невозможно. Начав акцентировать внимание, например, на документации можно получить снижение скорости разработки, а вновь занявшись разработкой обнаружить отсутствие документации. И, как правило, нет никакой возможности нанять для контроля различных аспектов специальных людей. А попытки регламентировать каждый шаг и формализовать детальные требования к процессам и артефактам серьезно демотивируют участников проекта и, в лучшем случае, просто не дают желаемого результата.
Но различные аспекты деятельности связаны между собой, а также зависят от обстоятельств, внешних по отношению к ним. Например, необходимость согласования архитектуры несколькими разработчиками неизбежно приведет к появлению хорошей документации по проекту. Другим примером является SCRUM, когда несмотря на отсутствие прямых указаний об улучшении качества кода, в командах нередко появляются такие процедуры как code review, непрерывная интеграция и мо
Domain Driven Design - как, почему и зачем?ngrebnev
Одной из самых серьезных проблем в разработке программного обеспечения является борьба со сложностью решаемой задачи. Более того сложность задач решаемых разработчиками с каждым годом стремительно растет. Для решения этой проблемы хорошо себя зарекомендовал на практике набор подходов и методов, объединенных общим названием Domain Driven Design (DDD).
DDD позволяет существенно увеличить скорость разработки, снизить стоимость сопровождения и повысить качестве программного обеспечения. Но, несмотря на это, внедрение DDD на практике сталкивается с множеством трудностей и препятствий, что нередко приводит к полному отказу от применения данного похода в проекте.
Доклад посвящен описанию того как Domain Driven Design может быть использован в вашем проекте, зачем это вам нужно и почему это работает. Будут освещены преимущества и недостатки DDD, трудности с которыми приходится сталкиваться при его использовании и какой результат принесет его применение.
Domain Driven Design в условиях разработки распределенных приложенийngrebnev
Распределенная архитектура приложения сейчас является наиболее актуальным выбором при проектировании корпоративных информационных систем. Такие архитектурные шаблоны как сервисно-ориентированная архитектура (SOA) и трехзвенная архитектура (3-tier architecture) являются de-facto стандартами в разработке корпоративных приложений.
Зачастую, главной проблемой в разработки является борьба со сложностью решаемой задачи, при этом для приложений уровня предприятия сложность с каждым годом стремительно увеличивается. Одним из наиболее эффективных средств борьбы с растущей сложностью является методология проектирования на основе модели предметной области (Domain Driven Design, DDD).
Каждый, кто пытался применить DDD в приложениях, имеющих распределенную архитектуру, будь то сервисы или клиент-сервер, знает с каким количеством трудностей приходится сталкиваться. В докладе будут рассмотрена целесообразность применения DDD в приложениях с сервисно-ориентированной архитектурой и в многозвенных приложениях, будут освещены трудности, возникающие при использовании DDD, и обозначены пути их преодоления. Будут даны ответы на вопросы:
- Стоит ли использовать DDD при разработке распределенных приложений?
- Как использовать DDD при использовании различных архитектурных стилей?
- Какую роль играют библиотеки, инструменты и фреймворки в разработке на основе модели предметной области?
- Какова эффективность использования DDD в agile-процессе разработки распределенных приложений?
Test Driven Development как инструмент уменьшения кадровых рисковngrebnev
Как мы все знаем, одним из ключевых факторов, определяющих успех проекта по разработке программного обеспечения, является команда реализующая проект. В случае если команда фиксируется на весь срок проекта, никто не болеет, все работают в одно и то же время, то проблем никаких не возникает. Но в реальности, команда меняется походу проекту, в проект приходят новые люди, ключевые участники проекта уходят в самый неожиданный момент, нередки случаи, когда на время надо срочно заменить выбывшего члена команды.
Ввод нового человека в проект — это всегда риски, риски, того, что у человека окажется недостаточно квалификации, риск внесения ошибок вследствие плохого знакомства с проектом. Неожиданное отсутствие члена команды проекта может, как минимум, привести к задержке сроков, а в случае, если другие не знакомы с его фронтом работ, то возможен и крах проекта. Незаменимость членов команды, введение нового человека в проект, завышенные ожидания от разработчиков - острейшие проблемы во многих проектах по разработке ПО, а особенно сильно эти проблемы проявляются на крупных проектах, где фиксировать состав команды и избежать всех неожиданностей физически невозможно.
Существенно снизить все выше перечисленные риски возможно при правильном использовании практики Test Driven Development (TDD). TDD — это техника разработки программного обеспечения, которая предполагает активное использование модульных тестов (unit-тестов), что делает их центральной частью дизайна системы. Разработка посредством тестирования при грамотном проектировании обеспечивает не только высокое качество ПО, но и стимулирует к созданию слабосвязанной архитектуры приложения. Более того, хорошо изолированными частями системы являются классы, т. е. фактически минимально возможный элемент системы. Слабая связность системы и хорошая изолированность ее частей, позволяют разработчикам быть уверенными, что их исправления или изменения будут локальными и не приведут к падению всей системы.
Хорошее покрытие тестами, а также архитектура приложения, к которой провоцирует использование TDD, обеспечивает не только качество программного обеспечения и хорошую самодокументируемость кода, но и позволяет быть у
Уменьшение влияния человеческого фактора при разработке бизнес приложенийngrebnev
В этом докладе мы постараемся рассказать о принципах разработки инструментов для написания бизнес-логики, позволяющих сократить количество ошибок. Речь пойдет о нескольких практиках, принятых в отделе технологического развития нашей компании. Принципы будут проиллюстрированы на примере инструментария компании для платформы Microsoft .NET.
Максимум статических проверок. Под статическими проверками мы понимаем проверки времени компиляции. Этот принцип является важным, но, к сожалению, зачастую недооценивается разработчиками инструментария разработки. Проверки времени компиляции могут отлавливать большой спектр ошибок. Есть и другая особенность – это удобство. Ошибки времени исполнения сложнее воспринимаются, труднее найти причину ошибки.
Разнообразие и декларативность проверок. Проверки общего назначения удобно задавать в декларативном виде. При этом сами проверки должен осуществлять фреймворк. За счет уменьшения дублирования и декларативности снижается вероятность ошибок. Проверки должны быть, как техническими, так и уровня доменной модели. Мы будем говорить о проверках уровня доменной модели.
Возможность анализа декларативных проверок. Любые ограничения порождают некоторую модель. Эту модель (проверки) можно формально верифицировать. Вообще, проблема доказательства большинства свойств программы невозможна. Этот вопрос выходит далеко за рамки нашего доклада. Но существует возможность верификации более слабых (менее выразительных моделей).
Во второй части мы обсудим функционал, который мы называем "состояния". Эти "состояния" образуют что-то вроде автомата, или структуру Крипке. Так вот, существуют алгоритмы проверки выполнимости темпоральных логик на таких структурах.
Пустая болтовня или эффективное совещание? – Все в руках scrum-мастераngrebnev
Не секрет, что гибкие методологии разработки предполагают организацию и проведение достаточного большого числа совещаний. Это могут быть как мероприятия предписанные процессом (например, ретроспектива, daily scrum meeting или планирование), так и обсуждение технических аспектов или просто спонтанно возникшие митинги.
Многие команды сталкиваются с проблемами продуктивности таких совещаний. После прохождения эффекта новизны ретроспективы становятся обузой, DSM длится долго и на нем всем скучно. Ну, а обсуждение технических вопросов превращается в священные войны, где никто ни с кем не согласен. Такая обстановка не способствует повышению мотивации и развитию чувства локтя у команды, к тому же в пустую расходуется достаточно много времени.
Но, эффективность собраний можно поднять на существенно более высокий уровень. Немалая роль в этом процессе ложится на scrum-мастера, в его силах так организовать и провести ретроспективу, DSM или обсуждение выбора технологий, чтобы каждый принял активное участие, чтобы все мнения были выслушаны. А в результате были приняты нужные решения и никто бы не жалел о потраченном времени.
Прослушав доклад, Вы узнаете:
- Как эффективно подготовить и провести ретроспективу, планирование или обсуждение нового процесса разработки.
- Какой выбрать формат мероприятия – игры или прослушивание подготовленных выступлений, свободная тема или жесткий регламент и т. д.
- Какие совещания стоит проводить, а про какие нет.
- Как удержать внимание группы и не дать никому заскучать.
- Как выработать решение вопроса в процессе обсуждения.
Психология управления: создание самоорганизующихся процессовngrebnev
Любая сложная деятельность состоит из множества различных аспектов. Каждый из этих аспектов является важным, и любой руководитель стремится их все контролировать. Но возможности человека ограничены и, если держать одновременно слишком много фокусов, то неизбежно будет упущено немало важных вещей или изменений и, как следствие, ухудшится качество управления.
Так и в разработке программного обеспечения для достижения успеха необходимо следить за аналитической работой, определением приоритетов, правильной архитектурой, качеством кода, тестированием, документацией и многими другими вещами. И, наверное, каждый, кто пробовал управлять разработкой ПО знает, что уследить за всем этим одновременно невозможно. Начав акцентировать внимание, например, на документации можно получить снижение скорости разработки, а вновь занявшись разработкой обнаружить отсутствие документации. И, как правило, нет никакой возможности нанять для контроля различных аспектов специальных людей. А попытки регламентировать каждый шаг и формализовать детальные требования к процессам и артефактам серьезно демотивируют участников проекта и, в лучшем случае, просто не дают желаемого результата.
Но различные аспекты деятельности связаны между собой, а также зависят от обстоятельств, внешних по отношению к ним. Например, необходимость согласования архитектуры несколькими разработчиками неизбежно приведет к появлению хорошей документации по проекту. Другим примером является SCRUM, когда несмотря на отсутствие прямых указаний об улучшении качества кода, в командах нередко появляются такие процедуры как code review, непрерывная интеграция и мо
Domain Driven Design - как, почему и зачем?ngrebnev
Одной из самых серьезных проблем в разработке программного обеспечения является борьба со сложностью решаемой задачи. Более того сложность задач решаемых разработчиками с каждым годом стремительно растет. Для решения этой проблемы хорошо себя зарекомендовал на практике набор подходов и методов, объединенных общим названием Domain Driven Design (DDD).
DDD позволяет существенно увеличить скорость разработки, снизить стоимость сопровождения и повысить качестве программного обеспечения. Но, несмотря на это, внедрение DDD на практике сталкивается с множеством трудностей и препятствий, что нередко приводит к полному отказу от применения данного похода в проекте.
Доклад посвящен описанию того как Domain Driven Design может быть использован в вашем проекте, зачем это вам нужно и почему это работает. Будут освещены преимущества и недостатки DDD, трудности с которыми приходится сталкиваться при его использовании и какой результат принесет его применение.
1. Nihonggo Presentation(Learn to use adjectives) Members: BALBUENA, Stephanie Marie T. DELOS SANTOS, Maria Rio Joyce C. REYES, Jennifer Grace N. 3CS01
2. Stephgoes to Bohol to have a seminarして、Steph、セミナーを持ってボホールに行く Shite, Steph, seminā o mottebohōruniiku
3. Stephis doing our project in S.A.D して、StephはS.A.Dで我々のプロジェクトを行っている Shite, Stephwa S. A. D de warewareno purojekutoo okonatteiru
4. Rio took a picture in the mirrorリオは、鏡の中の写真を撮った Rio wa,-kyō no naka no shashin o totta
5. Rio is done playing Volleyballリオはバレーボールの再生が完了する Rio wabarēbōru no saiseigakanryōsuru
6. Jen is singing her favorite songjenは、彼女のお気に入りの曲を歌っている Jen wa, kanojo no okiniiri no kyoku o utatteiru
7. Jen is done answering her examジェンは彼女の試験に答えて行われる Jen wakanojo no shikennikotaeteokonawareru
8. We took a picture with sensei私たちは先生と一緒に写真を撮りました Watashi-tachiwa sensei to isshonishashin o torimashita
9. We took our group picture for our nihonggoproject私たちはほんごプロジェクトのための私達のグループ写真を撮った Watashi-tachiwahon go purojekuto no tame no watashi-tachi no gurūpushashin o totta