powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Система с изменяющимися алгоритмами расчета.
25 сообщений из 159, страница 2 из 7
Система с изменяющимися алгоритмами расчета.
    #32197084
Gt_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Gt_
Гость
а теперь просто флейм :)

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

Печатаем нужные ведомости, отвозим их в банк.
ну конечно тоже вариант :) а экспортировать - кто этим будет заниматся ? а банку такое нада ? у банка есть xml-gateway и грит на работай, нехошь не работай ...

так что пока я вижу, что 3 тиер будет поедленей, но не в разы (!) зато
а) мой любимый язык
б) он ООП
с) я на нем могу все, а что немогу мне помогут ... а вот спецов по ораклу ...
д) независимость от бд
е) эт не панацея, криво написать на чем угодно ...
...
Рейтинг: 0 / 0
Система с изменяющимися алгоритмами расчета.
    #32197168
Gt_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Gt_
Гость
на счет планов хп, можно какие-нибудь кейвордс я поищу, а то терзают смутные сомнения.
компилирование хп - эт немного другое, это просто код хп компилируется в байт-код ... как при этом может помочь статистика пока не вижу. ну болтается в памяти субд этот байткод, а как это помогает плану оптимизатора ? что он такого может узнать ?
вроде то же самое и с sqlями - они парсятся и болтаются в памяти, опять же разницы кто их потом пускает хп или клиент - нет.
...
Рейтинг: 0 / 0
Система с изменяющимися алгоритмами расчета.
    #32197184
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошо - немного флейма в данном деле не повредит :)

Буду Вас разбивать по пунктам:
а) мой любимый язык
личные предпочтения в работе недопустимы

б) он ООП
ООП хорош для работы с иеархиями обьектов, но вот для работы с множествами он скатывается до примитивных алгоримов.

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

д) независимость от бд
достигается только в одном случае - поддержка только стандарта ANSI SQL 92. В итоге БД используется только как "чистое" хранилище БД и вся тяжесть поддержки целостной ссылочности данных и их обработки ложится на плечи 3-звена, что опять скатывается до примитивных алгоритмов перебора записей.

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

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


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

>>>Печатаем нужные ведомости, отвозим их в банк.
ну конечно тоже вариант :) а экспортировать - кто этим будет заниматся ? а банку такое нада ? у банка есть xml-gateway и грит на работай, нехошь не работай ...


Все в одну корзинку ... любой проект не может писаться по принципу "возможно все". Каждая логическая часть функционала проекта должна быть обоснованна и спроектированна с учетом постановки задачи. Делается по разному, но в любом случае описание бизнес-процессов проекта необходимо (хоть ручками, хоть в BPWIN). Рядышком кстати в этом форуме такая тема живет и процветает :) Нельзя решить задачу без четкого описания и понимания ее сути. В моей ЗП по постановке задачи четко и явно разграничиваются права и привелегии пользователей, кто что может видеть и делать. То же относить и к банкам - без ведомости с подписью главбуха банки не имеют права выдать по счету зп организации деньги или же перевести их на кредитные карточки. Так же как например и организация не имеет права хранить полученные от банка деньги на выплату зп более 3 дней. Не выдали - значит обязаны сдать обратно в банк, опять же с соотвествующими бумажками. Все описано и регулируется законодательством РФ, вот когда оно поменяется, тогда будет выпущена новая версия продукта с новой реализацией соотвествующей логики.

Ну а Вам лично - может стоит все таки "подружиться" с SQL поближе ;) Честно скажу - ни одна красиво разработанная иеархия классов в ООП ни сравниться с тем удовольствием, которое получаешь от правильно спроектированной БД, а уж тем более от написания запроса, который один делает то, что на алгоритмических языках нужно долго и нудно кодировать. ООП - это все таки ближе к кодированию по сравнению с SQL, несмотря на то, что понятия проектирования классов там тоже очень имеют важное место.
...
Рейтинг: 0 / 0
Система с изменяющимися алгоритмами расчета.
    #32197373
KonstN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ASCRUS
Отличные постинги. Большое спасибо за подробное объяснение своего ноухау. Это действительно ценный пример как надо нестандартно подходить к решению плохо формализованных задач. Что-то подобное написано в "Жемчужинах программирования" :)

Уважаемый Gt_, ты не совсем прав здесь.
Одно то, что ты считаешь "д) независимость от бд" преимуществом многоуровневого подхода выдаёт не очень опытного в этом вопросе человека (без обид). IMHO третий уровень (и последующие) необходимы на 99% для того, чтобы сделать систему более масштабируемой. Это подход MTS в Oracle.
Но как и MTS этот подход тяжело реализуется и имеет ограниченную область применения.
Что касается "независимости от бд", то это иллюзорно. Об этом неоднократно писал Том Кайт, надеюсь, он признанный авторитет для тебя. Дело в том, что универсальный подход не только нивелирует достоинства отдельных реализаций БД, но и просто может вести к ошибкам. Например, то, что Oracle использует версионную модель изоляции транзакций, а Sybase/MS SQL - блокирование, приводит к тому, что один и тот же третий уровень будет умирать на том или другом сервере (или на обоих), а то и выдавать некорректные результаты. Кайт писал это с примерами в своей книге.
И ещё он писал что знание устройства машины БД must be для разработчика приложения, работающего с этой БД. Иначе получаются уродцы типа 1С на MSSQL.
...
Рейтинг: 0 / 0
Система с изменяющимися алгоритмами расчета.
    #32197502
