Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2002.07.15;
Скачать: [xml.tar.bz2];

Вниз

Организация работы над большим проектом   Найти похожие ветки 

 
lipskiy   (2002-06-12 00:21) [0]

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

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

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

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

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

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

Спасибо.


 
drpass   (2002-06-12 00:38) [1]

Могу дать пару советов из личного опыта:
Первым делом, всегда отмечай места, где есть недоработки или планы на будущее - просто вставляй комментарии в текст вида

//todo 1 -oLipskiy -cИнтерфейс : Добавить сообщение об ошибке

В любое время, открыв Todo list, ты сможешь найти это место в тексте и вспомнить, что там нужно сделать.
Во-вторых, не ленись использовать мастер диаграмм Delphi - это не только интересное и бесплатное CASE-средство, но и хорошая вещь для документирования структуры модуля.
В третьих, документируй процедуры, для этого может пригодиться мастер из GExperts, который вставляет заголовки комментария.
Ну и, честно говоря, вообще трудно вести проект, который делается "не в основное рабочее время". Лично я с большим трудом переключаюсь между задачами. Еще хуже, чем Windows 2.10 :)


 
Agent Smith   (2002-06-12 09:17) [2]

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


 
NailS   (2002-06-12 14:11) [3]

Просто два слова
Rational Rose


 
iZEN   (2002-06-12 18:28) [4]

Просто две фразы:
Extreme Programming и UML-рефакторинг.

Ресурсы:
http://www.xprogramming.ru/
http://xp.mchook.net/


 
lipskiy   (2002-06-13 01:37) [5]

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

drpass © (12.06.02 00:38)
Насчет комментариев о недоделках. Блин! Спасибо! Такие комментарии я давно приучился делать, но я не знал что в IDE есть для этого сервис - ToDoList. Обязательно переделаю под него все свои пометки. Что интересного с этим листом можно делать? Смотреть список, зачеркивать, быстро переходить к месту в коде, добавлять новую пометку, еще что-то? Кстати, где задать список категорий, само запоминается только одно последнее, каждый раз вводить?
Хорошая вещь этот ToDoList, спасибо еще раз.

> Во-вторых, не ленись использовать мастер диаграмм Delphi
!!! Я вообще никогда не ленюсь что-то упорядочивать, ораганизовывать, структурировать и т.п. Этим я люблю заниматься и считаю что это необходимо делать в любой работе. Но не всегда я знаю как именно это сделать. Еще раз сорри за серость - что за мастер диаграмм??? Это где, как? Я кажется опять что-то очень интересное пропустил...

> документируй процедуры, для этого может пригодиться мастер из GExperts
Имеется ввиду тотальное комментирование кода? О, к этому я тоже давно себя приучил. Если не об этом, то о чем? А что за мастер из GExperts?

> Ну и, честно говоря, вообще трудно вести проект, который
> делается "не в основное рабочее время". Лично я с большим
> трудом переключаюсь между задачами. Еще хуже, чем Windows
> 2.10 :)

Что поделать, деньги надо зарабатывать, а другие условия работы мне не подойдут. А основное мое рабочее время - это даже вообще не программирование, а железо, так что.., дела мои совсем плохи {:)}

Agent Smith © (12.06.02 09:17)
Если не ноу-хау, можешь рассказать об этой схеме, как ты ее строишь? Можно на мыло. Про бумагу согласен полностью, единственное, что мне в этом не нравится - при многократном редактировании сильно изнашивается носитель.

NailS © (12.06.02 14:11)
Ох, не силен я в английском...

iZEN (12.06.02 18:28
Аналогично - смысл слов не дошел.
А насчет экстремального программирования я раньше уже читал. Это слишком глобально и ориентировано в основном на командную работу. Но кое-что полезного можно почерпнуть и оттуда.

Спасибо всем за все!
Но вопрос мой еще не закрыт :)
Если че - пишите :)


 
Agent Smith   (2002-06-13 07:46) [6]

