Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.03.01;
Скачать: CL | DM;

Вниз

Модульность программы, пакеты   Найти похожие ветки 

 
девушка   (2009-01-15 14:35) [0]

Добрый день!
На данный момент занимаюсь написанием ПО, которое будет состоять из нескольких "Рабочих мест". Например: бухгалтер, менеджер и кладовщик.
У каждого "рабочего места" есть свой набор функций, которые частично пересекаются (например, разные просмотры).

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

Модули с функциями оформлять в виде пакетов (dpk)ю каждое рабочее место будет отличаться своим набором пакетов.

Ранее я я пакеты не создавала, хотелось бы узнать о подводных камнях их использования. Например, как организовывать соединение с БД - создавать ли новое подключения для каждого пакета или можно передать ссылку на уже созданное?
Может есть гораздо лучшие варианты оорганизации приложения?


 
MsGuns ©   (2009-01-15 14:40) [1]

Ниче не понял - какая связь между "пакетами" как "рабочими местами" и функционалом обмена с БД ?


 
MsGuns ©   (2009-01-15 14:42) [2]

Если я правильно понял, то Ваша задача заключается в том, как разделить логику обмена с БД от логики прикладных задач (рабочих мест). А если так, то причем здесь пакеты ?


 
девушка   (2009-01-15 14:46) [3]

Видимо, я не правильно сформулировала.
Требуется сделать приложение и "рабочие места" достаточно гибкими в модификации.

Т.е. используют бухгалтер и менеджер модуль "просмотр статистики по платежкам" - тогда в их рачбочем месте данный пакет подгружается. А у кладовщика  - нет.


 
девушка   (2009-01-15 14:47) [4]

т.е. сделать приложение разбиваемым, а не в одном исполняемом файле.


 
Ega23 ©   (2009-01-15 14:49) [5]


> т.е. сделать приложение разбиваемым, а не в одном исполняемом
> файле.


Почему нет? Можно и в одном файле. Просто то, что положено видеть кладовщику, кладовщик будет видеть. А что не положено - не будет.

К физическому разделению проекта на пакеты это не имеет никакого отношения.


 
девушка   (2009-01-15 14:52) [6]


> К физическому разделению проекта на пакеты это не имеет
> никакого отношения.


"Руководитель проекта" хочет модульность.
Чтобы уменьшить размер ПО в оперативной памяти и сделать возможними варианты пакетов или dll, например, под разные версии МС офиса.


 
Ega23 ©   (2009-01-15 14:59) [7]


> "Руководитель проекта" хочет модульность.


Ну разноси разные фреймы в разные пакеты. Только это не модульность, а фигня какая-то.


 
девушка   (2009-01-15 15:06) [8]

Еще ламерский вопрос - как быть с подключением к БД?

В "ядре" будет TADOConnection, а в пакетах будут датасеты, которые должны (по идее) использовать текущее подключение из "ядра".
Я смогу передать ссылку на TADOConnection в пакет?

