Нереалистично тестировать ПО в конце цикла разработки.
agilealliance.org.
agilemanifesto.org/principles.html.
Сейчас используются Scrum (наиболее широко применяется в Microsoft), XP, TDD.
blogs.msdn.com/e7.
Шаги разработки:
– сбор сведений от заказчика, совместное обсуждение требований, детальное тестирование, описание параметров компонентов и общей архитектуры системы;
– процедуры контроля качества кода – стандарты, совместная разработка, оптимизация, модульное тестирование;
– обширное тестирование системы и сборки.
Методы контроля качества применять как можно раньше.
Чем больше кода написано, тем сложнее его тестировать.
Стремиться и сосредоточиться на качестве, надежности, безопасности.
Применять итеративную разработку с итерациями не более 6—8 недель, полностью завершать один компонент перед началом работы, разделять работы на несколько автономных групп, достаточно часто обмениваться информацией о состоянии проекта.
Использовать типичные методологии развертывания, оборудования и инструментов, планировать процессы, стремясь к предсказуемости и повторяемости процедур.
Для ускорения процессов создания и развертывания, упрощения обмена информацией использовать в командах общие инструменты и процедуры для управления исходным кодом, сборки, ведения баз данных, общие подходы к программированию и единую терминологию.
Отказаться от модели водопада.
Создавать проверяемые модули.
Ежедневно запускать сборку и запускать автоматические BVT-тесты.
Использовать продукты компании в ее работе, начиная с самых ранних стадий их разработки.
Идентифицировать участников приложения (типы) и способы их взаимодействия друг с другом (прототипирование; концепции, взаимоотношения и взаимодействия проверяются на полноту и корректность; здесь же анализируются риски дизайн).
В приложениях на управляемом коде в качестве языка метапрограммирования, позволяющего изменять поведение приложения во время выполнения, применять XML.
Производительность с самого начала часть любого проекта.
Факторы масштабирования – часть дизайна приложения.
Безопасность закладывается в дизайне приложения.
Тестеры гарантируют полное покрытие кода тестами.
Учиться эффективно управлять памятью.
Использовать безопасное программирование.
Сердцем программирования являются этапы анализа требований и проектирования.
Цикл разработки ПО:
– анализ требований;
– проектирование;
– спецификации;
– программирование;
– тестирование;
– развертывание;
– обслуживание.
Написанию кода обязательно должен предшествовать этап проектирования.
Дизайн приложения в идеале не зависит от особенностей реализации.
В ООП 40—50% времени разработчик тратит на проектирование кода.
Число написанных строк кода – неверный показатель труда.
Секрет успеха заключается в неизменности цели.
На устранение проблемы на этапе тестирования требуется в 4 раза больше времени, чем на этапе проектирования.
C# – прямой потомок C++.
Существительные из предметной области могут стать объектами, глаголы и глагольные группы – поведением.
Проектирование должно управлять реализацией, но не наоборот.
Из списка объектов предметной области удаляются не взаимодействующие с другими.
Использовать UML для моделирования в проектировании.
Типы UML-схем см. в книге.
Изоляция классов друг от друга – один из принципов ООП.
В конструкторе классов VS изменения в схеме классов немедленно отражаются в коде и наоборот.