Ваш input
не имеет атрибута name
. Это то, что клиент будет передавать на сервер. Флажок вызовет ошибку 400 при доступе к ключу формы, который не был отправлен.
Вы знаете много об ООП? Если так, изучите Spring и Будьте в спящем режиме для содержания реализации в чистоте и ортогональный. Если Вы получаете это, необходимо найти TDD хорошим способом сохранить дизайн компактным и минимизированным, тем более, что Вы "автоматизировали тестирование" и выполнение.
ОБНОВЛЕНИЕ: Рассмотрение первого убило ответов, я не мог не согласиться больше. Особенно в пространстве Java, необходимо найти много наставников/ресурсов при разработке приложения с Объектами, не ориентированного на базы данных подхода. Проектирование баз данных обычно является первым шагом для людей Microsoft (который я ежедневно делаю, но нахожусь в программе восстановления, er, Высоком звуке. Сеть). Если Вы сосредотачиваете внимание на том, что необходимо поставить клиенту и позволить ORM выяснить, как сохранить объекты, дизайн должен быть лучше.
Это очень походит на мое первое задание. Прямо из университета, меня попросили разработать базу данных и слой бизнес-логики, в то время как другие люди будут заботиться о UI. Между тем босс смотрел через мое плечо, негнущееся отпускать того, что раньше было его ребенком и было теперь моим, и тыкание его пальцем в нем. Три года спустя разработчики бежали из компании, и мы были все еще на расстоянии в X месяцы от фактической продажи чего-либо.
Большая ошибка была в том, чтобы быть слишком амбициозным. Если это будет Вашим первым заданием, то Вы сделаете ошибки, и необходимо будет измениться, как вещи работают еще долго после того, как Вы записали им. У нас были все виды функций, которые сделали систему более сложной, чем это должно было быть, и на уровне базы данных и в API, который это представило другим разработчикам. В конце все это было просто слишком сложно для поддержки внезапно и просто умерло.
Так мой совет:
Если Вы не уверены в получении такого большого задания без посторонней помощи, не делать. Скажите Вашим работодателям и заставьте их находить или нанимать кого-то, чтобы Вы работали с тем, кто может выручить Вас. Если люди должны быть добавлены к проекту, то он должен быть сделан около запуска, а не после того, как материал начинает идти не так, как надо.
Думайте очень тщательно о том, что продукт для, и сводить его к самому простому набору требований, о которых можно думать. Если люди, дающие Вам, спецификация не является технической, попытайтесь видеть мимо, что они записали в то, что будет на самом деле работать и делать деньги. Говорите с клиентами и продавцами, и поймите рынок.
Нет никакого позора в принятии, что Вы неправы. Если оказывается, что вся система должна быть переписана, потому что Вы сделали некоторую ошибку в своей первой версии, то лучше допустить это как можно скорее, таким образом, можно добраться до него. Соответственно, не пытайтесь сделать архитектуру, которая может ожидать каждое возможное непредвиденное обстоятельство в Вашей первой версии, потому что Вы не знаете то, что каждое непредвиденное обстоятельство и просто поймет его превратно. Запишите однажды глазом к выбрасыванию и запуску снова - Вы не можете иметь к, первая версия может быть прекрасной, но допустить его, если Вы делаете.
Я также не соглашаюсь о запуске с базы данных. DB является просто артефактом того, как сохраняются Ваши бизнес-объекты. Я не знаю об эквиваленте в Java, но .NET имеет звездные инструменты, такие как SubSonic, которые позволяют Вашему дизайну DB оставаться жидким, поскольку Вы выполняете итерации посредством своего дизайна бизнес-объектов. Я сказал бы прежде всего (даже перед выбором, что технологии представить), фокусируются на процессе и определяют Ваши существительные, и глаголы... затем создают из тех абстракций. Эй, это действительно работает в "реальном мире", точно так же, как ООП 101 учило Вас!
Главным является способность абстрагировать сложность системы так, чтобы Вы не увязали им, как только Вы начинаетесь.
Сначала считайте спецификацию как история (скользящий через него). Не останавливайтесь в каждом требовании для анализа его тут же и затем. Это позволит Вам получать общую картину системы без слишком многих деталей. В этой точке Вы начали бы определять главные функциональные компоненты системы. Начните подавлять их (используйте инструмент интеллект-карты, если Вам нравится).
Затем возьмите каждый компонент и начните взрывать его (и связывать каждую деталь требованиями в документе спецификации). Сделайте это для всех компонентов, пока Вы не покрыли все требования.
Теперь, необходимо начать смотреть на отношения между компонентами, и существуют ли повторения функций или функций через различные компоненты (который можно затем вытащить для создания служебных компонентов или такого). Вокруг теперь, у Вас была бы хорошая подробная карта Ваших требований в Вашем уме.
ТЕПЕРЬ, необходимо думать о разработке базы данных, схем ER, Дизайна Класса, DFDs, развертывания, и т.д.
Проблема с выполнением последнего шага сначала состоит в том, что можно увязнуть в сложности системы, действительно не получая полное понимание во-первых.
Прежде чем Вы начнете кодировать, распланируете свою схему базы данных - все остальное будет вытекать из этого. Получение базы данных, довольно корректной вначале, сэкономит Вам время и головные боли позже.
Это был мой опыт, который JAVA-приложения (.NET также), которые рассматривают базу данных в последний раз, очень вероятно, выполнят плохо при размещении в корпоративную среду. Необходимо действительно думать об аудитории. Вы не сказали, было ли это веб-приложение или нет. Так или иначе инфраструктура, на которой Вы реализуете, важна при рассмотрении, как Вы обрабатываете свои данные.
То, какую методологию Вы рассматриваете, как Вы получаете и сохраняете свои данные, и это - влияние на производительность, должно быть правильным там как один из Ваших приоритетов № 1.
Я делаю это наоборот. Я нахожу, что, делая его схема базы данных сначала вовлекает систему в управляемом данными дизайне, который является трудным к краткому обзору от персистентности. Мы пытаемся сделать проекты модели предметной области сначала и затем основывать схему базы данных на тех.
И затем существует дизайн инфраструктуры: команда должна обосноваться на конвенциях по тому, как структурировать программу прежде всего. И затем мы сотрудничаем для принятия сначала на дизайне для общей функциональности системы (например, вещи, в которых все нуждаются как персистентность, вход, и т.д.). Это становится платформой системы.
Все мы работаем над тот вместе первый, прежде чем мы разделим остальную часть технических возможностей среди нас.
Я предложил бы думать о том, как это приложение будет использоваться. Как будущие пользователи будут работать с ним? Я уверен, что Вы знаете по крайней мере несколько вещей о том, что должно обработать это приложение, но мой первый совет, "думают о пользователе и в чем он нуждается".
Составьте его на простой бумаге, думая, где разделить от кода. Remeber для не смешивания логики с кодом GUI (распространенная ошибка). Таким образом, Вы будете установлены расшириться, Ваши приложения достигают в будущем к сервлетам и/или апплетам или независимо от того, что платформа приходит. Раздел в слоях так, чтобы можно было ответить на большие изменения быстрее, не восстанавливая все. Слои не должны видеть никакие другие слои, чем их самые близкие соседние слои.
Начните с истинной базовой функциональности. Весь этот трудоемкий пух (который сделает Ваши недели проекта 4 поздно), вопрос привычки очень большинству WAST пользователей. Это может быть добавлено позже, после того как Вы уверены, что можно поставить вовремя.
Btw. Даже при том, что это не имеет никакого отношения к дизайну, я был бы точно так же, как, чтобы сказать, что Вы не поставите вовремя. Сделайте реалистическую оценку на потреблении времени и затем удвойте его :-) Я предполагаю здесь, что Вы не будете одними в этом проекте и что люди придут и уйдут, в то время как проект прогрессирует. Вы, возможно, должны обучить людей на полпути через проект, люди уезжают в отпуск / нуждаются в операции и т.д.
Я нашел очень проницательные идеи о запуске нового крупного проекта, на основе
в книге, Выращивающей Объектно-ориентированное программное обеспечение, Ведомое Тестами.
Это все еще разрабатывается, но сначала 3 главы могут быть тем, что Вы ищете и по моему скромному мнению стоящие чтения.
Разделите большую систему к мелким кусочкам. И не думайте, что это настолько сложно, потому что это обычно не. Путем размышления слишком сложный это просто разрушает мысли и в конечном счете дизайн. Некоторая точка Вы просто понимаете, что могли сделать легче то же самое, и затем Вы перепроектируете его.
По крайней мере это было моей главной ошибкой в разработке.
Сохраните это простым!