Экстремальное программирование и модели зрелости процессов разработки ПО (CMM).
В переводе статьи известного автора и одного из идеологов экстремального программирования описываются связи XP с моделью зрелости процессов разработки программного обеспечения CMM. Автор утверждает, что применение экстремального программирования позволяет говорить о возможности получения аккредитации любого уровня CMM.
Читать всё...
Учимся XP на лету
Начинаем экстремально мыслить
Делай только то, что действительно необходимо.
Принципы экстремального программирования гласят, что не нужно писать код, который
в данный момент не требуется. Это и логично: зачем писать то, что сегодня точно
ненужно, а завтра, несмотря на наши надежды, может совсем не понадобиться. Высоко
рискованное мероприятие. Единственным оправданием такому поведению является
боязнь того, что в будущем изменения и доработки будут слишком дороги. К сожалению,
невозможно точно предугадать, что потребуется в будущем. Перебирать все возможные
варианты заранее вряд ли будет дешевле необходимых и своевременных изменений.
Например, есть задача реализовать элемент управления кнопку с рисунком. "Крутой"
программист сделал бы её следующим образом. Иерархия шести классов, каждый из
которых выполняет узкоспециализированную функцию: один отвечает за позиционирование
кнопки, второй за отрисовку картинки, третий за преобразование с различных графических
форматов, будь то векторный или растровый, требующий покупки лицензий и бесплатный,
четвёртый за запуск преобразования графики в отдельном потоке, пятый за реакцию
на действия пользователя, а шестой за управление всем этим. Программист же,
придерживающийся принципов экстремального программирования, поступил бы иначе.
Он бы ограничился лишь требуемым набором функциональности и начал бы с самого
главного. Позиционированием кнопки, рисованием картинки, загружаемой из файла
или ресурса элементарного формата, и реакцией на действия пользователя. И, конечно
же, тесты модулей до написания конкретного участка кода.
Упражнение.
Создать компонент текстового поля, который будет применяться для редактирования небольших исходных текстов программ. Запишите составляющие разработки этого компонента в наиболее изощрённом варианте, а затем постепенно сокращайте их. Удаление каждой составляющей должно быть подкреплено проверкой работоспособности условия. Остановиться необходимо на том моменте, когда задание перестанет выполняться в требуемом объёме. Сверьте разницу трудоёмкости и стоимости полученных вариантов. Для наглядности, можно даже попытаться нарисовать график изменения стоимости от упрощения.
Адресуйте свои решения нам, lessons@xprogramming.com.ua.
Будем рады увидеть не только их, но и ваши отзывы и пожелания.