Где запустить с разработки первой базы данных управляемое веб-приложение (долгий вопрос)?

Я решил разработать базу данных управляемое веб-приложение, но я не уверен, где запустить. Конечная цель проекта является трехкратной:

  1. изучить новые технологии и методы,
  2. поставьте незапрашиваемую демонстрацию управлению, которое показало бы, как информация, что магазины при предприятии как офисное распространение документов через громоздкую структуру сетевой папки могут быть консолидированы и сделаны легче к доступу и поддержать и
  3. покажите моим коллегам, как Разработка через тестирование и моделирующий с помощью диаграмм классов может быть очень полезной и уменьшает будущие головные боли обслуживания.

Я думаю, что это заканчивает тем, что было основным CMS, к которому я генерировал ряд функций, посмотрите ниже.

  1. Создайте базу данных для хранения структуры сайта (организованный как дерево с 'группой проекта '-> структура проекта).
  2. Вытяните структуру сайта от базы данных и дисплея как дерево с помощью базовых технологий фронтэнда.
  3. Добавьте полномочия/инструменты администратора для изменения структуры сайта.
  4. Автоматический создают требуемые sub страницы*, когда администратор добавляет новый проект.
    4.1 Будет несколько sub страниц в соответствии с каждым проектом, и содержание для каждой sub страницы отличается.
  5. добавьте полномочия пользователя для присвоения чтения и полномочий записи к sub страницам.

То, что я хотел бы сделать, использовать Разработку через тестирование и класс, схематически изображающий как часть моего процесса для разработки этого проекта. Моя проблема; я не уверен, где запустить. Я читал на Поблочном тестировании и UML, но никогда не использовал их на практике. Кроме того, никогда работая с базами данных прежде, как я включаю эти объекты в модели и тестирую единицы?

Спасибо всем заранее за Ваши экспертные знания.

6
задан Carl Manaster 27 March 2010 в 16:00
поделиться

6 ответов

Я не знаю, с чего начать.

Мы всегда начинаем с модели данных.

никогда раньше не работал с базами данных, как мне включить эти элементы в модели и протестировать блоки?

А, вот в чем проблема.

Вы должны начать с данных, потому что все начинается с данных.

  1. Напишите варианты использования. Ваши 5 технических требований на самом деле не очень хорошие варианты использования, потому что нет Актера, который взаимодействует с системой. Вам нужно записать, что делает актер - с чем актер взаимодействует.

  2. Определите объекты, с которыми взаимодействует актер. Если сомневаетесь, запишите все существительные в своих вариантах использования.

  3. Нарисуйте изображение классов, которые будут реализовывать эти объекты.

  4. Изучите свои варианты использования, чтобы убедиться, что все, что нужно делать Актеру, основано на атрибутах определений вашего класса. Все данные, которые нужны актеру, должны находиться в этих классах, которые станут таблицами в вашей базе данных.

Теперь вам нужно заняться технической работой. Вам нужен веб-фреймворк со слоем ORM. Вы используете PHP, поэтому вам нужно найти для этого хорошую основу. Торт или Доктрина, или что-то в этом роде.

  1. Определите один класс в слое ORM. Вам не нужно быть полным или точным, вам просто нужно что-то, с чем вы можете проверить.

  2. Напишите модульные тесты для этого класса, чтобы убедиться, что он имеет правильные элементы данных. Сначала это будет относительно просто, так как ваши индивидуальные классы данных будут простыми.

После определения базового набора классов вам нужно будет посмотреть на отношения между классами. Здесь начинается настоящая работа.

  1. Посмотрите на отношения на своей фотографии. Любая линия. Выберите случайным образом.

  2. Напишите модульные тесты, чтобы убедиться, что вы можете «перемещаться» по этой строке. От одного объекта выберите связанные объекты на другом конце строки. Это не должно быть очень сложно, всего несколько строк кода.

  3. Создайте «приспособление» - тестовые данные, которые вы можете загрузить в базу данных - для представления объектов и их взаимосвязей.

  4. Запустить тест. Если он сломается, обновите определения ORM для правильной поддержки навигации.

Когда вы закончите делать все различные отношения, вы построите разумную полную модель данных в режиме тестирования.

Теперь вы можете создать презентацию PHP для объектов модели.

6
ответ дан 8 December 2019 в 12:58
поделиться

Прежде всего, основой любого веб-приложения является база данных. Я бы посоветовал начать с простого, разработать дизайн базы данных, а затем написать классы моделей и представлений для их рендеринга. Во-вторых, вы должны проектировать свою БД с учетом ваших целей (подстраницы, древовидная структура), но не бояться ошибаться. Мы могли бы подробно рассказать вам о нормализации или преимуществах использования объектно-реляционной модели, но если вы лично не видите в этом необходимости, будет сложно усвоить концепции.

TDD можно использовать с первого дня, когда вы тестируете модель и просматриваете классы БД. UML Я не уверен, что это будет полезно - если возможно, просто придерживайтесь диаграмм последовательности, классов и взаимодействия.