Gt_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Gt_
Гость
ну тут уже философия и религия пошла :)
у нас разные подходы к решению задач да и требования ... вы пытаетесь решить конкретную задачу максимально эфективно по ТЗ. если меняется ТЗ - изменения вносятся подпорками типа внешних процедур или печатать и отнести т.к. есть большая вероятность того что нехватит возможностей хп (всякие карточки, xml-gatewayи и т.д.)
не имею ничего против т.к. у вас вероятность изменения ТЗ наверно маловата, а у кого-то она побольше. выбрать узский инструмент - страшно ... вот и ищем компромис :)
а скорость - кормить толпу прораммеров дорого ... а процессор дешевый :)

на счет MTS - эт разве не MS Transaction server ??? эт чуть другое ...

а то что нада знать с чем работаешь, эт бесспорно (хотя я люблю с порно), но когда правильно созданы бизнес объекты - они не меняются (от смены бд), меняется лишь методы их взаимодействия с бд. конечно оракловый select for update не канает в mssql, конечно система блокировок будет другая, но на бизнес объекты это не влияет.

а уродцы не от 3-го уровня появляютя .. а от ошибок днк, я вот например плакал - инсерчу запись - там тригер, запускает каскадно еще 3, те еще по 2. половина из них кидают ексепшаны ... пол базы изменилось, разобратся что к чему без пол литра не возможно.
...
Рейтинг: 0 / 0
Система с изменяющимися алгоритмами расчета.
    #32197537
KonstN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Gt_

> ну тут уже философия и религия пошла :)
Отнюдь. Это чистой воды практика правильного программирования.

>вы пытаетесь решить конкретную задачу максимально эфективно по ТЗ. если меняется ТЗ - изменения вносятся подпорками типа внешних процедур
Как раз в данном случае ASCRUS показал как можно эффективно (и эффектно) решить задачу с непрерывно меняющимся ТЗ.

>а скорость - кормить толпу прораммеров дорого ... а процессор дешевый :)
Да-да, подход Java и Co...
Сначала бьёмся за повышение производительности процессора на 20-30% и платим за это килобаксы, ставим спарки и т.п., а потом вешаем на всё это хозяйство Java и получаем downgrade в разы. Комментарии излишни.
Да, забыл ещё - для минимизации издержек можно толпу студентов первого курса кулинарного техникума нанять.

>на счет MTS - эт разве не MS Transaction server ??? эт чуть другое ...
Ой... Даже не знаю что сказать. А с термином dedicated server знаком?

>а то что нада знать с чем работаешь, эт бесспорно (хотя я люблю с порно), но когда правильно созданы бизнес объекты - они не меняются (от смены бд), меняется лишь методы их взаимодействия с бд.
Тебе бы надо в манагеры идти - это их любимые речи про EJB и J2EE как панацеи, про освобождение программистов от кодирования системного кода в пользу написания только бизнес-логики, про 100% pure код, который однажды написан работает везде, про получение информации где угодно и т.д. и т.п.
Ты про XML-гейты наверно не зря написал?

>конечно оракловый select for update не канает в mssql, конечно система блокировок будет другая, но на бизнес объекты это не влияет.
Очень влияет. Потому что всё равно SQL запускать они будут.
Почитай всё-таки Кайта.
Или просто сходи на asktom.oracle.com

>а уродцы не от 3-го уровня появляютя ..
Я не про третий уровень там говорил, а про "независимость от бд".
1С как раз яркий пример - написана для dbf, также перенесена на MSSQL. Как результат, файл-серверная логика на клиент-серверной машине.

>а от ошибок днк, я вот например плакал - инсерчу запись - там тригер, запускает каскадно еще 3, те еще по 2. половина из них кидают ексепшаны ... пол базы изменилось, разобратся что к чему без пол литра не возможно.
И про это Кайт тоже пишет. Одно изменение - одна транзакция. Что-то не так, откатил и всё.
...
Рейтинг: 0 / 0
Система с изменяющимися алгоритмами расчета.
    #32197635
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думаю флейм насчет 3-звена надо закрывать. Лучше я, если будет время, еще парочку решений сюда напишу, применяемых мной впервые, если кому интересно. Это реализация поддержки и обработки деревьев иеархии в БД, на которых держаться сами расчетные обьекты, плюс поддержка множественного наследования, на этом принципе сделаны расчетные маски, которые обозначают группу начислений и могут наследоваться от одного или нескольких родителей масок. Плюс могу описать реализацию хранения фактических отклонений значений обьектов от плановых значений - таким образом у меня реализована схема хранения учета табельного времени сотрудника, которая позволяет вместо того, чтобы на каждый день хранить информацию о сотруднике (что делал, сколько работал), хранить только отклонения от установленного ему плана работы, что приносит довольно таки ощутимую экономию пространства БД (к примеру допустим на 1 000 сотрудников храним 30 дней месяца: 1 000 * 30 = 30 000 записей в месяц, в моем варианте график для работы этих сотрудников расписан на 30 дней - 30 записей в кэше графиков, из 1 000 сотрудников 100 имели отклонения от плана работы, например бастовали 5 дней, вместо того, чтобы работать - в итоге 100 * 5 = 1000 записей). Результат на лицо. Причем для всех частей системы, в том числе клиентской и отчетной через ХП и вьюверы будут возвращаться полная раскладка дней их работы в месяце. Ну и еще много наверное чего в кач-ве паттернов сюда пописать можно ... было бы время и желание :)
...
Рейтинг: 0 / 0
Система с изменяющимися алгоритмами расчета.
    #32197937