2lipskiy
Могу по-подробней. Когда я только задумал проект, у меня не было возможности начать сразу его реализовывать и поэтому я начал его продумывать, развивать идеи. И так получилось, что сначала я хотел сделать интерфейс программы (а она не маленькая!)полностью русским, потом пришла мысль сделать его на английском, а еще через некоторое время захотел сделать так, чтобы я в любой момент смог сделать локализатор к моей проге на любой язык, поэтому решено было создать файл локализации, на подобии ini-файла и считывать из него все caption. А потом я представил себе, что если бы эта мысль напала бы на меня месяцем позже, то мне пришлось бы убить пару дней на переделку всего этого. Вот поэтому я и рекомендую составлять такие схемы. На счет их структуры. Опыта составления этих схем у меня не много, но все же могу кое-что посоветовать: желательно составить несколько схем по разным частям программы, или просто по разной направленности. Также удобно создать одну главную схему, в которой описывается вся программа в целом с ссылками(!) на другие, более локальные и подробные схемы. Опять же говорю: в схемах больщой упор нужно делать на настройки программы, чтобы знать, откуда что считывается. Приведу пример: ты хочешь запоминать положение нескольких форм на экране и считывать это из специального ini-вайла (или реестра), причем делать это или нет выбирает юзер в настройках твоей программы. А за настройки ты, допустим, еще не брался, а когда настанет очередь настроек, боишься забыть про формы или что-то перепутать. Вот по-этому в на самом старте проекта ты можешь создать ini-файл(или раздел в реестре), забить его исходными (пока не изменяющимися данными) и прописать считывание этих данных при запуске программы. Разумеется, еще ничего работать не будет, но ты можешь записать в схему имя ini-файла (или раздела в реестре:) и указать, что откуда считывается настройка. В дальнейшем, когда руки дойдут до настроек в программе, ты просто заглядываешь в схему и видишь адрес, откуда эти настройки считываются, следовательно ты знаешь, куда их нужно записывать. Удачи!
ЗЫ: Если будешь реализовывать такой метод, потом намыль мне, хочу узнать, стоит ли рекомендовать его кому то еще :)


 
Виктор Щербаков   (2002-06-13 09:24) [7]

to lipskiy ©
А может тебе сюда?
http://www.nexus.odessa.ua/files/books/booch/
Очень хорошая книга. Должна помочь в организации проекта.
Лично я, когда начинаю говорить о ней, говорю с междометиями и без падежей. Так что смотри сам.


 
lipskiy   (2002-06-13 19:45) [8]

2 Agent Smith
Спасибо, надо обмозговать, идея ясна.
Только вот конкретно - как это нагляднее ты рисуешь? Я кроме блок-схемы и просто текста ничего другого не представляю...

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

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


 
Китаец Ла Ме   (2002-06-13 20:09) [9]

2lipskiy
в паскале не было событий.
Интересно, как правильно рисовать БСхемы с событиями?
:)


 
Shaman_Naydak   (2002-06-13 21:14) [10]

Rational Rose - это как раз программа для рисования подобных вещек (структуры проекта / бизнес-процесс и прочая)
на стандартном языке моделирования UML..
Но пользоваться ей не рекомендую.. просто какие-то пристукнутые на голову программеры писали этот пакет :), построение отчетов - это вообще похоронный марш.. вот так оно и бывает.

Так что советую воспользоваться Power Designer 9 (обрати внимание на версию) от Sybase..


 
lipskiy   (2002-06-13 22:33) [11]

2 Китаец Ла Ме
Вот уж тут проблемы не вижу. Событие - это не есть что-то принципиальное иное, нежели свойство или метод. Сами события можно вообще не рисовать, а рисовать только их обработчики.

2 Shaman_Naydak
А иде-ж такую взять? На ихнем сайте только седьмая, и за деньги...


 
iZEN   (2002-06-15 00:31) [12]

Для lipskiy.
Без теории никуда.
См. книжки по проектированию на моей страничке
http://www.beep.ru/~izen/
в разделе "Ссылки"->"Библиография"->"Разное".

