Начиная новый проект - с чего начать?

Я собираюсь начать собственный проект, который будет ASP.NET MVC + Fluent NHibernate. Я хочу использовать тестовый подход как можно больше. Итак, с чего именно начать? Схема базы данных? Доменная модель? Отображение классов модели домена в базу данных?

4 ответа

Решение

Если у вас мало опыта в написании тестов, проще всего начать с модели предметной области (или более высокого уровня чуть ниже пользовательского интерфейса). Когда вы управляете проектированием модели предметной области с помощью TDD, вы будете знать, какой должна быть схема базы данных. Возможно, было бы хорошо отложить введение базы данных в систему, потому что работа с миграцией схемы базы данных добавит некоторые издержки к разработке. И это также приведет к лучшему дизайну, потому что тогда модель предметной области будет лучше отделена от уровня базы данных.

Если вы разбираетесь в написании тестов и TDD, может быть полезно начать с сквозного теста (в этом случае они будут написаны для веб-интерфейса) и создать тонкий фрагмент функциональности, который затрагивает все архитектурные части. системы (как рекомендуется в ГСНО). Другими словами, создайте ходячий скелет. Преимущества этого подхода состоят в том, что (1) вы сможете решать и решать проблемы интеграции с самого начала, (2) когда сквозные тесты используются для управления проектом, это может помочь вам избежать реализации лишние детали и (3) трудности написания сквозных тестов требуют от вас улучшения архитектуры и добавления контрольных хуков, которые также могут быть полезны при мониторинге системы в рабочем состоянии. (Сосредоточенное модульное тестирование все еще будет необходимо, потому что они обеспечивают проектное давление на уровне класса, плюс они работают быстрее и, следовательно, обеспечивают более быструю обратную связь.)

Я написал больше об этом последнем подходе в Проекте для Интегрируемости.

Сбор требований.

Начните с макета / прототипа (например, Balsamiq Mocks) приложения, затем запишите взгляды, насмешливые контроллеры по мере продвижения, затем напишите логику контроллера, по пути насмехаясь над DAO/Repositorys. К тому времени, когда вы начнете писать свои DAO/Repositories, у вас будет хорошее представление о ваших необходимых объектах домена. Выбей их и используй Fluent Nhibernate для создания своей базы данных.

По крайней мере, так я пытаюсь делать.

Я рекомендую вам S # arp Architecture Project, который использует лучшие практики, объединяющие:

  • NHibernate
  • FluentNhibernate
  • TDD / DDD с подходом для первых моделей с базой данных Sqlite для модульного тестирования
  • Дразнящий
  • Шаблон репозитория

Вы также можете установить S#arp arch. шаблон для Visual Studio IDE.

Другие вопросы по тегам