Артем1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ASCRUS
Было очень интересно.
Ждем продолжения...
...
Рейтинг: 0 / 0
Система с изменяющимися алгоритмами расчета.
    #32198941
Фотография Циничный Кот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ASCRUS \r
\r
Все это (вышеописанное) конечно очень интересно и познавательно, но... Главный вопрос - а работает???...\r
\r
Почему я его задаю - читаем тут:\r
/topic/38191\r
\r
\r
\r
... проект, на который за полтора года только на зп уже и так не мерянно выкинуто денег, просто пойдет полностью им в убыток, не смогут они осилить по деньгам "поднять" не дописанный проект. Плюс еще постоянные изменение в законодательстве, которые приводят к тому, что крупные проекты, напрямую от него зависящие, по любому будут затягиваться, не зависимо от того, насколько полно было предусмотренны ситуации изменения постановки во время его разработки... \r
\r
\r
"...А основной функционал занимает 80% от всего обьема проекта. На данный момент как раз половина основного функционала и реализована..." \r
\r
\r
Я вот чего не понимаю - если мы имееем дело с полностью адаптивной системой, заточенной под любые мыслимые (вернее, под 99% мыслимых) изменениях в законодательстве, то почему тогда этот проект будет сильно затягиваться при оных изменениях? Если же изменения вызывают необходимость существенной переделок проекта - тогда вся прелесть того, что было описано, меркнет. Мы имеем кучу наворотов, от которых в результате непонятно какая польза.\r
\r
Касательно сроков проекта - я верю в то, что все программисты - оптимисты. Потому привык для получения достоверных оценок умножать предлагаемые сроки на 2-3. Что мы имеем в результате???... 5-летний проект, который к своему сроку окончания придется переписывать заново. По причинам вполне прозаичным.
...
Рейтинг: 0 / 0
Система с изменяющимися алгоритмами расчета.
    #32198980
Varivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Браво, ЦК. ИМХО, классический безнадежный проект, причем виноваты в нем не только заказчики (руководство), но и исполнители.
Из соотв. книжки по безнадежным проектам, проекты сроком на 2 года при недостаточном бюджете и сроках на 90% провалены с самого начала.
...
Рейтинг: 0 / 0
Система с изменяющимися алгоритмами расчета.
    #32198990
aag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну просто куда ни плюнь - всюду фанатики 3-х звенки лезут... :)

2 Циничный Кот
На самом деле, постинги читают ведь разработчики и проектировщики - которых интересует именно архитектурные и технологические решения. А не внедрение проекта, которое, кстати, может провалиться по разным причинам - необязательно из-за плохой архитектуры. А вот описанием технологии и архитектурных решений у ASCRUS полный порядок - логично, грамотно и понятно.

2 ASCRUS
Немного в сторону - а есть в вашей системе поддержка истории данных? Т.е., не аудит, а именно ведение истории. Напр., была Иванова, вышла замуж - стала с такого-то числа Сидоровой. Но в отчетах до этого числа - должна быть ФИО Иванова. Все известные мне пути решения (полноценного решения) довольно сложны и трудоемки.
...
Рейтинг: 0 / 0
Система с изменяющимися алгоритмами расчета.
    #32199010
Навеяло...

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

Код: plaintext
Имя_структурой_переменной -> метод (параметры)  //вам это ничего не напоминает? 


Смысл был в том, что в разные моменты времени или для разных структур это могли быть разные функции. Но вызов был по ссылке. И я точно так же делился радостью с друзьями програмерами и все говорил - оооо! как это круто. И это работало. И в то время это действительно было круто.

А с появлением С++ , с его виртуальными методами и поздним связыванием , мои изыски оказались ненужным и неуклюжим бредом, служащим единственно(!) для преодоления ограниченности инструмента , служащего для создания информационной модели ....мммм....предметной области.

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

Эй, ООБД - где вы?....
...
Рейтинг: 0 / 0
Система с изменяющимися алгоритмами расчета.
    #32199020
Фотография Циничный Кот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 aag

А вот описанием технологии и архитектурных решений у ASCRUS полный порядок - логично, грамотно и понятно.

Я с этим не спорю. Обратите внимание, что я просил уточнить некоторые вполне конкретные моменты, касающиеся гибкости и адаптивности системы.


Хотя. Хотя.

