
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.97.9.173] |
![]() |
|
Сообщ.
#1
,
|
|
|
Здравствуйте! Ни ради опроса спрашиваю... передо мной стала проблема: нужно проектировать проги, иначе получается ерунда. Более-менее нормальная прога требует проектирования, а я с ним никак...незнаю как взяться за это дело. Потому интересует, как проектируете вы?
Ну я вижу два основных способа: UML с помощью софта. Я пытаюсь сделать что-то в Visio. Насколько знаю есть еще такие: Rational Rose от IBM Sybase PowerDesigner Что лучше незнаю...но качать последние две по диалапу мне в тягость. А Visio я с поставкой VS2003 взял. Ну и есть способ проектировать на бумаге, но мне кажется это неудобным...нужно тебе вставить еще кое-что кое-куда, так тут либо снова рисовать, что проше, либо все перетирать. |
Сообщ.
#2
,
|
|
|
А мы не проектируем :) У нас XP in Action :))
|
Сообщ.
#3
,
|
|
|
Цитата А мы не проектируем ![]() ![]() Это что? Экстремальное программирование? |
Сообщ.
#4
,
|
|
|
Ага.. я имею ввиду, что лично наблюдаю систему в состоянии перманентного рефакторинга, что весьма близко к идеям XP.. самое забавное, что этот подход тоже имеет право на существование
|
Сообщ.
#5
,
|
|
|
Эх, а за меня уже всё спроектировано. Вплоть до названия полей баз данных и их соответсвия друг другу.
|
Сообщ.
#6
,
|
|
|
Исключительно на бумажках.
![]() |
Сообщ.
#7
,
|
|
|
а я проектирую все в голове
|
Сообщ.
#8
,
|
|
|
Нет, спроектировать ИМХО Стоит лишь взаимодействие классов... На бумажке
![]() |
Сообщ.
#9
,
|
|
|
На бооольшой куче бумажек...
![]() |
Сообщ.
#10
,
|
|
|
Еще вспомнил, что суть алгоритмов тоже на бумажки записываю
![]() |
Сообщ.
#11
,
|
|
|
Цитата miksayer, 05.03.2005, 20:02:14, 633876 а я проектирую все в голове Hello, world! Большой проект, особенно тот, что пишется не в одиночку, держать в голове невозможно. |
Сообщ.
#12
,
|
|
|
Цитата Domino @ Большой проект, особенно тот, что пишется не в одиночку, держать в голове невозможно. а я тут давеча начал прочитывать про интересную парадигму -- дизайн снизу-вверх (то, что обычно под ним подразумевается -- всего-лишь верхушка айсберга). Всем советую обратить внимание и погуглить на эту тему ![]() |
Сообщ.
#13
,
|
|
|
Цитата Domino @ Большой проект, особенно тот, что пишется не в одиночку, держать в голове невозможно. Правильно. Поэтому его делят на модули и достаточно держать в голове интерфейс этих модулей ![]() |
Сообщ.
#14
,
|
|
|
Как правило проектирую в голове, не хватает терпения задокументировать всё на бумажку - переполняет энтузиазм и поток новых мыслей (как бы сделать лучше, чтоб получилось, как всегда), в результате потом кусаю локти.
На работе в плане алгоритмов документация пишется для начала, а потом пишется программа, которая мало имеет общего с документацией, так что окончательная документация пишется по готовой программе. Се ля ви... ![]() В общем, совет - позаботьтесь хотя бы о согласовании на бумаге всех интерфейсов, остальное приложится ![]() |
Сообщ.
#15
,
|
|
|
А я тут проектированием страдаю на UML...а вы тут в голове
![]() Не... если я начну писать прогу, неспроектировав ее, то потом ТАКАЯ дурь часто получается... |
Сообщ.
#16
,
|
|
|
Цитата Domino @ Большой проект, особенно тот, что пишется не в одиночку, держать в голове невозможно. в этом ты прав, если честно я вспомнил, как пару раз проектировал что-то на бумажке |
Сообщ.
#17
,
|
|
|
я не еще не профессионал, но когда я полгода работала, то первое, что от меня требовали - анализ и дизайн софта. мне кучу книг надавали и не пускали программировать вообще, пока модели небольшой не было. я не думаю, что без планирования можно сходу создать совершенную программу.
между прочим, в падении какого-то американского шатла была виной ошибка именно в дизайне софта. на лекции я пользовалась together (www.togethersoft.com), uml дает возможность посмотреть на программу "со стороны". еще я бы реркомендовала книги по анализу и моделированию, такие, как - Gamma/Helm/Johnson/Vlissides (GoF): Design Patterns, Elements of Reusable Object-Oriented Software (я думаю на русском тоже есть) - Booch/Rumbaugh/Jacobson: The Unified Software Development Process в первой есть уже готовые примеры моделирования и программирования, и следовательно не надо заново изобретать велосипед. |
Сообщ.
#18
,
|
|
|
Цитата nastenka @ я не думаю, что без планирования можно сходу создать совершенную программу. совершенную программу сразу вообще нельзя создать - это мое мнение |
Сообщ.
#19
,
|
|
|
Да ну, перестаньте, всё проектируется либо на бумажках, либо в текстовом файле
![]() |
Сообщ.
#20
,
|
|
|
Цитата Да ну, перестаньте, всё проектируется либо на бумажках, либо в текстовом файле ![]() Представь, если бы так проектировали Delphi 2005 .NET? Большие системы проектировать так не получится... |
![]() |
Сообщ.
#21
,
|
|
Ну почему сразу "не получится"? Большие текстовые файлы и горы бумажек, бета 2005.НЕТ выходит в 2010 году
![]() |
Сообщ.
#22
,
|
|
|
p_kolya
Тебе как правильно или как по жизни получается? ![]() Очень широкие ты задал исходные данные. Давай уточняй. Лично я пока работал один - все в голове. Но когда руководишь командой (даже небольшой) - голова уже не поможет, телепатия у нас не распространена повсеместно. Соответственно, и сам рисую диаграммы UML, и других заставляю. Плюс к этому "feature list" и другие вспомогательные документы. Сам сижу на Rational Rose, а остальные рисуют в совершенно бесплатном Umbrello под пингвин. UML в нем, конечно, зачаточный, но основные идеи передать можно. Кстати, сейчас пытаюсь перейти на UP. Пока для проекта, который делаю сам для себя, возможно, как раз поэтому и плохо выходит. Но уже осознал положительные стороны прецедентов, итераций и релизов. Вопреки расхожему мнению, лишней документации UP как таковой не плодит. Ее плодят люди, которые неправильно им пользуются ![]() |
Сообщ.
#23
,
|
|
|
кстати, а где можно скачать UML?
|
Сообщ.
#24
,
|
|
|
Цитата miksayer @ кстати, а где можно скачать UML? www.uml.org ? ![]() UML - это язык вообще-то, без привязки к средствам. Где-то в этом разделе была тема, там перечислены основные среды для рисования диаграмм. |
Сообщ.
#25
,
|
|
|
[b]2Kutushut[b], а UP - это что есть такое?
|
Сообщ.
#26
,
|
|
|
p_kolya
Unified Process. Наиболее яркий и известный представитель - Rational Unified Process (RUP). Просто UP - это методика, во многом теоретическая и оставляющая на совести разработчика конкретные решения. RUP - база знаний от IBM, где написано кто, как, что и в какой последовательности делает. Но тоже можно трактовать вольно, если знаешь что выкинуть. |
Сообщ.
#27
,
|
|
|
ИМХО UML имеют три основных недостатка:
С ним надо сначала разобраться. Маленькие неудобности исполнения такого программного продукта приведут к увеличению времени, ктоое тратишь на создание проги. Не всегда под рукой ![]() ![]() |
Сообщ.
#28
,
|
|
|
Проектировать надо большие проекты, которые пишутся несколькими людьми, особенно надо проектировать структуру базы, и т.д. А так проектирование(не базы данных), имхо, бесполезно. В процессе написания программы все время встречаются какие-то ситуации, в процессе которых какая-то функциональность изменяется, какая-то добавляется, другие функциональности объединяются, другие удалаются, другие разъединятся, все это влияет на интерфейс приложения(если он есть) и в итоге можно получить совсем не то, что ты запроектировал.
|
Сообщ.
#29
,
|
|
|
Я пользуюсь notepad.exe.
Однако, у меня на работе один сотрудник делает так: Открывает IDE - создает необходимые модули - Пишет комментари - и нанизывает на них код. Сам так пробовал - какая-то дурь получилось, а ему ничего - очень эффективно. Я к тому, что мыслим мы все по-разному, и поэтому, каждому своё, кому UML, кому TXT, кому бумажки, а кому голова. Попробуй все варианты. Как тебе будет удобней так и делай в дальнейшем. |
Сообщ.
#30
,
|
|
|
Цитата Gazon @ пишутся несколькими людьми Можно каждому выдать по модулю и установить единые стандарты их написания ![]() |
Сообщ.
#31
,
|
|
|
Цитата Hydrogenium, 20.03.2005, 1:20:39, 651001 Открывает IDE - создает необходимые модули - Пишет комментари - и нанизывает на них код. Сам так пробовал - какая-то дурь получилось, а ему ничего - очень эффективно. Очень известная концепция. Сам такую практикую. Называется "литературное программирование". А автор ее - Доналд Кнут. Пока крупными вещами н занимался, поэтому проектируется все на бумажке. |
Сообщ.
#32
,
|
|
|
Незнаю как вы...но я хочу научиться проектировать, ибо это надо. Я по своей дури уже не первый раз пол проги переписываю из-за корявостей моих... что-то забыл, что-то не учел.
Но пока времени мало все это изучать, но проектирование изучать буду обязательно! |
Сообщ.
#33
,
|
|
|
Цитата Незнаю как вы...но я хочу научиться проектировать, ибо это надо. Я по своей дури уже не первый раз пол проги переписываю из-за корявостей моих... что-то забыл, что-то не учел. Значит либо проект такой большой, либо ты его просто неправильно структурируешь. Когда программа хорошо разбита на модули, и надо что-то поменять, то менять приходится совсем немного. ИМХО: А менять все равно что-то придется, даже если ты приложение хорошо спроектировал. Если только его проектировать очень долго и при написании ни за что не будешь отходить от плана, то может в процессе написания программы ничего не будет меняться. |
Сообщ.
#34
,
|
|
|
Цитата Мяут @ Можно каждому выдать по модулю и установить единые стандарты их написания ![]() а это, по-твоему, не проектирование? хоть и в таком зачаточном виде... |
Сообщ.
#35
,
|
|
|
Цитата p_kolya @ что-то забыл, что-то не учел. Хорошо проектировать можно научиться только на основе опыта, причем по большей части своего. Попробуй освоить Test First из eXtreme Programming. Мозги встают раком довольно быстро, но если привыкнуть - научишься мыслить в терминах интерфейсов. Главное в этом деле - сначала ты пишешь как будешь использовать класс, а уже потом "под тест" пишешь интерфейс и набиваешь начинкой. При этом если ты хочешь что-то поменять - опять же начинаешь с теста. А если ты не знаешь какой интерфейс должен быть у класса - разбирайся с поведением, пробуй писать текстовые описания - что делает класс, обязанности, отношения (методика CRC). Самый прямой путь к грамотному проектированию - научиться мыслить в терминах интерфейсов. А уровень этих интерфейсов может быть любым - от системных операций (внешнее представление системы) до отдельного класса. И не забывай простое правило. "Если Вы не можете сказать это по-английски (русски, китайски... ), то Вы не сможете реализовать это в коде." |
![]() |
Сообщ.
#36
,
|
|
Не знаю как у вас, а мой заказчик не дает мне засохнуть, поэтому проэктировать что-то не возможно, по тому что в процессе разработки то интерфейс поменяеться, то концепция
![]() Я за экстремальное программирование ![]() |
Сообщ.
#37
,
|
|
|
Я перепробовал много халявных UML-редакторов, и теперь все делаю в MSWord2003
![]() Так гораздо лучше получается, ибо ты сразу: 1) пишешь спецификацию 2)проектируешь отдельные модули которые потом превращаются в реальные классы на сиппипи. |
Сообщ.
#38
,
|
|
|
Цитата PIL @ проэктировать что-то не возможно Цитата PIL @ Я за экстремальное программирование Хм... Вольная цитата из К. Бека: Для экстемального программиста процесс проектирования ведется постоянно, в начале каждого дня 10-15 минут уделяется архитектуре, в паре один из программистов проектирует, другой пишет код. Цитата PIL @ в процессе разработки то интерфейс поменяеться, то концепция Ты уверен что у тебя экстремальное программирование? Может просто это высокий темп работы + глючный заказчик? ![]() Добавлено Цитата chipset @ Я перепробовал много халявных UML-редакторов, и теперь все делаю в MSWord2003 А ворд теперь умеет рисовать UML? Или это ты про текстовые описания и блок-схемы? Добавлено Кстати, а как связан ворд с халявными редакторами? ![]() |
Сообщ.
#39
,
|
|
|
Цитата Ты уверен что у тебя экстремальное программирование? Может просто это высокий темп работы + глючный заказчик? ![]() Доработка ТЗ в процессе работы - вещь традиционная, но если приходится менять более 50% архитектуры - гоните в шею писателя ТЗ. Или плотнее работайте с заказчиком. |
Сообщ.
#40
,
|
|
|
Цитата AQL @ Доработка ТЗ в процессе работы - вещь традиционная, но если приходится менять более 50% архитектуры - гоните в шею писателя ТЗ. Или плотнее работайте с заказчиком. В точку! ![]() Есть правда еще один вариант - заказчик не заинтересован в получении результата. Может не хочет платить денег, может сам не знает что ему надо. Самый плохой вариант - когда ТЗ нет и заказчик выступает заодно в роли руководителья проекта без должного опыта. С таким хоть живи вместе - все равно толку не будет. Да что говорить - все итеративные подходы основаны на том, что в процессе работы мы все ближе подходим к "правильному" устойчивому состоянию. В XP колебания могут быть очень значительными, но все равно со временем все устаканивается и лихорадит не весь проект, а отдельные части (те же гуи). Так что уточнение - менять 50% архитектуры - это где-то середина срока разработки. В начале она может меняться очень значительно, а в ночь перед сроком сдачи даже 10-15% могут все на фиг поломать... |
![]() |
Сообщ.
#41
,
|
|
AQL, Kutushut - вся проблемма в том, что писатель ТЗ - правая рука заказчика...
![]() Деньги платит, я готов писать хоть год проэкт на 2 месяца, только работы немного жалко... |
Сообщ.
#42
,
|
|
|
Цитата PIL @ Деньги платит, я готов Дык тогда вопросов нема. Сам в принципе на похожих основах сижу - любой каприз за зарплату. Тоже не счастлив от этого. Так что считай - коллеги. |
Сообщ.
#43
,
|
|
|
Цитата Kutushut @ А ворд теперь умеет рисовать UML? Или это ты про текстовые описания и блок-схемы? Да, про них.. Мне большего не надо, пока ![]() Цитата Kutushut @ Кстати, а как связан ворд с халявными редакторами? ![]() Word у меня на компьютере всегда ![]() Кроме того, он у твоих партнеров по тиму есть, а уговорить их поставить Rational Rose - задачка интересная но трудная. |
Сообщ.
#44
,
|
|
|
Цитата chipset @ Да, про них.. Мне большего не надо, пока Это гуд. На самом деле если начать разбираться в этой кухне - прецеденты без диаграмм намного ценнее чем диаграммы без прецедентов... Да и вообще в последнее время часто всплывает фраза "Если вы не можете это сказать по-английски (русски,...), то вы не сможете это запрограммировать". Цитата chipset @ Кроме того, он у твоих партнеров по тиму есть, а уговорить их поставить Rational Rose - задачка интересная но трудная. Можно давать им снапшоты или печатать и давать в руки. Сложнее с тем, что их еще и UML надо обучать... ![]() |
Сообщ.
#45
,
|
|
|
Цитата Kutushut @ Да и вообще в последнее время часто всплывает фраза "Если вы не можете это сказать по-английски (русски,...), то вы не сможете это запрограммировать". Солидарен ![]() Цитата Kutushut @ Можно давать им снапшоты или печатать и давать в руки. C редактированием проблема... ... И вообще, взять бы да заставить всех делать словесную и математическую постановку задачи по госту ![]() |
Сообщ.
#46
,
|
|
|
можно скачать триал-версию с www.magicdraw.com
![]() p.s. uml - это все-таки лучше блокнота))) поскольку ты можешь увидеть работу системы в целом, а не запоминать кучу всякой ерунды, которую может быть еще надо будет забыть и придумать заново:) |
![]() |
Сообщ.
#47
,
|
|
Цитата fantasmagoriya @ Rational Rose ![]() Ещё JUDE хорошая штука, её найти проще. Умеет кое-что, что не умеет Rational, но не умеет кое-чего, чего умеет Rational. Если есть возможность, лучше иметь обе ![]() |
Сообщ.
#48
,
|
|
|
А что такое прецеденты? можно небольшой пример? )
|
Сообщ.
#49
,
|
|
|
Цитата rockbear @ А что такое прецеденты? Прецеденты (иначе говоря Use Cases) - это варианты использования проектируемой системы. Например, "Регистрация пользователя в системе" - это прецедент. "Получение выписки по счёту" - это прецедент. И т. п. Внутри каждого прецедента может быть определено несколько возможных сценариев (типовой сценарий, альтернативные сценарии, обработки ошибочных ситуаций и т. п.) Но все эти сценарии должно объединять то, что они выполняют строго определенную бизнес-функцию. |
Сообщ.
#50
,
|
|
|
Цитата rockbear @ А что такое прецеденты? можно небольшой пример? ) http://library.mnwhost.ru/doc/UML_HTM/gl_17.htm |
Сообщ.
#51
,
|
|
|
для проектирования сайтов используем SketchFlow
|
Сообщ.
#52
,
|
|
|
Цитата chipset @ Я перепробовал много халявных UML-редакторов, и теперь все делаю в MSWord2003 Записываем: MS Word - халявный UML-редактор ![]() |