(
идея руководителя с отдельным подключением для каждого пакета и передачей строки подключения в пакет - мне очень не нравится :(
)


 
девушка   (2009-01-15 15:09) [9]

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


 
Anatoly Podgoretsky ©   (2009-01-15 15:09) [10]

> Ega23  (15.01.2009 14:59:07)  [7]

Это не фигня, это верная дорога в могилу. Конечно если получится.


 
девушка   (2009-01-15 15:14) [11]


> Это не фигня, это верная дорога в могилу. Конечно если получится.


обоснуйте пожалуйста, какие могут быть проблемы?
ато у меня идет отторжения этого варианта, но только на уровне интуиции, а интуицию к делу не пришлешь


 
Anatoly Podgoretsky ©   (2009-01-15 15:18) [12]

> девушка  (15.01.2009 15:09:09)  [9]

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


 
девушка   (2009-01-15 15:23) [13]

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


 
Anatoly Podgoretsky ©   (2009-01-15 15:38) [14]


> обоснуйте пожалуйста, какие могут быть проблемы?
> ато у меня идет отторжения этого варианта, но только на
> уровне интуиции, а интуицию к делу не пришлешь

Если я правильно понял, то получается, что на каждом месте своя программа, реализуемая через свой набор BPL
В итоге вы получите обычный DLL Hell, только в худшем виде.
Критерии главного не  выдерживают критики, это ложные критерии.
Критерием использования BPL/DLL является взаимное использование, строго противоположная вещь.

По критериям

1. экономии ресурсов не будет, будет обратно, поскольку BPL/DLL не даром, а с накладными расходами. Проигрыш даже по дисковой памяти. Это критерии Windows 16

2. Вот тут и получите DLL Hell, при монолитном приложение этого нет. Перекомпиляция в Дельфи очень быстрая и не требует немедленной перекомпляции. Не хочется - это не тот критерий, это критерий лентяя.

3. Наличие пакетов не требует необходимости смотреть чейто код. Дельфи модульная система, к тому же с супербиблиотеками, в отличии от lib/obj и не требует для компиляции исходного кода, достаточно dcu

Вам надо освоить навыки групповой работы, ввести репозитории и процедуры работы с ними. В общем как и подразумевалось, разруха она не в туалетах, а в головах.


 
Anatoly Podgoretsky ©   (2009-01-15 15:41) [15]

Кстати во времена Вин16 меня очень смущало, что отдельные производители видео карт сували в драйвер все и нужное и нет. Но при переходе на Win32 это смущать прекратило, смущать стало гигантское количество файлов.


 
девушка   (2009-01-15 15:51) [16]

собираю аргументы.


> Наличие пакетов не требует необходимости смотреть чейто
> код. Дельфи модульная система, к тому же с супербиблиотеками,
>  в отличии от lib/obj и не требует для компиляции исходного
> кода, достаточно dcu


на этапе разработки "костяка" приложения мне бы ОЧЕНЬ ХОТЕЛОСЬ чтобы мой код смотрели.


 
MsGuns ©   (2009-01-15 15:54) [17]

>девушка   (15.01.09 14:47) [4]
>т.е. сделать приложение разбиваемым, а не в одном исполняемом файле.

Для этого пакеты не нужны. Если, конечно, у вас не тысячи удаленных пользователей приложения и вы хотите распространтяь изменения не полными версиями, а паками.

>девушка   (15.01.09 14:52) [6]
>"Руководитель проекта" хочет модульность.

Что вашруководитель вкладывет в понятие "модульность" ?

>Чтобы уменьшить размер ПО в оперативной памяти и сделать возможними варианты пакетов или dll, >например, под разные версии МС офиса.

длл-ки не уменьшают размер ПО в ОПЕРАТИВНОЙ памяти, а вот совокупный объем на диске (или в памяти при одновременной загрузке, что бывает очень нечасто)  - уменьшают. Что ему надо - сэкономить место на диске ?

>девушка   (15.01.09 15:06) [8]
>Еще ламерский вопрос - как быть с подключением к БД?
>В "ядре" будет TADOConnection, а в пакетах будут датасеты, которые должны (по идее) >использовать текущее подключение из "ядра".
>Я смогу передать ссылку на TADOConnection в пакет?

Что Вы подразумеваете под словом "пакет" ?

>идея руководителя с отдельным подключением для каждого пакета и передачей строки подключения в пакет - мне очень не нравится :(

Что Ваш руководитель подразумевает под словом "пакет" ?

>девушка   (15.01.09 15:23) [13]
>"главный" выдвигает следующие аргументы:
>* у нас есть маломощные компьютеры - будем экономить ресурсы - подгружать только то что >нужно, копировать только то что нужно

Пакеты не помогут. Кардинальное решение - тонкий клиент

>* в процессе разработки у нас будут части системы часто менятся - не хочется >перекомпилировать все "рабочие места" с общими измененными кусками, а просто заменить >пакет.

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

>* мне не обязательно будет знать твой код - я буду видеть только интерфейс и подключать пакет (это меня вообще пугает)

Ничего страшного. Вполне реализуемо без пакетов. Т.е. на польовательском ПК приложение устанавливается (переустанавливается) без участия разработчика. Это сплошь и рядом


 
Anatoly Podgoretsky ©   (2009-01-15 16:10) [18]

> девушка  (15.01.2009 15:51:16)  [16]

Не мешает, если dcu/pas лежат рядом, то можно и посмотреть, если есть желание обеих сторон.
Но это не обязательно, не хочет знать, просто не надо смотреть.

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


 
MsGuns ©   (2009-01-15 16:19) [19]

Думаю, Вам будет интересно почитать ибо в тему:
http://delphimaster.net/view/15-1231918204/



Страницы: 1 вся ветка

Текущий архив: 2009.03.01;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.013 c
2-1232019643
pavelkq
2009-01-15 14:40
2009.03.01
Сравнинеи двух image.


15-1230994606
@!!ex
2009-01-03 17:56
2009.03.01
Подскажите Wiki движок


15-1231199273
programmer90
2009-01-06 02:47
2009.03.01
Borland C


15-1230419786
Rubin
2008-12-28 02:16
2009.03.01
Подскажите где найти пример "управления рабочим столом"


2-1232376076
grav
2009-01-19 17:41
2009.03.01
Транзакции