Имхо. Плох тот проектировщик/архитектор, который выпадает из контекста. Мне непонятно, зачем проектировать такую систему, которую априори полноценно не удастся реализовать. Причем с оговоркой - либо реализуем все (>80%), либо незачем и заморачиваться. Кстати, я еще ни разу не видел идеальных систем. Кто видел - поделитесь.
...
Рейтинг: 0 / 0
Система с изменяющимися алгоритмами расчета.
    #32199047
Varivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Согласен с ЦК. Попытки создать идеальный продукт еще ни у кого успехом не заканчивались.
...
Рейтинг: 0 / 0
Система с изменяющимися алгоритмами расчета.
    #32199113
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот я и добрался до дома :) Бум отвечать по порядку.

aag
Ведение истории есть. По ФИО не ведется, так как в самой постановке задаче это не востребованно. В тех же частях, от которых зависят расчеты и отчетная часть история обязательная часть проекта (например история изменения тарифной сетки, подоходнего налога, налоговых вычетов, учета табельного времени, наименования и значения кодов дохода и т.д.). Там, где данные могут изменяться задним числом история ведется с учетом изменения задним числом. Как ни странно, но по постановке фактически в 80% случаев требуется история изменения информации, из них 50% с учетом изменения задним числом. Причем в некоторых случаях даже смешно получается - например как оказалось дата увольнения задним числом сотрудника очень даже часто встречающаяся вещь в мире расчетчиков зп. Проект я бы не сказал, что сильно усложнен, так как на ведение истории на любую часть данных и особенно задним числом, я очень тщательно взвешивал все за и против, консультируясь с постановщиками, сопровожденцами и клиентами и анализируя все случаи уникальных отклонений от постановки. То есть грубо говоря при проектировке я старался задействовать только общие случаи, чтобы реализовать частный случай какого то усложнения в системе народу приходилось очень долго мне обьяснять и доказывать, что он востребован. Далее с учетом архитектуры БД если отклонение было единичным случаем в практике сопровождения старого проекта заработной платы и при желании его всегда можно было дописать в систему, не изменяя архитектуры, я фиксировал у себя как возможно не решенную проблему дополнительного характера и пропускал ее реализацию. Иначе проблема приравнивалась к блоку основного функционала, проектировалась и реализовывалась в архитектуре БД. Для поддержки в системе данных с историей существует 2 типа вьюверов - возвращающие информацию на текущий расчетный месяц и возвращающие информацию на указанный расчетный месяц (в MSSQL эту функцию выполняли UDF, в ASA UDF не могут возвращать набор данных, зато есть поддержка глобальных переменных и вьюверы могут на них ссылаться. Я их для удобства называю параметризированными вьюверами).

Пример вьювера, возвращающего последние значения тарифных ставок (последние, потому что в течение месяца ставка может поменяться и плюс ставка может измениться задним числом) , действующие на текущий расчетный месяц:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
ALTER view v_SalaryValue_Current ()
 -- Вернуть текущие значения окладов и тарифов
 
as
  select sv.Salary_id, sv.WorkDate, sv.SalaryValue, sv.TarifValue
  from SalaryValue sv
    inner join (
      -- получаем последние даты действия
 
      select svw.Salary_id, svw.WorkDate, Max(svw.SaveDate) as MaxSaveDate
      from SalaryValue svw
        inner join (
          -- получаем последние даты изменения
 
          select Salary_id, Max(WorkDate) as MaxWorkDate
          from SalaryValue
          where SaveDate <= @@CalcDate and
                WorkDate <= @@CalcDateLast
          group by Salary_id
        ) as svs on svs.Salary_id = svw.Salary_id and 
                        svs.MaxWorkDate = svw.WorkDate
      where svw.SaveDate <= @@CalcDate
      group by svw.Salary_id, svw.WorkDate
    ) as svm on svm.Salary_id = sv.Salary_id and 
                     svm.MaxSaveDate = sv.SaveDate and 
                     svm.WorkDate = sv.WorkDate

Такой вьювер стабильно вернет последние значения всех действующих ставок на текущий расчетный месяц, учитывая момент, что они могли быть изменены задним числом. Поле WorkDate означает начало действия тарифа, SaveDate месяц его ввода, в кач-ве конца этих дат выступают более старшие по времени даты. @@CalcDate и @@CalcDateLast - глобальные переменные, доступные в любой сессии к БД и хранящие первый и последний день текущего расчетного месяца (глобальных переменных в БД много и они автоматически инициализируются сразу при подключении соединения на уровне СУБД. Есть даже переменные флаги признака наличия супервизорских прав или отладочного режима для текущего соединения).

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

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

Далее больше пойдет для Циничный Кот
Меня можно обвинить в усложние постановки, однако изначально задача ориентировалась как тиражный продукт, распостраняемый по многим уголкам страны (есть очень крупные заказчики на Севере, есть в Москве, есть и на Юге). Согласитесь при таких условиях изначально к проекту предьявлялись следующие требования: скорость из за крупности многих заказчиков, многофункциональность из за различной специфики работы во многих отраслях и легкость в сопровождении из за географической удаленности клиентов.

