Технологии программирования
Что? Как? Когда? Зачем? Для кого? Постановка проблемы
Из чего состоит разработка Requirements Design Implementation Verification Maintenance Inception, Elaboration, Construction, Transition
Waterfall
Iterative: prototyping Throw-away Evolutionary Horizontal Vertical
Agile manifesto (суть) Личности и их взаимодействия важнее, чем процессы и инструменты; Работающее программное обеспечение важнее, чем полная документация; Сотрудничество с заказчиком важнее, чем контрактные обязательства; Реакция на изменения важнее, чем следование плану.
Agile: eXtreme Programming (XP) Pair programming Test-driven development Whole team Collective code ownership Planning game, small releases 40-часовая рабочая неделя Как правило, все в одном помещении
Design & Implementation top-down bottom-up Coupling cohesion Design by contract Refactoring – reengineering – optimization
Verification Benchmarks Unit test – integration – system Regression Coverage, build, smoke Stress
Ideology Worse is better KISS You Ain't Gonna Need It The Mythical Man-Month