- •Сформулируйте и поясните закон Брукса
- •Поясните, наличия, каких умений Закон Дырявых Абстракций требует от программиста.
- •Расскажите, что означает “вхождение в поток”.
- •Почему выдающихся программистов эффективнее “вербовать” в начале или середине обучения в университете, а не в конце?
- •Чем работа над одной задачей двух программистов в “хирургической бригаде” отличается от работы двух программистов в “классической” технологии?
- •Почему личные кабинеты могли бы увеличить эффективность работы программистов?
- •Программист осуществляет свои построения на основе чистого мышления. Какое отношение это имеет к оценке сроков задач?
- •Почему средняя производительность программистов резко падает в крупных проектах по сравнению с малыми?
- •Что такое “концептуальная целостность”? Опишите это своими словами.
- •Сильно ли различается производительность программистов? Приведите пример(ы).
- •Что отличает программу от программного продукта? Программу от программной системы?
- •Приведите примеры линейно разделимой и линейно неразделимой задач.
- •Как обмен информаций и получение первоначального опыта новыми сотрудниками влияет на время, затрачиваемое на разработку?
- •Стоит ли давать практикантам серьезные задачи?
- •Что такое архитектура, и чем она отличается от разработки?
- •Сформулируйте возможную проблему “подавления творческой активности разработчиков архитекторами”. Каково ваше отношение к ней?
- •Msf и другие методологии говорят о “вехах”. События с какой отличительной чертой должны приниматься в качестве “вех”?
- •Две отличительные черты разработки программного обеспечения по Бруксу - Согласованность и Изменяемость. Каким образом они усложняют разработку программного обеспечения?
- •Чем программный продукт сложнее, например, автомобиля?
- •В чем суть итеративной (пошаговой) разработки?
- •В чем психологическое преимущество итеративной разработки?
- •Почему принцип “планируйте на выброс” был признан устаревшим в 80-е?
- •Назовите несколько из Top-10 рисков it от Барри Боэма.
- •Чем спиральная модель отличается от итеративной разработки?
- •Программное обеспечение тиражируется практически бесплатно. Дает ли это дополнительные основания привлекать лучших спецов к его написанию?
- •Чем плохи генераторы кода?
- •Где искать выдающихся разработчиков?
- •Приведите пример вопроса, который не следует задавать кандидатам на собеседовании.
Назовите несколько из Top-10 рисков it от Барри Боэма.
Боэм формулирует “top-10” наиболее распространенных (по приоритетам) рисков:
1. Дефицит специалистов.
2. Нереалистичные сроки и бюджет.
3. Реализация несоответствующей функциональности.
4. Разработка неправильного пользовательского интерфейса.
5. “Золотая сервировка”, перфекционизм, ненужная оптимизация и оттачивание деталей.
6. Непрекращающийся поток изменений.
7. Нехватка информации о внешних компонентах, определяющих окружение системы или вовлеченных в интеграцию.
8. Недостатки в работах, выполняемых внешними (по отношению к проекту) ресурсами.
9. Недостаточная производительность получаемой системы.
10. “Разрыв” в квалификации специалистов разных областей знаний.
Большая часть этих рисков связана с организационными и процессными аспектами взаимодействия специалистов в проектной команде.
Чем спиральная модель отличается от итеративной разработки?
Спиральная модель, предложенная Барри Боэмом в 1988 году, стала существенным прорывом в понимании природы разработки ПО. Она представляет собой процесс разработки программного обеспечения, сочетающий в себе как проектирование, так и постадийное проектирование. Отличительной особенностью этой модели является специальное внимание рискам, влияющим на организацию жизненного цикла. Боэм формулирует десять наиболее распространённых (по приоритетам) рисков:
Дефицит специалистов.
Нереалистичные сроки и бюджет.
Реализация несоответствующей функциональности.
Разработка неправильного пользовательского интерфейса.
«Золотая сервировка», перфекционизм, ненужная оптимизация и оттачивание деталей.
Непрекращающийся поток изменений.
Нехватка информации о внешних компонентах, определяющих окружение системы или вовлечённых в интеграцию.
Недостатки в работах, выполняемых внешними (по отношению к проекту) ресурсами.
Недостаточная производительность получаемой системы.
«Разрыв» в квалификации специалистов разных областей знаний.
Большая часть этих рисков связана с организационными и процессными аспектами взаимодействия специалистов в проектной команде.
Каждый виток спирали соответствует созданию фрагмента или версии программного обеспечения, на нем уточняются цели и характеристики проекта, определяется его качество и планируются работы следующего витка спирали. Таким образом углубляются и последовательно конкретизируются детали проекта и в результате выбирается обоснованный вариант, который доводится до реализации. Каждый виток разбит на 4 сектора:
оценка и разрешение рисков,
определение целей,
разработка и тестирование,
планирование.
На каждом витке спирали могут применяться разные модели процесса разработки ПО. В конечном итоге на выходе получается готовый продукт. Разработка итерациями отражает объективно существующий спиральный цикл создания системы. Неполное завершение работ на каждом этапе позволяет переходить на следующий этап, не дожидаясь полного завершения работы на текущем. При итеративном способе разработки недостающую работу можно будет выполнить на следующей итерации. Главная задача — как можно быстрее показать пользователям системы работоспособный продукт, тем самым активизируя процесс уточнения и дополнения требований. Основная проблема спирального цикла — определение момента перехода на следующий этап. Для ее решения необходимо ввести временные ограничения на каждый из этапов жизненного цикла. Переход осуществляется в соответствии с планом, даже если не вся запланированная работа закончена. План составляется на основе статистических данных, полученных в предыдущих проектах, и личного опыта разработчиков.
Спиральная модель ориентирована на большие, дорогостоящие и сложные проекты.