Если бы меня наняли делать калькулятор для расчета зп в мелких конторах с численностью до 500 человек, то я бы просто на такой проект и не согласился по той причине, что написано их предостаточно и ничего интересного в кач-ве опыта проектирования БД я бы для себя не приобрел.

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

Varivan
Книжек про безнадежные проекты читал не мало и кстати имею опыт в построении сложных систем, даже с недостаточной постановкой или ограничением ресурсами. Всего мной за 12 лет работы было написано 3 крупных проекта, каждый писался порядка 2 лет и прошу заметить они все до сих пор работают без моего личного участия. В той ветке форума я высказал опасения действиями своего руководства, игнорирующими изменения в условиях написания проекта. Проект я не могу считать безнадежным по следующим причинам:
1. Не смотря на нежелание выделить дополнительные ресурсы для форсирования проекта, фирма кровно заинтересована в его написании, так как старый расчет зп написан на ДОСовом Си, работает у кучи клиентов, использует для работы 640 кб (ох и времечко веселое было :) ), уже сложно поддается сопровождению и постоянно висит угроза увольнения программиста, его сопровождающего, так как рано или поздно все это ему надоест.
2. Фирма работает еще в другой отрасли и дела там пошли не самым лучшим образом (потери крупных клиентов), наверное из за излишней самоуверенности руководства, что означает востребованность в конторе достаточного крупного и перспективного проекта в кач-ве тыла.
3. Не смотря не на что мы пережили смену руководства, деньги нам платят исправно, желание писать проект не остыло.

Фактически если дословно привести сообщения с форума Работы я в соотвествующем форуме заметил, что мои работодатели явно странные люди, если видя что их основной на данных момент проект рушиться, вместо того, чтобы форсировать разработку запасного варианта, забирают у меня сотрудника, который отвечал за разработку отчетов и начинают перекидывать все материальные и людские ресурсы на гибнущий проект, периодически все таки выхватывая людей из команды зп на свои нужды. В итоге их проект поглощает все как черная дыра и продолжает исправно тонуть по той простой причине, что писался по той формуле, которой тут многие и советовали - сляпать за полгода основной функционал, запустить и потом дорабатывать. Так все и было - за полгода было сляпано нечто, изначально с не продуманной архитектурой, что потом в течении 4 лет исправно обрастало притыками и заплатками. Теперь условия постановки изменились, плюс я бы сказал был достигнут некий критический предел, когда приткнуть там уже новую функциональность не куда и проект при попытке его переработке просто "рухнул". Я бы на такие проекты вешал табличку - "Не трогай, а то упадет". Сразу вспоминается анекдот про отца-программиста, сына и солнце.

Лично я могу поручится за любую часть проекта, что она спроектирована правильно, с учетом постановки задачи и стоит на золотой середине между фунциональностью и универсальносью. Может с точки бизнеса, как кстати думают многие, в том числе и мое руководства, главное чего то впихнуть клиенту, а потом драть деньги и латать систему, заставляя сопровождающих ее людей совершать героические поступки под крики "Срочно, но я как разработчик проектов стараюсь помнить о том, что после того, как я его напишу и запущу, на нем долго и кропотливо будут работать его сопровождающие программисты и мне не хотелось бы, чтобы они вспоминали меня и мою мать, я же не Билл :)

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

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

Завтра постараюсь описать вышеобещанные мною реализации частей проекта, если конечно время позволит. Спасибо за участие и критику тоже (только желательно конструктивную) :)
...
Рейтинг: 0 / 0
Система с изменяющимися алгоритмами расчета.
    #32199128
Varivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ASCRUS

Всего мной за 12 лет работы было написано 3 крупных проекта, каждый писался порядка 2 лет и прошу заметить они все до сих пор работают без моего личного участия

Я не знаком с Вами лично и не знаю о ваших прошлых, так и нынешних работах, что не позволяет мне судить о Ваших профессиональных качествах. Свое ИМХО я высказал только в отношении описанной Вами ситуации.

Проект я не могу считать безнадежным по следующим причинам: ....

никому здесь не видна ситуация настолько, что бы делать какие-либо серьезные утверждения. Правы вы или нет покажет время и только оно :)

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

эх, интересно бы узнать мнение работодателей... Наврняка они много интересного сказали бы. Мечты, мечты.....

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

Никто Вас и не обвиняет (или кто-то есть? отзовись, я первым брошу в тебя камень!). Для того что бы судить об эффективности тех или иных решений (в т.ч. технических) нужно как минимум провести их полный аудит. А это не одна неделя работы и не забесплатно.

Еще раз подчеркну, что мое ИМХО было высказано не в отношении Вас, а в отношении описанной Вами ситуации, так как она воспринилась. ПРошу прощения, если задел Вас лично :))

Кстати и з ваших постингов можно только догадыватья: Вы делает проект "под конкретную компанию" или в софтверной фирме, которая разработанный софт потом продает?
...
Рейтинг: 0 / 0
Система с изменяющимися алгоритмами расчета.
    #32199148
c127
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 ASCRUS

