powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / XP-программирование и 2-х звенные приложения, насколько реально ?
6 сообщений из 6, страница 1 из 1
XP-программирование и 2-х звенные приложения, насколько реально ?
    #32743561
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую вас уважаемые коллеги. Хотелось бы обсудить думаю для многих насущный вопрос - как ускорить разработку проектов, в различных неблагоприятных условиях, свидетельствующих в пользу безнадежных проектов. Это может быть недостаток финансирования, отсутствие опыта у членов команды, невозможность получения полного и актуального ТЗ, постоянное динамическое изменение ТЗ, отсутствие в команде профессиональных проектировщиков и тестеров, отсутствие у заказчика полного понимания функциональности поставленной задачи и т.д. и т.п. В общем все то, что даже в крупных конторах с большим составом команды частенько приводит к пробуксовке проекта, увеличении в геометрической прогрессии времени разработки, большой текущести кадров, недовольству заказчика, потере качества проекта, приводящей к его разбуханию во время разработки или сопровождения, а то и просто смерти проекта.

Конечно руководитель проекта может насколько это возможно обезопасить себя, выбрав для реализации наиболее гибкие и функциональные средства для разработки проекта. Однако думаю все со мной согласятся, что РСУБД с SQL и RAD-системы, основанные на ООП не самые лучшие друзья и при любых изменениях вполне быстро можно привести в состояние частичной или полной неработоспособности как клиентскую, так и серверную часть.

На текущий момент одной из самых перспективных насколько я понимаю методологий проектирования является экстремальное программирование (XP). Штука хорошая и действительно показывает прекрасные результаты. Однако есть одно большое "НО" - эта методология предполагает наличие одной среды и одного языка разработки проекта, причем желательно обьектно-ориентированного. В случае 2-х звенных клиент-серверных приложений по схеме "Тонкий клиент-Толстый сервер" это дает существенные затруднения для ее использования. В случае 3-х и более звенных приложений проблем с использованием XP не возникает, однако появляется ряд других, желательно не обсуждаемых здесь проблем (вернее обсуждаемых, но в форуме "Сравнение СУБД").

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

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

2. Проектирование абстрактных режимов серверной части. Проектирование форм ввода входящих данных и отчетных форм и бизнес-логики интерфейса, посредством вызовов абстрактных режимов серверной части.

3. Сдача в опытную эксплуатацию реализованных режимов заказчику с последующей коррекцией по найденным ошибкам и несоответствиям ТЗ.

4. Реализация физической модели базы данных (структуры входящих и исходящих данных, бизнес-логики целостности данных и расчетной части), а так же дополнений к клиентской части. Перевод абстракций в состояние привязки к реализованной физической структуре БД.

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

В данном случае можно сказать я попытался обьединить идеи XP и не так давно обсуждаемого на SQL.RU продукта FileMaker, который даже не поленился скачать и посмотреть. Вкратце о достоинствах предполагаемой методологии:

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

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

Цикл разработки команды проекта имеет параллейный характер работы «Клиент-Программист клиентской части-Архитектор БД», где во время любой точки реализации проекта все члены команды (включая клиента) всегда должны работать вместе и не возможно возникновение ситуации, что один из членов команды зависит от другого, ждет окончания его работы или вынужден корректировать собственную часть из за ошибок в другой (кроме ошибок ТЗ).

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

Вот вкратце мое видение технологии XP на РСУБД. Хотелось бы обсудить с увлекающимися подобной "чепухой" коллегами достоинства и недостатки этой модели и провести ее коррекцию в более правдоподобный вид. Я специально нигде не упоминал про используемые платформы, так как считаю что до обсуждения реализации еще дело не дошло и скорее всего для каждой платформы будет своя, уникальная реализация. Так что допустим, что в обсуждении данной технологии мы будем ориентироваться на некоторую абстрактную СУБД, поддерживающую представления, хранимые процедуры и триггеры, а так же любое RAD средство, позволяющее быстро по вызову ХП построить визуальное представление возвращаемых ею данных и организовать сохранение изменяемой информации через ХП. Это вполне могут быть связки MSSQL + Access/VB/C#, Oracle+Java, ASA+PB и т.д.

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

Буду рад любым мыслям в этой области по XP для 2-х звенных приложений. Если никто не будет против и эта тема не перерастет в какой нибудь очередной флуд, то по мере сил и возможностей своих буду дальше сюда выкладывать свои идеи на эту тему :)

