Russian Qt Forum
Ноябрь 22, 2024, 21:37
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Общие вопросы
>
Проектирование программы для кафе
Страниц:
1
2
[
3
]
4
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Проектирование программы для кафе (Прочитано 34044 раз)
zeonET
Гость
Re: Проектирование программы для кафе
«
Ответ #30 :
Октябрь 10, 2010, 00:49 »
да... жжоте товарисчи!
Цитата: Denjs
Цитата: zeonET от Сентябрь 18, 2010, 14:24
Цитата: Denjs от Сентябрь 17, 2010, 23:23
... могу выложить (если найду) "упрощенную методику итерационной разработки с применением элементов RUP". ...
Было бы интересно посмотреть и подумать.
Бумажку нашел, подредактирую её на выходных на предмет грамматических очепяток и выложу...
ок, жду ))
Тем временем начитался других разных тем и пришел к заключению что все делают как хотят.
Вот например вопрос человека с линукс.орг:
Цитировать
Нужно на Qt написать простенькое "бизнес-приложение" (точнее - быдлоформочка связанная с БД
). Почитал Бланшет/Саммерфилд, авторы в конструктор "формы" запихивают объект класса QSqlTableModel, определяют его свойства (таблицу, поля, условия выборки) и связывают с QTableView. Мне это напомнило тяжёлое университетское детство и Delphi. Разве что компоненты не мышой таскаем, а создаем в конструкторе.
Ответы:
Цитировать
Вынести запросы в отдельный файл, потом задавать их параметрами для QSqlQueryModel, который отображать на QTableView. А вот QTableView стоит унаследовать и дать ему функциональность, которая будет отвечать за действия с конкретными строками таблицы(открытие окна редактирования записи по даблклику и т.д.).
Цитировать
IMHO - не париться, и писать как можно проще. При необходимости - переписывать, вводить паттерны, новые слои, но только при необходимости. Собственно, имхо, умение видеть грань между простым кодом, и bloated кодом, и перерабатывать его, когда надо
Или вот (
http://www.prog.org.ru/topic_14399_0.html
), по соседству искали идеал архитектуру. Претендентами были:
Классика: классы "Х", "Y", "Z". Их методы - логика приложения. Классы прикручиваем к БД, ну и потом UI
Подход ORM (бизнес-логика в виде хранимых процедур)
Промежуточной слое, сервер приложений
Так и не выяснили что и к чему...
Вот я сейчас и хочу простенькое приложение "под присмотром" спроектировать. Т.к. что-то сварганить можно всегда, а тут есть возможность чему-то хорошему научится... Хотя все предусмотреть/спроектировать невозможно (когда-то заморачивался как лучше переменную назвать car_count или count_car), поэтому я думаю можно что-то и упускать и пускать на самотек... Хотя тут, ИМХО, идет в ход характер человека, один импульсивный - пишет сходу, правит, меняет итд и потом называет это методом Agile, другой три дня думает и за 10 мин пишет идеальный продукт...
Но это все уже разработка, а пока еще только исследование и анализ (затянулся однако
).
Записан
Denjs
Гость
Re: Проектирование программы для кафе
«
Ответ #31 :
Ноябрь 22, 2010, 13:54 »
Извините, "был занят, все дела"...
Если ещё актуально - добро пожаловать.
Применение элементов RUP в разработке
малых ИС на базе 1С:Предприятие.
Методика применения итерационного подхода в малых проектах
по созданию программного обеспечения и информационных систем
http://fayloobmennik.net/210842
(извините, 700 кб pdf файл к посту не прикрепляется)
«
Последнее редактирование: Ноябрь 22, 2010, 13:59 от Denjs
»
Записан
zeonET
Гость
Re: Проектирование программы для кафе
«
Ответ #32 :
Ноябрь 22, 2010, 21:03 »
Цитата: Denjs от Ноябрь 22, 2010, 13:54
Извините, "был занят, все дела"...
Если ещё актуально - добро пожаловать.
Спасибо, скачал, буду изучать...
Я пока что обхожусь малой кровью: выбрал model-view подход. Для таблиц товаров, блюд итд использую модели, все их засунул в отдельный класс cofeeEngine, а в UI для таблиц представления подставляю эти модели, а на кнопочки удаления/создания/итд вешаю методы этого (cofeeEngine) класса... Разная хитрая кафешная логика тоже будет в том единственном классе. Как считаете такой подход очень плохой? или еще можно жить? )
Записан
Denjs
Гость
Re: Проектирование программы для кафе
«
Ответ #33 :
Ноябрь 22, 2010, 22:34 »
Цитата: zeonET от Ноябрь 22, 2010, 21:03
Спасибо, скачал, буду изучать...
Я пока что обхожусь малой кровью: выбрал model-view подход. Для таблиц товаров, блюд итд использую модели, все их засунул в отдельный класс cofeeEngine, а в UI для таблиц представления подставляю эти модели, а на кнопочки удаления/создания/итд вешаю методы этого (cofeeEngine) класса... Разная хитрая кафешная логика тоже будет в том единственном классе. Как считаете такой подход очень плохой? или еще можно жить? )
Если вы в контексте моей статейки - то мы о разном. Все что вы говорите - это про решения в области архитектуры. RUP же - про процесс разработки, подход к постановке требований и т.п. Анализ и Проектирование - это одна из дисциплин в RUP.
Если вообще - то надо подробнее смотреть и отталкиваясь от более конкретных и детального описания архитектуры понимать соответствует ваша архитектура ващим задачам или нет. Если по мне - так мне ближе всякие там ORM и иже с ними... но я давным давно был одинэснегом, и возможно мое мнение - это легкая форма "синдрома утенка" )))
Записан
nata267
Гость
Re: Проектирование программы для кафе
«
Ответ #34 :
Декабрь 13, 2010, 11:23 »
Очень интересная тема. И много советов по части теории(в том числе чтение книжек по uml, где много воды и сложных запутанных фраз). а вот как на практике реально спланировать диаграмму классов со всеми операциями и атребутами и взаимодействиями перед непосредственно кодированием, причем полностью во всех деталях. При этом учитывая весь инструментарий QT, наследуя от встроенных классов фреймворка, чтобы не изобретать велосипеды, а использовать все возможности по максимуму. Вот стала рыться в исходниках assistanta и designera, так как мой проект над которым работаю похож на эти, много нового узнала в том числе как они разделяют model-controller-view , почти разобралась с assistantoм, построила UML диаграммы этого проекта, залезла в дизайнер, там жесть (мозг чуть не поломался). Короче, нужны какието знания как это проектировать все, может этому учат в вузах, просто я самоучка и получается всю практику получать только через чужой код. Хотя наверно это единственный способ
«
Последнее редактирование: Декабрь 13, 2010, 11:39 от nata267
»
Записан
zeonET
Гость
Re: Проектирование программы для кафе
«
Ответ #35 :
Декабрь 13, 2010, 11:49 »
да, у меня те же вопросы что и у тебя nata267, )) архтектором быть хорошо, программистом тоже, но вот как бы это все грамотно связать? ))
ну ничего, понемножку что-то строю... как я понимаю существует много подходов к проектированию и это уже получается философский вопрос как правильно создавать приложение... главное его создать
P.S. ИМХО...
Записан
Denjs
Гость
Re: Проектирование программы для кафе
«
Ответ #36 :
Декабрь 13, 2010, 11:50 »
Цитата: nata267 от Декабрь 13, 2010, 11:23
... а вот как на практике реально спланировать диаграмму классов со всеми операциями и атребутами и взаимодействиями перед непосредственно кодированием, причем полностью во всех деталях ...
... Короче, нужны какието знания как это проектировать все, может этому учат в вузах, просто я самоучка и получается всю практику получать только через чужой код.
1 - никак. забудьте попытку (ла и саму идею) спроектировать программу "причем полностью во всех деталях" как бред сивой кобылы, как маразм ночного кошмара, как золотую мечту или "серебрянную пулю" ( Брукса же читали?)
Программа - не здание. Она может и должна проектироваться по другому. Нет, вы конечно можете все сначала спроектировать, потом долго делать, а потом долго тестировать.... но и получите вы такую программу - лет через 5. В лучшем случае. Когда оно никому уже не нужно будет.
Это проходит только тогда, когда у вас достаточно времени и объемы программы не большие.
В остальных случаях - учитесь заниматься "ниспадающим проектированием" (наверное это так можно назвать) в процессе развития программы. Определяйте общую архитектуру и создавайте "исполняемую архитектуру" (термин RUP) в начале, а потом "выращивайте на этом мясо" в том виде как это требуется.
а потому-
2 - учите итерационные технологии. Имхо, учите 6-й RUP (тот который был до текущего) и его принципы - в частности - "компонентно-ориентированная аритектура" и "разработка отталкивающаяся от прецедентов" т.п.
Как вводная информация - приведенная выше моя методичка.
Поймите, что
программа, требования и архитектура будут уточняться в ходе работ
. Это ГАРАНТИРОВАННО!.
Поймите, что
изменение - это не катастрофа, а ожидаемое и нужное действие. Начинайте планировать (как минимум "во времени", если по составу не всегда понятно) мероприятия по реакции на изменения ещё до того, как эти изменения появятся.
(не появятся изменения- хорошо, будет резерв, но они появятся, поверьте мне
)
Не пытайтесь увидеть все в деталях.
Ни одна битва не выигрывалась по плану. Но и ни одна битва не выигрывалась без плана.
Стройте скелетную архитектуру, соблюдайте её костяк, и будьте готовы всегда изменить детали. (
"да, у нашей зверушки будет 2 руки, 2 ноги, голова и хвост. А вот сколько пальцев и какой длины, а может вообще клешня будет нужна - станет понятно позже"
) Проектирование сегодня - это не один этап, который делается в начале - это постоянный процесс на протяжении всего периода развития программы (но с разной интенсивностью).
PS: И ещё - не ждите что у все получится))) у меня ушел год на то, что бы перестроить мышление с рамок "ТЗ, и только потом программа", на "итерационное развитие".
Не ждите что любое ваше руководство смоет вас понять. Часто это люди "старшего образа мышления" и с далеко не лучших шаблонами в голове. То что "спроектировать в деталях, а потом писать" критиковалось ещё с 60-х годов - в советских вузах не учили.
Ну где-то так) удачи, обращайтесь))))
«
Последнее редактирование: Декабрь 13, 2010, 12:06 от Denjs
»
Записан
nata267
Гость
Re: Проектирование программы для кафе
«
Ответ #37 :
Декабрь 13, 2010, 12:54 »
Цитата: Denjs от Декабрь 13, 2010, 11:50
1 - никак. забудьте попытку (ла и саму идею) спроектировать программу "причем полностью во всех деталях" как бред сивой кобылы, как маразм ночного кошмара, как золотую мечту или "серебрянную пулю" ( Брукса же читали?)
я прочитала принципы RUP об итерационном процессе разработки и понимаю что структура и взаимоотношения классов будут все время меняться по ходу развития программы, но хотелось бы знать как вообще проектируют эти классы на каком то определенном промежуточном этапе, на примере, на практике, разбор какого нибудь конкретного небольшого приложения.
Записан
Denjs
Гость
Re: Проектирование программы для кафе
«
Ответ #38 :
Декабрь 13, 2010, 13:06 »
Цитата: nata267 от Декабрь 13, 2010, 12:54
я прочитала принципы RUP об итерационном процессе разработки и понимаю что структура и взаимоотношения классов будут все время меняться по ходу развития программы,
По идее, они должны "развиваться", а не "меняться". От более грубых моментов к деталям.
Если они "просто меняются" - то что-то у вас не так, а вы рискуете попасть на "неуправляемый процесс разработки".
Цитировать
как вообще проектируют эти классы на каком то определенном промежуточном этапе, на примере, на практике, разбор какого нибудь конкретного небольшого приложения.
гм...
вот в этой книжке
есть пример мини-проекта (PSP-tools) от идеи до окончания внедрения. Там далеко не только про проектирование, акцент сделан на всем процессе, на его идеях, но думаю вам будет интересно/полезно. Т
Записан
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: Проектирование программы для кафе
«
Ответ #39 :
Декабрь 13, 2010, 13:06 »
Denjs
Ну вы не правы. Я написал программку, за год не поменяв требований вообще. Но там было очень много размышлений о юзкейзах. Требования меняются ибо заказчики блондинят+рынок меняется. Мой не менялся:)
Записан
Denjs
Гость
Re: Проектирование программы для кафе
«
Ответ #40 :
Декабрь 13, 2010, 13:18 »
Цитата: Авварон от Декабрь 13, 2010, 13:06
Denjs
Ну вы не правы. Я написал программку, за год не поменяв требований вообще. Но там было очень много размышлений о юзкейзах. Требования меняются ибо заказчики блондинят+рынок меняется. Мой не менялся:)
Я говорю что "углубление в детали на ранних этапах" - есть "зло" ))) . По крайней мере в подавляющем числе случаев сегодня. Естественно методы и подходы надо применять в зависимости от ситуации и условий проекта.
Вы правы в том, что
я упустил один аспект при котором "водопад" жизнеспособен - стабильность требований.
Но, имхо, вы забыли, наверное, упомянуть что :
- или у вас проект был не большим (имею в виду объем разработки и её сложность, а не длительность проекта),
- или область вам хорошо знакомая, для которой есть много наработок или фреймворков,
- или вы не проводили совсем-детальное проектирование системы, сразу ринувшись в реализацию проекта (по причине что ест наработки, есть фреймворки или т.п.).
- или вы говорите про неизменчивость высокоуровневых требований, забыв, что детали вы все равно меняли.... Мы можем наверное согласиться, что высокоуровневые требования останутся неизменными, но мелочи-то будут меняться. и мелочи могут поменять и извратить все .
так? ну может ещё пара-тройка деталей и/или вариантов.
В общем случае - сегодня такие проекты скорее всего исключение, потому что нужна редкая совокупность факторов что бы процесс построенный по водопаду прошел нормально. Основные условия для него - небольшие объемы, из которых следует неизменчивость требований.
Т.е. ваш проект - исключение.
Есть ещё один вариант (увы так чаше всего бывает когда люди говорят про успешность применения ТЗ).
"проект построенный по ТЗ" - "фейк". (
я вам верю, но привожу статистику о том, что часто кроектся за тем, что люди говорят про "успешные проекты построенные по водопаду"
).
За фразой "мы работали по тз" сегодня часто кроется откровенная ложь, лукавство... часто - выгораживнаие себя, ради того что бы хорошо выглядеть в глазах клиента/заказчика. (да, иногда и в силу того, что заказчик "глух", но чаще - это "пылевглазапускание"). Иногда доходит до того, что "ТЗ" пишется постфактум или подгонятеся под реальную программу - после реализации проекта.
И не надо мне говорить что это не так. Это именно так, особенно в гос-конторо-подобных организациях (в том же РЖД) .
(я тут работаю и вижу многие бумаги приходящие нам на рецензию и не только). или оно (ТЗ, ТП, "ПМ", "ПЗ") не соответствует действительности, или слишком абстрактно и витеевато написано, или пишется постфактум. Прочее представлено в исчезающе малом объеме.
«
Последнее редактирование: Декабрь 13, 2010, 13:53 от Denjs
»
Записан
Denjs
Гость
Re: Проектирование программы для кафе
«
Ответ #41 :
Декабрь 13, 2010, 13:34 »
вот ещё полезная штука: OpenUP. Суть его в том, что это похоже на RUP, но все доступно бесплатно.
IBM >> developerWorks Россия >> Rational >> Статьи >>
OpenUP - это просто
«
Последнее редактирование: Декабрь 13, 2010, 13:37 от Denjs
»
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Проектирование программы для кафе
«
Ответ #42 :
Декабрь 13, 2010, 14:24 »
Цитата: nata267 от Декабрь 13, 2010, 12:54
я прочитала принципы RUP об итерационном процессе разработки и понимаю что структура и взаимоотношения классов будут все время меняться по ходу развития программы, но хотелось бы знать как вообще проектируют эти классы на каком то определенном промежуточном этапе, на примере, на практике, разбор какого нибудь конкретного небольшого приложения.
В том-то и дело что на
небольшом
приложении (напр плагине) все получается прекрасно - так как пишут в вумных книжках. Но с ростом объема решаемых задач все становится иначе. Переделывать архитектуру придется - и лучше воспринимать это спокойно. Вот пример из моей недавней практики, заказчики говорят
- нам надо чтобы альфа-канал можно было загружать/контролировать из отдельного имеджа.
Они не пытаются "проскочить на шару", т.е. понимают что такие изменения требуют времени и денег. Но технически не легче - имедж для альфы может иметь др. формат, размеры, разрешение чем для RGB, надо что-то решать с UI и.т.п. - от моей стройной архитектуры остаются "рожки да ножки"
Я вовсе не говорю что "давайте начинать абы как, а там разберемся" - это др. крайность. Просто не стоит обольщаться что сразу и "на всю жизнь" будет придумана архитектура классов, их ф-циональность и (самое главное) их взаимодействие. Нужно стремиться к первой версии которая затем (неизбежно) будет меняться во времени - это нормально
Записан
nata267
Гость
Re: Проектирование программы для кафе
«
Ответ #43 :
Май 16, 2012, 10:41 »
Цитата из книги по шаблонам проектирования:
Каркас - это набор взаимодействующих классов, составляющий повторно используемый дизайн для конкретного класса программ. Например, можно создать каркас для разработки графических редакторов в разных областях: рисование, сочинение музыки, САПР. Другой каркас упростит построение приложений для финансового моделирования. Каркас можно подстроить под конкретное приложение путем порождения специализированных подклассов от входящих в него абстрактных классов...
Каркас диктует определенную архитектуру приложения...
Если проектировать приложение нелегко, инструментальные библиотеки - ещё сложнее, то проектирование каркаса - задача самая трудная.
Конец цитаты.
Получается есть такие готовые каркасы. Только где их взять?? Чтобы не изобретать велосипед?
Записан
Krysk
Гость
Re: Проектирование программы для кафе
«
Ответ #44 :
Май 16, 2012, 12:11 »
Цитата: nata267 от Май 16, 2012, 10:41
Получается есть такие готовые каркасы. Только где их взять?? Чтобы не изобретать велосипед?
Наверное это про фреймворки... или какие-нибудь библиотеки реализующие тот или иной велосипед;)
Записан
Страниц:
1
2
[
3
]
4
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...