Сколько человек участвует в проекте?
...
Рейтинг: 0 / 0
Система с изменяющимися алгоритмами расчета.
    #32199159
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Varivan
Обижатся я не стал, просто уточнил, чтобы меня воспринимали с "правильной" должности. Но все равно спасибо за извинение, всегда приятно видеть на форуме людей старающихся вникнуть, тем более меня оценка этого проекта другими специалистами очень интересует. Можно сказать что этот проект для меня еще является не только хорошим повышением опыта и квалификации, но и некой готовой реализацией сложной самодостаточной и не зависимой архитектуры БД, на основе которой после запуска проекта, я хотел бы потом проверить собственные теории создания системы моделирования баз данных, основанной на абстракциях, ассоциациях и реализующую 3 модели описания БД - абстрактную, логическую и физическую. Наверное именно по этому постановка разрабатываемого проекта меня заинтересовала и я решился взяться за его разработку.

Теперь отвечу:
Проект считается тиражным продуктом, который продается и сопровождается, разрабатывается все это в софтверной компании.

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

В принципе я выяснил уже после старта проекта, что до меня на протяжении 3 лет уже предпринимались 2 попытки переписать проект, в том числе и программистом, сделавшим старый ДОСовый расчет и отлично знающим все ньансы постановки. Где то после года-полтора работы проекты умирали по причине их ступора. Я раскопал эти проекты и проанализировав их остановку пришел к выводу, что главная их ошибка была в том, что проектирование велость модульно, т.е. по ходу работы, в итоге где то как раз через год работы после разработки соотвествующих входящих форм разработчики этих проектов упирались в сам расчет заработной платы и там дело и останавливалось по причине того, что структуры БД проектировались с соотвествующих входящих данных без учета взаимодействия с расчетной частью и связи с другими частями системы. Это приводило к тому, что при такой архитектуре расчеты должны были реализовываться курсорами и ветвлением, как и в старой зп, что приводило к тормознутости системы, или же при попытке использования для расчетов SQL разработчики сталкивались с сложным доступом к данным, используемых расчетом и не имея достаточно опыта не могли написать реализацию.

Если вспомнить, что в моем проекте за те же полтора года уже реализованы основные виды начислений, введена поддержка их расширения на основе разработанной мной технологии паттернов ХП, позволяющей даже не подготовленным пользователям вводить в систему собственные довольно сложные алгоритмы премий и постоянных начислений, плюс считается подоходний налог, полностью готовы авансовые и межрасчетные выплаты, сделан описанный выше движок расчетов, позволяющий в виде ХП описывать логику расчетов ЗП, разработаны интерфейс, компоненты, и иеарии классов клиентской части для облегчения ее написания, сейчас вот дорабатываю иеархию классов отчетной части на PB, на основе которой собран генератор отчетов системы, плюс уже есть серия отчетов, то согласитесь по сравнению с моими предшественниками за указанный срок работа проведена не малая. Даже с учетом того, что на разработку в общей сложности движка расчетов БД ушло 3 месяца, ядра клиентской части порядка месяца, а ядра генератора отчетов пол-месяца овчинка стоила выделки, сейчас любой сложный режим элементарным образом реализуется в серверной, клиентской и отчетной части - причем прошу отметить, что мои решения не конфликтуют со стандартами используемых средств, а наоборот активно их используют. Также на многие замечания постановщиков и внедренцев насчет возникающих у них сейчас проблем при сопровождении и изменении старой зп и просьбой учесть это в новой зп, мне остается пожать только плечами и заявить, что сделать я это не могу, так как с учетом реализованной архитектуры БД у меня таких проблем просто не существует.

Кстати очень большое внимание в проекте было уделено контролю правильности ввода информации и это позволило снизить затраты на разработку расчетной части, гарантировать истинность информации и снизить будующие затраты на сопровождение продукта. Ипользовался тезис "Лучший способ контроля данных, это не давать совершать ошибки пользователю". Так что в системе нельзя изменить ничего за закрытые периоды, только если позволено в рамках системы задним числом. Нельзя влепить забастовку на период больничного и т.д. Например я споектировал архитектуру регистрации документов, которую начну делать после дописания генератора отчетов, контролирующую выдачу ведомостей строгой отчетности и условия участия в них сотрудников, по которым например сотрудники вошедшие в одну ведомость не имеют права входить в другую. Вроде бы явное излишество, но на самом деле такой контроль позволит программе знать реальные даты выплат и перечислений сотрудникам, плюс разгрузит режим депонирования ошибочно включенных в ведомости сотрудников и печальные походы расчетчиков зп в банк с депонируемой суммой и кучой бумажек.

Если учесть все вышесказанное, то получается, что по постановке проект реализован чуть более половины, а по разработке технологий и решений встречающихся в его постановке проблем на 80% (оставшиеся 20% это системы экспорта данных и конверторы). Так что срезать что то и уж тем более резво запустить такой проект с учетом постановки и уже реализованного функионала уже не реально. Сама архитектура БД не позволит использовать ее как БД под примитивный калькулятор и любое дописание функционала проекты по любому просто будет обязанно придерживатся разработанных нотаций и правил системы.

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