Советую обратить внимание на следующие книги:
1. "Приемы объектно-ориентированного проектирования. Паттерны проектирования" Гамма, Хелм, Джонсон, Влиссидес;
2. "Экстремальное программирование" К. Бек;
3. "Объектно-ориентированный анализ и проектирование с примерами приложений на C++" Гради Буч;
4. "UML. Основы", 2-е издание М. Фаулер, К. Скотт;
5. "Язык UML. Руководство пользователя" Г. Буч, Д. Рамбо, А. Джекобсон;
6. "Унифицированный процесс разработки программного обеспечения" А. Якобсон, Г. Буч, Дж. Рамбо.

Советую читать в порядке: 3, 4, 1, 2 и др..



 
iZEN   (2002-06-15 00:39) [13]

/**Agent Smith © (13.06.02 07:46):
<...>так получилось, что сначала я хотел сделать интерфейс программы (а она не маленькая!)полностью русским, потом пришла мысль сделать его на английском, а еще через некоторое время захотел сделать так, чтобы я в любой момент смог сделать локализатор к моей проге на любой язык, поэтому решено было создать файл локализации, на подобии ini-файла и считывать из него все caption. А потом я представил себе, что если бы эта мысль напала бы на меня месяцем позже, то мне пришлось бы убить пару дней на переделку всего этого.<...>
*/

В любом учебнике по Java описывается как сделать локализацию приложения под любой язык. Это нетрудно, обычно всё делается за десять минут, причём получается не в бинарном формате, а в исходных кодах языка (Java). Так что, загляните туда -- почерпнёте много полезного для реализации на Delphi/Pascal.


 
Agent Smith   (2002-06-15 06:44) [14]

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


 
Agent Smith   (2002-06-15 07:02) [15]

lipskiy, помнишь, как в школе на уроках истории рисовали схемы правления царей и т.п.? Вытаскиваем из принтера не использованный:) лист бумаги, чертим в центре квадрат(или что-нибудь иное, по вкусу). Он обозначает главный модуль и главную форму. От него идут стрелки к другим квадратам (другим модулям и формам), ес-но стрелки подписяваются. Например стрелку от главного квадрата к квадрату формы настроек можно подписать так: "чтение настроек из файла "ххххх.ххх"". Если что-то не влезает в лист(а по идее так и должно быть), то стрелку ведем к границе листа. Там, у этой самой границы, даем ссылку на др. отдельный лист. И все в этом духе. Желательно сделать отдельный лист, в котором простым текстом записываются идеи, которые ты хочешь реализовать, но обдумывать их пока не имеет смысла, т.к. недостаточно данных. А потом с других листов давать ссылки на этот лист+номер идеи. Разумеется это только основа схемы, в работе появляются новые решения и их можно отобразить на бумаге.


 
iZEN   (2002-06-15 08:22) [16]

Для Agent Smith © (15.06.02 06:44).

Ну, например в Java можно пойти двумя путями.

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

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

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


 
Agent Smith   (2002-06-15 10:25) [17]

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


 
Agent Smith   (2002-06-15 10:26) [18]

iZEN, по-моему, мы немного отклонились от темы ветки...


 
iZEN   (2002-06-15 10:41) [19]

По теме:
http://www.maxkir.com/sd/methyperproject_RUS.htm



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

Форум: "Потрепаться";
Текущий архив: 2002.07.15;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.53 MB
Время: 0.013 c
3-47084
Ord3f8h
2002-06-18 14:37
2002.07.15
Посоветуйте как лучше организовать клиент-серверное приложение


1-47294
volph
2002-06-30 17:14
2002.07.15
Покажите пример работы с array property


3-47212
Леван
2002-06-14 10:00
2002.07.15
Поделитесь опытом


3-47067
MsGuns
2002-06-20 21:15
2002.07.15
Answer by Paradox.


3-47137
billybons
2002-06-24 07:37
2002.07.15
SQL - запрос (синтаксис)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский