Russian Qt Forum
Апрель 20, 2024, 13:19 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 2 [3] 4   Вниз
  Печать  
Автор Тема: Проектирование программы для кафе  (Прочитано 32086 раз)
zeonET
Гость
« Ответ #30 : Октябрь 10, 2010, 00:49 »

да... жжоте товарисчи!  Смеющийся
Цитата: Denjs
... могу выложить (если найду) "упрощенную методику итерационной разработки с применением элементов 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
Гость
« Ответ #31 : Ноябрь 22, 2010, 13:54 »

Извините, "был занят, все дела"... В замешательстве
Если ещё актуально - добро пожаловать.


Применение элементов RUP в разработке
малых ИС на базе 1С:Предприятие.

Методика применения итерационного подхода в малых проектах
по созданию программного обеспечения и информационных систем

http://fayloobmennik.net/210842
(извините, 700 кб pdf файл к посту не прикрепляется)
« Последнее редактирование: Ноябрь 22, 2010, 13:59 от Denjs » Записан
zeonET
Гость
« Ответ #32 : Ноябрь 22, 2010, 21:03 »

Извините, "был занят, все дела"... В замешательстве
Если ещё актуально - добро пожаловать.
Спасибо, скачал, буду изучать...
Я пока что обхожусь малой кровью: выбрал model-view подход. Для таблиц товаров, блюд итд использую модели, все их засунул в отдельный класс cofeeEngine, а в UI для таблиц представления подставляю эти модели, а на кнопочки удаления/создания/итд вешаю методы этого (cofeeEngine) класса... Разная хитрая кафешная логика тоже будет в том единственном классе. Как считаете такой подход очень плохой? или еще можно жить? )
Записан
Denjs
Гость
« Ответ #33 : Ноябрь 22, 2010, 22:34 »

Спасибо, скачал, буду изучать...
Я пока что обхожусь малой кровью: выбрал model-view подход. Для таблиц товаров, блюд итд использую модели, все их засунул в отдельный класс cofeeEngine, а в UI для таблиц представления подставляю эти модели, а на кнопочки удаления/создания/итд вешаю методы этого (cofeeEngine) класса... Разная хитрая кафешная логика тоже будет в том единственном классе. Как считаете такой подход очень плохой? или еще можно жить? )
Если вы в контексте моей статейки - то мы о разном. Все что вы говорите - это про решения в области архитектуры. RUP же - про процесс разработки, подход к постановке требований и т.п. Анализ и Проектирование - это одна из дисциплин в RUP.

Если вообще - то надо подробнее смотреть и отталкиваясь от более конкретных и детального описания архитектуры понимать соответствует ваша архитектура ващим задачам или нет. Если по мне - так мне ближе всякие там ORM и иже с ними... но я давным давно был одинэснегом, и возможно мое мнение - это легкая форма "синдрома утенка" )))
Записан
nata267
Гость
« Ответ #34 : Декабрь 13, 2010, 11:23 »

Очень интересная тема. И много советов по части теории(в том числе чтение книжек по uml, где много воды и сложных запутанных фраз).  а вот как на практике реально спланировать диаграмму классов со всеми операциями и атребутами и взаимодействиями перед непосредственно кодированием, причем полностью во всех деталях. При этом учитывая весь инструментарий QT, наследуя от встроенных классов фреймворка, чтобы не изобретать велосипеды, а использовать все возможности по максимуму. Вот стала рыться в исходниках assistanta и designera, так как мой проект над которым работаю похож на эти, много нового узнала в том числе как они разделяют model-controller-view , почти разобралась с assistantoм,  построила UML диаграммы этого проекта, залезла в дизайнер, там жесть (мозг чуть не поломался). Короче, нужны какието знания как это проектировать все, может этому учат в вузах, просто я самоучка и получается всю практику получать только через чужой код. Хотя наверно это единственный способ
« Последнее редактирование: Декабрь 13, 2010, 11:39 от nata267 » Записан
zeonET
Гость
« Ответ #35 : Декабрь 13, 2010, 11:49 »

да, у меня те же вопросы что и у тебя nata267, )) архтектором быть хорошо, программистом тоже, но вот как бы это все грамотно связать? ))
ну ничего, понемножку что-то строю... как я понимаю существует много подходов к проектированию и это уже получается философский вопрос как правильно создавать приложение... главное его создать Подмигивающий P.S. ИМХО...
Записан
Denjs
Гость
« Ответ #36 : Декабрь 13, 2010, 11:50 »

...  а вот как на практике реально спланировать диаграмму классов со всеми операциями и атребутами и взаимодействиями перед непосредственно кодированием, причем полностью во всех деталях ...
... Короче, нужны какието знания как это проектировать все, может этому учат в вузах, просто я самоучка и получается всю практику получать только через чужой код.
1 - никак. забудьте попытку (ла и саму идею) спроектировать программу "причем полностью во всех деталях" как бред сивой кобылы, как маразм ночного кошмара, как золотую мечту или "серебрянную пулю" ( Брукса же читали?)
Программа  - не здание. Она может и должна проектироваться по другому. Нет, вы конечно можете все сначала спроектировать, потом долго делать, а потом долго тестировать.... но и получите вы такую программу - лет через 5. В лучшем случае. Когда оно никому уже не нужно будет.
Это проходит только тогда, когда у вас достаточно времени и объемы программы не большие.

В остальных случаях - учитесь заниматься "ниспадающим проектированием" (наверное это так можно назвать) в процессе развития программы. Определяйте общую архитектуру и создавайте "исполняемую архитектуру" (термин RUP) в начале, а потом "выращивайте на этом мясо" в том виде как это требуется.

а потому-
2 - учите итерационные технологии. Имхо, учите 6-й RUP (тот который был до текущего) и его принципы - в частности - "компонентно-ориентированная аритектура" и "разработка отталкивающаяся от прецедентов" т.п.
Как вводная информация - приведенная выше моя методичка.

Поймите, что программа, требования и архитектура будут уточняться в ходе работ. Это ГАРАНТИРОВАННО!.
Поймите, что изменение - это не катастрофа, а ожидаемое и нужное действие. Начинайте планировать (как минимум "во времени", если по составу не всегда понятно) мероприятия по реакции на изменения ещё до того, как эти изменения появятся. (не появятся изменения- хорошо, будет резерв, но они появятся, поверьте мне Подмигивающий )
Не пытайтесь увидеть все в деталях. Ни одна битва не выигрывалась по плану. Но и ни одна битва не выигрывалась без плана. Стройте скелетную архитектуру, соблюдайте её костяк, и будьте готовы всегда изменить детали. ("да, у нашей зверушки будет 2 руки, 2 ноги, голова и хвост. А вот сколько пальцев и какой длины, а может вообще клешня будет нужна - станет понятно позже") Проектирование сегодня - это не один этап, который делается в начале - это постоянный процесс на протяжении всего периода развития программы (но с разной интенсивностью).

PS: И ещё - не ждите что у все получится))) у меня ушел год на то, что бы перестроить мышление с рамок "ТЗ, и только потом программа", на "итерационное развитие".
Не ждите что любое ваше руководство смоет вас понять. Часто это люди "старшего образа мышления" и с далеко не лучших шаблонами в голове. То что "спроектировать в деталях, а потом писать" критиковалось ещё с 60-х годов - в советских вузах не учили.
 Ну где-то так) удачи, обращайтесь))))
« Последнее редактирование: Декабрь 13, 2010, 12:06 от Denjs » Записан
nata267
Гость
« Ответ #37 : Декабрь 13, 2010, 12:54 »

1 - никак. забудьте попытку (ла и саму идею) спроектировать программу "причем полностью во всех деталях" как бред сивой кобылы, как маразм ночного кошмара, как золотую мечту или "серебрянную пулю" ( Брукса же читали?)

я прочитала принципы RUP об итерационном процессе разработки и понимаю что структура и взаимоотношения классов будут все время меняться по ходу развития программы, но хотелось бы знать как вообще проектируют эти классы на каком то определенном промежуточном этапе, на примере, на практике, разбор какого нибудь конкретного небольшого приложения.
Записан
Denjs
Гость
« Ответ #38 : Декабрь 13, 2010, 13:06 »

я прочитала принципы RUP об итерационном процессе разработки и понимаю что структура и взаимоотношения классов будут все время меняться по ходу развития программы,
По идее, они должны "развиваться", а не "меняться". От более грубых моментов к деталям.
Если они "просто меняются" - то что-то у вас не так, а вы рискуете попасть на "неуправляемый процесс разработки".

Цитировать
как вообще проектируют эти классы на каком то определенном промежуточном этапе, на примере, на практике, разбор какого нибудь конкретного небольшого приложения.
гм... вот в этой книжке есть пример мини-проекта (PSP-tools) от идеи до окончания внедрения. Там далеко не только про проектирование, акцент сделан на всем процессе, на его идеях, но думаю вам будет интересно/полезно. Т

Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3258


Просмотр профиля
« Ответ #39 : Декабрь 13, 2010, 13:06 »

Denjs
Ну вы не правы. Я написал программку, за год не поменяв требований вообще. Но там было очень много размышлений о юзкейзах. Требования меняются ибо заказчики блондинят+рынок меняется. Мой не менялся:)
Записан
Denjs
Гость
« Ответ #40 : Декабрь 13, 2010, 13:18 »

Denjs
Ну вы не правы. Я написал программку, за год не поменяв требований вообще. Но там было очень много размышлений о юзкейзах. Требования меняются ибо заказчики блондинят+рынок меняется. Мой не менялся:)

Я говорю что "углубление в детали на ранних этапах" - есть "зло" ))) . По крайней мере в подавляющем числе случаев сегодня. Естественно методы и подходы надо применять в зависимости от ситуации и условий проекта.

Вы правы в том, что я упустил один аспект при котором "водопад" жизнеспособен - стабильность требований.

Но, имхо, вы забыли, наверное, упомянуть что :
 - или у вас проект был не большим (имею в виду объем разработки и её сложность, а не длительность проекта),
 - или область вам хорошо знакомая, для которой есть много наработок или фреймворков,
 - или вы не проводили совсем-детальное проектирование системы, сразу ринувшись в реализацию проекта (по причине что ест наработки, есть фреймворки или т.п.).
 - или вы говорите про неизменчивость высокоуровневых требований, забыв, что детали вы все равно меняли.... Мы можем наверное согласиться, что высокоуровневые требования останутся неизменными, но мелочи-то будут меняться. и мелочи могут поменять и извратить все .

 так? ну может ещё пара-тройка деталей и/или вариантов.

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

Т.е. ваш проект - исключение.

Есть ещё один вариант (увы так чаше всего бывает когда люди говорят про успешность применения ТЗ).
"проект построенный по ТЗ" - "фейк". (я вам верю, но привожу статистику о том, что часто кроектся за тем, что люди говорят про "успешные проекты построенные по водопаду").
За фразой "мы работали по тз" сегодня часто кроется откровенная ложь, лукавство...  часто - выгораживнаие себя, ради того что бы хорошо выглядеть в глазах клиента/заказчика. (да, иногда и в силу того, что заказчик "глух", но чаще - это "пылевглазапускание"). Иногда доходит до того, что "ТЗ" пишется постфактум или подгонятеся под реальную программу - после реализации проекта.
И не надо мне говорить что это не так. Это именно так, особенно в гос-конторо-подобных организациях (в том же РЖД) .
 (я тут работаю и вижу многие бумаги приходящие нам на рецензию и не только). или оно (ТЗ, ТП, "ПМ", "ПЗ") не соответствует действительности, или слишком абстрактно и витеевато написано, или пишется постфактум. Прочее представлено в исчезающе малом объеме.
« Последнее редактирование: Декабрь 13, 2010, 13:53 от Denjs » Записан
Denjs
Гость
« Ответ #41 : Декабрь 13, 2010, 13:34 »

вот ещё полезная штука: OpenUP. Суть его в том, что это похоже на RUP, но все доступно бесплатно.
IBM >> developerWorks Россия >> Rational >> Статьи >> OpenUP - это просто
« Последнее редактирование: Декабрь 13, 2010, 13:37 от Denjs » Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #42 : Декабрь 13, 2010, 14:24 »

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

- нам надо чтобы альфа-канал можно было загружать/контролировать из отдельного имеджа. 

Они не пытаются "проскочить на шару", т.е. понимают что такие изменения требуют времени и денег. Но технически не легче - имедж для альфы может иметь др. формат, размеры, разрешение чем для RGB, надо что-то решать с UI и.т.п. - от моей стройной архитектуры остаются "рожки да ножки"  Улыбающийся

Я вовсе не говорю что "давайте начинать абы как, а там разберемся" - это др. крайность. Просто не стоит обольщаться что сразу и "на всю жизнь" будет придумана архитектура классов, их ф-циональность и (самое главное) их взаимодействие. Нужно стремиться к первой версии которая затем (неизбежно) будет меняться во времени - это нормально
Записан
nata267
Гость
« Ответ #43 : Май 16, 2012, 10:41 »

Цитата из книги по шаблонам проектирования:

Каркас - это набор взаимодействующих классов, составляющий повторно используемый дизайн для конкретного класса программ. Например, можно создать каркас для разработки графических редакторов в разных областях: рисование, сочинение музыки, САПР. Другой каркас упростит построение приложений для финансового моделирования. Каркас можно подстроить под конкретное приложение путем порождения специализированных  подклассов от входящих в него абстрактных классов...
Каркас диктует определенную архитектуру приложения...
Если проектировать приложение нелегко, инструментальные библиотеки - ещё сложнее, то проектирование каркаса - задача самая трудная.

Конец цитаты.

Получается есть такие готовые каркасы. Только где их взять?? Чтобы не изобретать велосипед?
Записан
Krysk
Гость
« Ответ #44 : Май 16, 2012, 12:11 »

Получается есть такие готовые каркасы. Только где их взять?? Чтобы не изобретать велосипед?
Наверное это про фреймворки... или какие-нибудь библиотеки реализующие тот или иной велосипед;)
Записан
Страниц: 1 2 [3] 4   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.057 секунд. Запросов: 22.