c127
С учетом того, что у меня наглым образом отняли человека, сейчас нас два программиста, плюс 3 сопровождающих старую зп и выступающими консультантами, плюс девушка программистка со старой зп, выступающая консультантом и тестером, плюс 2 постановщика бухгалтера. Все кроме нас естественно не задействованны постоянно в проекте и привлекаются по мере надобности. Я получается являюсь головой проекта, на мне полностью БД и ядро и утверждение интерфейса клиентской части, плюс системные функции и иеархии обьектов генератора отчетов . Мой коллега держит на себе написание форм и логики клиентской части, и теперь разработку отчетности, раз нас стало двое. Вообще в общей сложности у меня "отняли" уже троих человек, причем один из них (главный постановщик и бывший программист-сопровождающий старый проект) уехал в Австралию, другой (программист) после полгода работы устроился на прекрасно оплачивуемую работу, теперь вот еще человека перевели на другой проект. Я конечно ничего против не имею, если народ решил уйти, но ведь нельзя же на освободившиеся ставки набирать сотрудников на работу в другом проекте, а потом иногда невинно у меня спрашивать - "Когда деньги то лопатой грести будем?". Я как человек честный предупреждаю конечно о возможных последствиях таких вольностей, когда общая численность старой и новой команд зп вместо бывших раньше 80% сотрудников конторы теперь занимает 5% от общего числа ее сотрудников, но все равно согласитесь не приятно, если руководство угробит фирму или проект, и мне придется делать выбор между уволиться и обьяснять на новом месте работы, что мне помешало запустить проект или же найти заинтересованных лиц и продолжать разработку проекта, раз уж так много сделано.
...
Рейтинг: 0 / 0
Система с изменяющимися алгоритмами расчета.
    #32199162
папа Карло
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нда..... почитал я..... все конечно весело. но лучше бы ты куски кода не постил. :) создается впечатление о менстре с запиханой бизнесс логикой в БД. Это плохо. то, что трезвенки не работают так же быстро... я расскажу тебе одну байку которую мне рассказал препод у которого я давно-давно диплом писал. он поехал на конференцию по оптимизации алгоритмов для показа чего-то своего нового. там из зала один проффесор шутник заржал в голос и сказал что показанный алгоритм выполняет решение систмы из 5ти уравнений за 1000 итераций, а его за 27. на что евгеньич не моргнув глазом спросил за сколько его алгоритм расчитает систему из 6 и 7 уравнений? у мужика началась "рекурсия" и выяснилось что для 7 уравнений у него получалась такая "экспонента" что "уже почти ничего не решалось", а у евгеньича 7 уравнений решалось за 1004 итерации. вот и и вся байка. рассказываю я это потому что мой последний большой проект был именно так и построен. он изначально был построен так чтобы работать "медленно" сначала. медленно = отклик в районе 1 секунды через интернет при размере базы в террабайты. система распределенная. когды вы говорите что логика начинает лезть на третий уровень я так понимаю вы имеете ввиду юзер интерфейс? если это так, что я скажу, что вы просто системы проектировать наверное не умеете. не умеете делать правильного распределения между слоями. юзер интерфейс отвечает только за презентацию обычно. есть бизнес логика и есть дата логика. последняя идет в базу, первая на business logic layer (я специально написал layer = абстракция).

и дву и трезвенки имеют свои приимущества. для маленьких задач на 1000 работников с зарплатой трезвенка может и не нужна. только если сегодня у тебя 1000, а завтра 100,000 пользователей то система "приедет". все конечно решится большими деньгами за железо как всегда. но в том то и крутизна делать мощную систему из "говна" извините. вон гугл работает на 48 компутерах. вы это замечаете когда им пользуетесь? то-то....


Удачи на дорогах!
...
Рейтинг: 0 / 0
Система с изменяющимися алгоритмами расчета.
    #32199163
папа Карло
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гугл работает на 486 компутерах имеось ввиду...
...
Рейтинг: 0 / 0
Система с изменяющимися алгоритмами расчета.
    #32199321
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
папа Карло
Ну во первых я не Буратино, чтобы так запросто переходить на ты, даже не познакомившись.

Во вторых я все таки не понимаю 3-звенщиков, которые всегда уверены, что они смогут написать сложную обработку данных быстрее, чем это реализовано на СУБД. То ли они не признанные гении, то ли просто никогда с SQL не работали. Если Вы действительно прочитали всю ветку, то правильно решили, что вообще все происходит именно в БД и от клиентской части никак не зависит. Так же можно было бы обратить внимание, что вся логика спроектирована и реализована посредством выборок, курсор в БД проекта - это исключение из правил и применяется в крайних, важно необходимых случаях. Плюс выше уже обсуждалось, что в такой задаче запросы всегда будут выполняться быстрее, так как увеличение обьема хранилища данных для выборок будет автоматически оптимизироваться на уровне СУБД, в случае же с отдельным звеном приведет к увеличению кол-ва обращений к БД и увеличению цикла расчета. И при чем тут железо не понимаю ? Зачем делать медленно для большинства заказчиков с обьемом расчитываемых данных (общий случай), чтобы потом это работало быстро на некоторых заказчиках с крупным обьемом данных (частный случай) ? Вы знаете, что те, у кого работают от 50 000 сотрудников не настолько бедны, чтобы не поставить себе нормальное железо, не заморачиваться, а заодно при желании купить и контору, сделавшую продукт в кач-ве бонуса сопровождения ?