Конкретный ответ для использования БД в модульном тесте - вставлять фиктивные строки во время установки и удалять их на этапах разборки. Вы можете написать PHP-скрипт для «очистки» БД после тестирования.

Надеюсь, это поможет!

2
ответ дан 8 December 2019 в 12:58
поделиться

Я бы хотел использовать разработку через тестирование и построение диаграмм классов как часть процесса разработки этого проекта.

Это два разных подхода к дизайну - вам нужно выбрать один. TDD управляет дизайном на основе поведения и тестов. UML обычно используется в BDUF (Big Design Up Front) - хотя его можно использовать просто для неформального общения между разработчиками, не являясь частью «дизайна». Суть в том, что вам нужно решить, как вы хотите разрабатывать свое программное обеспечение. Для меня обычно более удобен подход TDD, но для хорошо известного домена я могу вместо этого провести сеанс BDUF (хотя я не использую UML).

Моя проблема; Я не уверен, с чего начать. Я читал о модульном тестировании и UML, но никогда не использовал их на практике.

Предполагая, что вы говорите [T | B] DD, а не «модульное тестирование» - вы начинаете с тестов, которые подтверждают поведение, необходимое для вашего приложения. Если вы пойдете по маршруту [T | B] DD, я бы, вероятно, полностью пропустил UML. В противном случае, когда вы закончите, просто запустите генератор UML, и вы получите красивые картинки. ;)

[TestFixture]
public class WhenAddingNewProject {
    [Test]
    public void SubPagesAreCreated() {
       var p = Project.Create("MyProjectGroup\\MyTestProject");

       Assert.IsGreaterThan(p.SubPages.Count, 0);
    }

    [Test]
    public void FirstSubPageIsWikiPage() {
       var p = CreateProject();
       var subPage = p.SubPages[0];

       Assert.AreEqual(subPage.Title == "MyTestProject Wiki");
       Assert.IsTypeOf<WikiSubPage>(subPage);
    }

    [Test(ExpectedException := typeof(SecurityException))]
    public void DefaultsToAdministratorPrivileges() {
       var p = CreateProject();

       var u = User.Login("testuser", "testpassword"); 
       Assert.IsNotNull(u);
       Assert.AreEqual(UserRole.User, u.Role);

       p.Delete();
       Assert.Fail();
    }

    private Project CreateProject() {
       return Project.Create("MyProjectGroup\\MyTestProject");
    }
}

Кроме того, я никогда раньше не работал с базами данных, как мне включить эти элементы в модели и тестовые модули?

Вы не делаете.По определению, если вы попадаете в базу данных - вы запускаете интеграционный тест, а не модульный тест. Для модульных тестов вы хотите абстрагироваться от базы данных и игнорировать / имитировать / заменять ее. Получив свою логику из базы данных, вы можете протестировать ее отдельно - тогда вам нужно только протестировать загрузку / сохранение данных (вы ведь используете ORM, не так ли?).

1
ответ дан 8 December 2019 в 12:58
поделиться

Почему бы не начать с диаграммы классов? Вы моделируете свое приложение, затем создаете Java-код с аннотацией JPA, поступающей непосредственно из модели (например, стереотипы также являются аннотациями), и, наконец, вы используете средство сопоставления, такое как Hibernate / EJB 3 для создания вашей базы данных.

1
ответ дан 8 December 2019 в 12:58
поделиться

Я предлагаю начать с ASP.NET MVC. Есть очень хороший пример создания простого веб-сайта с базой данных.

Подробности смотрите здесь: Ужин ботаников (бесплатная загрузка)

http://aspnetmvcbook.s3.amazonaws.com/aspnetmvc-nerdinner_v1.pdf

1
ответ дан 8 December 2019 в 12:58
поделиться

У меня такое чувство, что вы пытаетесь схватить сразу слишком много.Можно экспериментировать с базами данных, диаграммами TDD и UML; Этого самого по себе, ИМХО, хватило бы на один-единственный проект. Этот первый экспериментальный проект многому вас научит, на основе чего вы сможете гораздо лучше справиться со следующим проектом. Но я не ожидал, что эта первая попытка принесет результаты, которые могут убедить других разработчиков выбрать TDD и / или руководство изменить свое мышление. Вам нужно сначала понять и испытать вещи на собственном опыте, прежде чем вы сможете разумно объяснить их другим.

Советы по модульному тестированию приложений БД см. В следующих потоках для начинающих:

Я не уверен, что вы имеете в виду под «прототипированием с помощью диаграмм классов». Диаграммы классов подходят для обсуждения / передачи вашего дизайна другим разработчикам и, безусловно, должны быть в наборе инструментов каждого хорошего разработчика. Сессия на доске с кем-нибудь, рисование и стирание элементов дизайна на лету - отличный способ прояснить дизайн и силы, влияющие на него. Однако ИМХО это «прототипирование» только в очень широком смысле. Для меня настоящий прототип - это код - это единственный способ проверить, действительно ли ваш дизайн работает на практике.

7
ответ дан 8 December 2019 в 12:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: