Проектирование объектно-ориентированных систем / GUI - PullRequest
2 голосов
/ 03 ноября 2011

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

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

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

  1. Выписать требования
  2. Групповые требования по схожим интересам
  3. Карта зависимостей
  4. и т. Д.

Буду признателен за любые указатели, которые вы все могли бы предложить относительно эффективных способов создания объектно-ориентированных систем.

ПРИМЕЧАНИЕ - Это приложение на основе графического интерфейса. Поэтому я планировал использовать подход MVC (модель - это база данных MySQL, контроллер - это класс кода для класса GUI, представление - это класс GUI). Если есть определенные методы для построения объектно-ориентированных систем для GUI, пожалуйста, оставьте их здесь.

Заранее спасибо.

1 Ответ

4 голосов
/ 01 марта 2012

Вот очень быстрый способ записать то, что я делаю (вроде) в своих личных личных проектах. (Это может быть не совсем то, что вы хотели, но это может помочь. Некоторые части могут быть неактуальны):

  1. Подумайте о , что я пытаюсь достичь с помощью программного проекта и моя мотивация для этого. Это просто для изучения языка, технологии или концепции? Это построить очень хорошо отлаженную программу, насколько я могу? Это произвести впечатление на кого-то? Это потому, что я должен или это средство для достижения цели? Это развить мои навыки? Это чисто для удовольствия?
  2. Убедитесь, что у меня есть четкое представление об основных функциях , которое должно быть («для этой версии» - отличная строка, которую я продолжаю давать себе)
  3. Запишите столько требований , сколько сможете, пока они не будут такими легкими (я делаю это в вики, которую я запускаю дома). Это не должно быть целая куча. Я чувствую, что у меня есть ~ 80% из тех, которые действительно имеют значение.
  4. Если на этом этапе я не знаю, выработает какое-то представление о том, что процесс и инструменты (методология) я собираюсь использовать. Какой язык, какие рамки и т. Д. Могут иметь отношение к делу. Если я не знаю, я узнаю.
  5. Повторяйте вышеприведенные , пока у меня не появится достаточно хорошее представление о том, что я хочу построить, как я собираюсь это сделать и как использовать.
  6. Создание проекта в Визуальная парадигма для UML.
  7. Начать гадить на разработке вариантов использования в проблемной области анализ UML-модели
  8. Создать некоторые статические диаграммы проблемных областей . Просто базовые диаграммы классов, я использую здесь UML, но это не имеет никакого отношения к программному обеспечению.
  9. Создать некоторые динамические диаграммы проблемных областей . Просто основные последовательности диаграмм. Я использую UML здесь, но это не имеет никакого отношения к программному обеспечению.
  10. Повтор по проблемному домену . Я обычно нахожу, что разработка модели проблемной области не займет много времени, прежде чем она станет достаточно стабильной. Очевидно, что это изменится с увеличением масштабов и сложности.
  11. Создание модели анализа / архитектуры предметной области и разработка вариантов использования для решения .
  12. Если есть какой-либо дизайн пользовательского интерфейса , который нужно сделать, я начну об этом думать и каркасное здесь наряду с вариантами использования.
  13. Создание некоторых диаграмм анализа областей статического решения , где я пытаюсь преобразовать некоторые из моделей статического анализа в нечто, похожее на структуру программного обеспечения, не задумываясь о том, как это может быть реализованы. Я начинаю высоко и работаю ниже, пытаясь конкретизировать архитектуру. На этом этапе я начну искать очевидную структуру и места, где можно применять шаблоны.
  14. Создание некоторых диаграмм анализа областей динамического решения , где я пытаюсь конкретизировать модель статического анализа, проверяя, не упустил ли я что-нибудь, когда я на самом деле пытаюсь пройтись по системе. Все еще следите за паттернами здесь.
  15. Создание некоторых статических диаграмм проектирования доменов решения , где я пытаюсь преобразовать модель анализа решения в реальные классы и компоненты, которые я хочу реализовать. Я начинаю высоко и работаю ниже. Образцы и архитектура должны начать кристаллизоваться здесь.
  16. Создание некоторых диаграмм областей динамического решения , где я пытаюсь конкретизировать статическую модель, проверяя, не упустил ли я какие-либо классы или функции. На этом этапе я получаю ответы на множество важных вопросов.
  17. Итерируйте все шаги до предыдущей точки итерации и уточняйте модели, пока у меня не получится что-то, что я с удовольствием начну реализовывать.
  18. Настройка build environemnt (при необходимости)
  19. Создание проекта в IDE Я собираюсь использовать и настройка управления версиями .
  20. Создание системы сборки
  21. Реализация в соответствии с проектом решения.
  22. Обновление различных UML-модели и диаграммы по мере того, как я сталкиваюсь с непредвиденными проблемами при реализации проекта.
  23. Выполнение независимо от руководства проверка Мне нужно (часто это просто специальное тестирование системы дляубедите себя, посмотрите, выполнил ли я свои требования).
  24. Выполните итерации последние три шага до тех пор, пока система не станет действующей, и я буду рад поставить мои инициалы на результат.
  25. Придумайте следующие функции для добавления и итерирование с шага 7!

Полагаю, я полагаюсь на несколько уровнейUML-моделирования.Там просто нет замены для размещения классов и отслеживания взаимодействия с сущностями, которые я могу быстро перетащить и подключить.Я считаю разделение проблемной области и области решения, а также модели анализа и проектирования чрезвычайно полезными и полезными.

Надеюсь, это кому-то интересно.

...