P.S. Кстати - на вопрос данной темы я ответил полностью, раскрыв методику реализации системы с изменяющимеся алгоритмами расчетов и работающих за определенные периоды времени, реализованную с использованием только средств SQL сервера. Может быть 3-звену хватит меня критиковать и описать свои способы решения этой задачи с помощью их методологий ? Будет интересно посмотреть и сравнить, а уж полезно всей общественности, предпочитающей все равно сколько звеньев :) Так что с нетерпением жду описание реализации любой похожей на заданные условия задачи ....
...
Рейтинг: 0 / 0
Система с изменяющимися алгоритмами расчета.
    #32199337
папа Карло
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я правильно понял, что при появлении третьего уровня появляются курсоры? :) мой опыт такой. система за 20млн. юс. я делал бакэнд. курсоров практически нет (из 5000 СПшек может 20-40 имеют курсоры, и то только по тому что написаны китайцеми которые кроме бейсика ни о чем понятия не имели на тот момент). никогда большую систему не буду делать по тому принципу что сделана ваша зарплата. дело в том, что лизинг кластерного апплекейшен сервера стоит 375 доллраов в месяц, лизинг кластерного датабаз сервера с тем-же числом процов и памяти и единственным отличием raid10 стоит 3500 долларов в месяц. также надо учитывать что мы легко можем поставить произвольное число аппликейшен серваков обычно и забалансить их балансерами. обычно существует одна база (или несколько если есть партишенинг) при этом база все равно остаетс разделяемым ресурсом. теперь берем и смотрим насколько база стала медленее при переносе на нее (части) бизнесс логики. скажем на 10-30% при этом вместо 100000 оп. в минуту она будет делать 80000 операций. следовательно при наращивании мощности и нехватки производительности мне надо снова платить деньги. большие деньги за датабаз сервак и это при условии что был сделан партишенинг вначале. также известно, что увеличении прибыли идет за счет уменьшения издержек, а не зчет увеличения продаж. :) отсюда систему надо строить с минимальным ТСО и линейной стоимостью за масштабируемость.


получилось немного сумбурно.... но как есть. :)
...
Рейтинг: 0 / 0
Система с изменяющимися алгоритмами расчета.
    #32199338
папа Карло
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на счет ты извините, плохая фидошная привычка. :)
...
Рейтинг: 0 / 0
Система с изменяющимися алгоритмами расчета.
    #32199411
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Угу, извиняю :)

Кстати насчет абстракций - если рассматривать SQL, то абстрактней языка запросов ничего нет, так что Вы зря его называете кошмарным. Фактически я описываю на нем задачу, реализация же на выборку и обработку данных полностью ложиться на плечи СУБД. Если в новой версии СУБД производитель добавит новые технологии оптимизации обработки данных, мне ни на йоту не придется ничего переписывать и если бы в свое время производители СУБД не "поехали" в разные стороны, расширяя кто как хочет стандарт SQL, то скрипты БД были бы полностью абстрактны и в отношении любых серверов СУБД.
...
Рейтинг: 0 / 0
Система с изменяющимися алгоритмами расчета.
    #32199446
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще дополнение - зп не большая, а сложная система. У любой системы должны быть границы. Чисто теоретически я мог бы изначально проектировать зп для расчета заработной платы всех жителей Китая, но такой задачи слава тебе господи и не ставилось :) Я же не утвержал, что всю бизнес-логику буду запихивать для биллинговых например систем. Я пытаюсь сказать другое - нельзя кидаться из крайности в крайность и проектировать задачи надо согласно фактическим требованиям системы, а не теоритическим "вот если". Если система будет большая и распределенная, то я согласен, в таких условиях по стоимости и скорости многозвенная архитектура катит. Если система со средним обьемом данных и вписывается в пределах реализации бизнес-логики на СУБД, то и не за чем огород городить. Однако у нас полно народу, которые насмерть стоят и все программируют в одном русле. Причем когда пытаешься выяснить мотивацию, то оказывается, что просто по другому программировать не умеет. Я тоже могу сказать, что не буду делать свои системы, как Вы и только по тому, что специализируюсь в своей области, а Вы в своей. Все логично и правильно - у меня хватает ума не брать проекты, которые явно требуют многозвенной архитектуры, Вы не связываетесь с проектами, где многозвенка явно не нужна. Соотвествующе и критиковать Вас или меня бестолку - у каждого своя ниша работы, обе технологии имеют право на жизнь. С другой стороны согласитесь описанный мой способ реализации расчетных алгоритмов просто и удобен и даже в многозвенной структуре при желании он может найти свое применение. Никто же не говорил, что технологии обработки данных не могут перемешиваться и обязательно должны быть чистыми.
...
Рейтинг: 0 / 0
25 сообщений из 159, страница 2 из 7
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Система с изменяющимися алгоритмами расчета.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]