Засим разрешите откланяться, нужно все таки пойти чуть поспать :)
...
Рейтинг: 0 / 0
XP-программирование и 2-х звенные приложения, насколько реально ?
    #32744462
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На прежнем месте работы мы проектировали логику набором сущностей. Каждая сущность - это класс. Но довольно абстрактный, так как состоял из различных объектов связанных между собой только логически.

После этого определялись конкретные объекты сущности
Например, сущность Накладная состояла из нескольких таблиц, нескольких форм и нескольких операций.

И поскольку сначала все это делалось на бумаге, проблем не было.
...
Рейтинг: 0 / 0
XP-программирование и 2-х звенные приложения, насколько реально ?
    #32745612
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Old NickНа прежнем месте работы мы проектировали логику набором сущностей. Каждая сущность - это класс. Но довольно абстрактный, так как состоял из различных объектов связанных между собой только логически.

После этого определялись конкретные объекты сущности
Например, сущность Накладная состояла из нескольких таблиц, нескольких форм и нескольких операций.

И поскольку сначала все это делалось на бумаге, проблем не было.
Речь немного о другом. Я не пытаюсь здесь рассмотреть способы разработки приложений, я пытаюсь подружить сам процесс разработки клиент-серверных приложений с экстремальных программированием. Вот например по Вашему примеру все равно возникает множество вопросов:
1. Как определялись аттрибуты и взаимосвязи сущностей - по готовому ТЗ или в ходе работ ?
2. Сколько человек участвовало в разработке сущности, могли ли эти люди взаимозаменять друг друга и если могли, достаточно ли у всех было квалификации для проектирования БД ?
3. Принимал ли непосредственное участие в ходе работ заказчик ?
4. Насколько быстро можно было запустить в опытную эксплуатацию сделанный проект у заказчика, кем и как осуществлялось тестирование ?
5. Как происходила сборка сущностей и связей между ними ?
6. Как осуществлялась реализация сложных расчетов и отчетных выходных форм ?
7. На каком этапе работ выявлялись неточности, несоотвествия и изменения ТЗ по отношению к проекту, что предпринималось, если из за изменений в ТЗ нарушались характеристики сущностей и связей между ними, производился ли рефакторинг кода и как потом тестировались изменения ?

В принципе тут я задал все технические вопросы, на которые экстремальное программирование имеет четкие и ясные ответы. Так же существует ряд психологических аспектов - смена членов команды, их разный уровень квалификации, узкая специализация, отсутствие знаний в предметной области с присутствием повышенной фантазии и т.д. Это тоже вопросы, которые имеют исключительное влияние на успешность разработки крупного проекта и на них тоже экстремальное программирование дает более менее четкие ответы. Поэтому я сейчас и пытаюсь на базе экстремального программирования сформировать некоторые концепции и разработать вспомогательное ПО и компоненты, позволяющие превратить для команды процесс разработки проектов в быстрое, безболезненное и даже играбельное занятие, а мне как руководителю проектов сосредоточиться на контроле процесса и кода сверху, подтягивании уровня команды (обучению методикам программирования) и вмешиваться только в случаях дипломатической необходимости между членами команды и заказчиком, или же при пробуксовке команды на сложных алгоритмах.
...
Рейтинг: 0 / 0
XP-программирование и 2-х звенные приложения, насколько реально ?
    #32746076
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASCRUS1. Как определялись аттрибуты и взаимосвязи сущностей - по готовому ТЗ или в ходе работ ?
2. Сколько человек участвовало в разработке сущности, могли ли эти люди взаимозаменять друг друга и если могли, достаточно ли у всех было квалификации для проектирования БД ?
3. Принимал ли непосредственное участие в ходе работ заказчик ?
4. Насколько быстро можно было запустить в опытную эксплуатацию сделанный проект у заказчика, кем и как осуществлялось тестирование ?
5. Как происходила сборка сущностей и связей между ними ?
6. Как осуществлялась реализация сложных расчетов и отчетных выходных форм ?
7. На каком этапе работ выявлялись неточности, несоотвествия и изменения ТЗ по отношению к проекту, что предпринималось, если из за изменений в ТЗ нарушались характеристики сущностей и связей между ними, производился ли рефакторинг кода и как потом тестировались изменения ?


Как-то я уже описывал этот процесс, но к сожалению в поиске не нашел. Напишу снова.

Аналитик общалась с менеджерами и выяснала какая нужна функциональность и в каком виде. Затем рисовала примерные формы и описывала словами алгоритмы действий.

Руководитель проекта в ходе раздумий определял какие нужны сущности для реализации данной логики. Иногда подключал к процессу ведущего.

Затем совместно с ведущим определяли атрибуты и методы сущности.

Ведущий программист писал ТЗ в котором конкретно описывал какие нужны таблицы, с какими полями, какие формы с какими контролами и как все это должно работать. Причем в ТЗ указывалось и название таблиц и название атрибутов и названия юнитов форм и т.д. и т.п. Даже написано было куда класть исходники. (Весь код SQL разрабатывался в Visual Studio 6.0 и хранился в строго регламентированном месте).

И после всего этого кодеры просто сидели и кодили реализацию не вникая особо в то, что это будет.

Потом ведущий проверял реализацию сущностей (тестировал)

А руководитель проверял логику взаимодействия сущностей.

Менеджеры тестировали на предмет соответствия пожеланиям.
...
Рейтинг: 0 / 0
XP-программирование и 2-х звенные приложения, насколько реально ?
    #32747764
Артем1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет. Вряд-ли скажу чего полезного. Просто мои мысли по этой теме.

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


Архитектор вполне может работать в паре с ведущим разработчиком.
Зачем ему работать в паре с программистом клиентской части?
Разработчики клиента будут работать в паре друг с другом.
Другое дело, если на каждую должность есть только по 1-му человеку,
но это по моему не ваш случай. :).

ASCRUS
То же самое касается принципа "Не использовать пока не понадобиться", который не очень соотносится хотя бы с правилами нормализации форм и оптимизации запросов.

Здесь не очень понял, можно пример?


ASCRUS
Однако мне кажется большая часть XP все таки удачно ложиться на 2-х звенки и при должной выработке правильной методологии есть шанс начать использовать этот перспективный способ разработки приложений.

Здесь согласен полностью.

ASCRUS
1. [skip] OK
2. [skip] Ok
3. Сдача в опытную эксплуатацию реализованных режимов заказчику с последующей коррекцией по найденным ошибкам и несоответствиям ТЗ.


Насчет не соответствия ТЗ. Думается, при несоответствии ТЗ рановато
сдавать в опытную эксплуатацию. :) Или имеется в виду неодинаковое
понимание ТЗ заказчиком и разработчиком?

Далее со всем согласен.

ASCRUS
Цикл разработки команды проекта имеет параллейный характер работы «Клиент-Программист клиентской части-Архитектор БД», где во время любой точки реализации проекта все члены команды (включая клиента) всегда должны работать вместе и не возможно возникновение ситуации, что один из членов команды зависит от другого, ждет окончания его работы или вынужден корректировать собственную часть из за ошибок в другой (кроме ошибок ТЗ).

Есть мнение, что для этого придется потратить много времени на написание
большого кол-ва заглушек. хотя может я и ошибаюсь.

ASCRUS
На текущий момент например у меня по диаграмме возникла серия вопросов:
а) Стоит ли при разработке визуального представления и прототипа хранения данных в БД сразу закладываться на проектирование постоянной для проекта таблицы, имея ввиду, что если прототип (таблица) пройдет опытную эксплуатацию и не будет иметь изменений в пункте 5 (физическая реализация), то значит он не требует доработок и его можно считать полноценной физической реализацией в БД.


Не понял, какая есть альтернатива? По моему именно так и надо.

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


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

ASCRUS
в) Стоит ли задумываться о создании или использование существующего ПО, частично или полностью автоматизирующих этапы разработки проекта или же не заморачиваться и проводить реализацию проверенными дедовскими методами.

Я думаю, что стоит задуматься о разработке чего-нибудь типа SQLUnit для
тестирования. Зная ваш опыт в разработке всяких полезных фич для
ASA, думаю, это будет несложно.
...
Рейтинг: 0 / 0
XP-программирование и 2-х звенные приложения, насколько реально ?
    #32747867
Репликант
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ASCRUS:
XP-программирование и 2-х звенные приложения, насколько реально ?

Реально. Если ты еще вдруг не спрашивал на XProgramming.ru, то вот несколько полезных топиков на тему разработки приложений БД:

XP не применимо для 2-х пр. Client/Server на РСУБД
  (логика на РСУБД сервере, а значит на ХП и тригерах....)

СУБД - Oracle. Клиент - Oracle Forms.
  (надо переработать/разработать некую часть ( почти всю ) системы.)

XP и web-проекты
  (к применять/адаптировать концепцию автоматического тестрирования,... )

Delphi, DBGrid, Dataset - что и куда рефакторить?

XP в веб-технологиях.
XP и 1С
  (Разрабатываю конфигурации для 1С)
...еще на тему проектирования:

Есть ли/Нужно ли проектирование в ХР?

Так что первично - код или дизайн?
  (системная метафора, спайки, итерации и т.п)

XP не подразумевает дизайна?

аналитику есть место
 \t(только он является внешним действующим лицом для XP команды. он заказчик.)

Местные топики на тему XP:


Подходы к проектированию системы...
  (сравнение и выбор методологии: XP, RUP, MSF)

XP or ^XP?

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

Это проблема выбора методологии. "финансировани"е, ... "отсутствие в команде профессиональных проектировщиков" и т.п - не решаются методологией. Например, в проекте с RUP, как минимум, должен быть 1 заказчик-пользователь, 1 аналитик, 1 проектировщик, 1 тестер (если делается тестирование) и т.п. В проекте с XP должен быть, как минимум, 1 XP-программист (он же может быть наставником (коачем)) и 1 доступный заказчик-пользователь. Только в этом случае возможно следованеи методологии и обучение остальных разработчиков. Тогда ТЗ не нужно, т.к XP не использует "тяжелые" артефакты. Хотя все зависит от содержания, т.е если это системная метафора и истории пользователя, то это будет в духе XP

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

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

Однако есть одно большое "НО" - эта методология предполагает наличие одной среды и одного языка разработки проекта, причем желательно обьектно-ориентированного. В случае 2-х звенных клиент-серверных приложений по схеме "Тонкий клиент-Толстый сервер" это дает существенные затруднения для ее использования. ...

Какие именно проблемы ты имеешь в виду? Вообще в документации к XP не говорится, что в разработке должен использоваться только 1 язык. Да, как правило, в XP-проектах - это ОО-язык и соответственно ОО-рефакторинг, но практики XP можно применять к не объектным языкам, например, SQL или C

... В случае 3-х и более звенных приложений проблем с использованием XP не возникает, однако появляется ряд других, желательно не обсуждаемых здесь проблем (вернее обсуждаемых, но в форуме "Сравнение СУБД").

Странно, в для 2-звенных приложений проблемы с XP были, а для 3-звенных - исчезли. За счет появления 3-го звена что ли? ASCRUS, вообще правильная методология разработки не должна зависеть от типа архитектуры (1-, 2-,...,N-звенная) :о)

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

Ты можешь не использовать чистую XP методологию, а только самые полезные практики из нее. Например, можно использовать урезанный (R)UP + ПП и рефакторинг именно со "стороны" кода, несмотря на наличие моделей требований, проектирования и т.п

.. То же самое касается принципа "Не использовать пока не понадобиться", который не очень соотносится хотя бы с правилами нормализации форм и оптимизации запросов. ..

Скорее это относится к рефакторингу, но только в место классов-объектов будут таблицы, а вместо методов - запросы. Естественно, что это не ОО-рефакторинг с его "приемами"

.. Однако мне кажется большая часть XP все таки удачно ложиться на 2-х звенки и при должной выработке правильной методологии есть шанс начать использовать этот перспективный способ разработки приложений.

Ты на верном пути, если, конечно, XP приживется в вашей команде

а) Стоит ли при разработке ...
....
б) С учетом того, что единственный легко реализуемый способ абстракции в РСУБД


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

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

Что имеется в виду под "ПО ..автоматизирующих этапы разработки проекта" и под "дедовскими методами"? зачем создавать, когда можно купить готовое или переделать чужое? При любой методологии автоматизация очень желательна, но XP более простая методология, чем RUP, т.е там обычно автоматизируются тесты, управление изменениями, рефакторинг, получение отчетов, управление проектом, управление требованиями (обычно в такой последовательности). Все это есть - см. на XProgramming.ru
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / XP-программирование и 2-х звенные приложения, насколько реально ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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