|
Как улучшить старый проект?
|
|||
---|---|---|---|
#18+
Я сразу извиняюсь если такие темы существуют, просто я не знал какие ключевые слова поставить. Проблема вот какая. Я пришёл в новую фирму, которая существует уже много лет. Многие программисты здесь молодые, а проектировщика нет, и мне как более опытному программисту предложили посмотреть что можно сделать, чтобы улучшить программу: user interface, bussiness logic, data layer. У меня есть пару задумок, но я никогда не занимался проектировкой проекта уже существуещего. И в связи с этим у меня есть пару вопросов: 1. Есть ли какая либо литература по этой теме? 2. Как узнать стоит ли проект улучшать или написать новый по новой технологии? 3. Как при этом не ущемить интересов клиентов, которые работают с этим проектом, если у них возникли какие то вопросы или проблемы? Честно говоря не очень то в этом разбираюсь, поэтому если вы считаете, что я должен на что-то ещё обртатить внимание, то буду рад услышать. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2006, 17:40 |
|
Как улучшить старый проект?
|
|||
---|---|---|---|
#18+
GoldDragon... предложили посмотреть что можно сделать, чтобы улучшить программу: user interface, bussiness logic, data layer. У меня есть пару задумок, но я никогда не занимался проектировкой проекта уже существуещего. И в связи с этим у меня есть пару вопросов: 1. Есть ли какая либо литература по этой теме? 2. Как узнать стоит ли проект улучшать или написать новый по новой технологии? 3. Как при этом не ущемить интересов клиентов, которые работают с этим проектом, если у них возникли какие то вопросы или проблемы? Честно говоря не очень то в этом разбираюсь, поэтому если вы считаете, что я должен на что-то ещё обртатить внимание, то буду рад услышать. 1)Для начала я бы посоветовал узнать, насколько существующая программа удовлетворяет текущим (и будущим) нуждам... 2)После этого попытался бы понять, какая именно программа вам нужна. 3)После чего прикинуть трудозатраты по переводу существующей программы к "требующейся" и сравнить их с трудозатратами на написание "требующейся" программы "с нуля". 4)А потом прикинуть, насколько удастся сохранить работу фирмы во время перевода на новую платформу... После документирования перечисленных выше пунктов у вас будет практически готовый проект :) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2006, 18:45 |
|
Как улучшить старый проект?
|
|||
---|---|---|---|
#18+
В том то и дело что по этим вопросам я и хочу найти ответы. По моему мнению, этот проект надо начать сначала. Текущим нуждам он удовлетворяет. А в будущем я думаю никто не будет приобретать этот проект из-за UI, т.к. такой дизайн был в конце 80-х. Никакой документации по логической части. Только то что передавалось на словах от программиста к программисту. А сама логика - смесь старых и новых решений. Про базу даннхых я вообще не говорю. Никакой нормализации. Поэтому я считаю что менять надо. Просто мне нужны пару советов по самому изменеию, к примеру вот такие шаги может быть: 1. Написать документацию что должна делать аппликация; 2. Какие модули есть; 3. Что должен делать каждый модуль; 4. Какая логика каждого модуля; 5. Использиавать старую логику или написать новую; и т.д. и т.п. Мне нужна хоть какая-то литература или развёрнутые советы по планированию. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2006, 20:03 |
|
Как улучшить старый проект?
|
|||
---|---|---|---|
#18+
Насколько я понимаю, проект достаточно большой, скорее весьма большой. Если так, то относительно безболезненно переписать его с нуля - просто невозможно. Практически это надо взять новую команду программистов, сесть писать новый проект (старые программисты в это время будут сопровождать старый), потом либо убедить всех клиентов перейти на новый продукт (и потратить уйму сил на перенос), либо ждать, пока старые клиенты не вымрут естественным образом :) В ходе всего этого - думать, что делать со старыми программистами, как убедить их работать над "старым и ненужным" и одновременно куда их девать, когда оно действительно окажется ненужным.Все это - организационная задача на годы; если у фирм-клиентов я видел отказ от продукта с заменой его принципиально другим, то у поставщиков софта я такого никогда не встречал, да и у сильных мира всего такие примеры очень редки. Соответственно - вряд ли возможно что-то кроме переделки по шагам, метода последовательных изменений. Переписать модули по одному, если при этом не подразумевается смена инструмента - задача реальная. Соответственно, я бы начал с вопроса "какие самые срочные проблемы, что более всего другого нуждается в переделке". И - важно: принципиальная позиция. Не следует делать косметический ремонт, не следует подлаживаться под существующие кривости, под желание унаследовать побольше старого кода итп. Нужно иметь целью "хороший конечный продукт", и искать, как получить его минимумом усилий и сохраняя работоспособность в каждый момент времени. Чем еще хорош такой вот последовательный переход. И руководство, и Вы, и другие разработчики сможете оценить свои первые шаги. Если будет первый результат - гораздо легче будет отстаивать свое мнение в последующем; разработчики смогут плавно понять, что Вы хотите; Вы сможете выверить свои шаги и при необходимости скорректировать их. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2006, 20:22 |
|
Как улучшить старый проект?
|
|||
---|---|---|---|
#18+
Я с тобой согласен в общем направлении развития данного проекта (кстати я бы сказал что он среднего пошиба проект), но я бы хотел более детальное объяснение. Я уверен что ты скорее всего уже автоматом можешь определить какой модуль более важен или нужен, какой стоит улучшать какой нет. А вот мне надо разжевать, а в рот я уже и сам как-нибудь положу. Вот какие примерно вопросы у меня возникают, когда я думаю об изменениях: На какие критерии данного модуля нужно обратить внимание? Как выделить логические куски программы, чтобы не тратить слишком много времени на прослеживании кода? Обязательно ли брать новых людей или достаточно чтобы когда будет окно в заданиях развивать новую версию конкретного модуля? Как правильно спланировать улучшщение 1-го модуля, чтобы это не затронуло старые? Вот примерно такие практичные советы я бы хотел. Вот когда я наберусь опыта, тогда может я и сам разобраться. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2006, 22:40 |
|
Как улучшить старый проект?
|
|||
---|---|---|---|
#18+
GoldDragonЯ уверен что ты скорее всего уже автоматом можешь определить какой модуль более важен или нужен, какой стоит улучшать какой нет. Я - не уверен :) Не думаю, что хоть у кого-то есть опыт таких масштабов, чтобы столь важные задачи можно было решать, не думая. У меня есть опыт такой вот пошаговой полной замены, но на достаточно скромном по размерам проекте. На какие критерии данного модуля нужно обратить внимание? Пожалуй, примерно так: 0. Текущие зияющие дыры, которые необходимо срочно закрыть. 1. Частота изменений модуля. Тяжело переписывать модуль, если необходимо параллельно постоянно вносить поправки в "текущую рабочую версию"; лучше начать с более простого. 2. Отчуждаемость; насколько четко определен и формализован интерфейс модуля, насколько тесно он связан с другими. Попросту говоря, насколько легко переделать этот модуль, не ломая остальную программу. 3. Важность этого модуля для системы и наличие хороших знаний по его текущей реализации. Боязно браться за самые важные функции, но с другой стороны их лучшая реализация даст максимальный эффект максимально быстро. Как выделить логические куски программы, чтобы не тратить слишком много времени на прослеживании кода? Хм. Сложный вопрос, на который вряд ли есть общий ответ. Любые исходники можно запутать так, что голова кругом пойдет. Отмечу, что понимание реализованного очень важно. У меня был случай, когда три человека были вынуждены в отчаянной спешке работать всю ночь из-за того, что я вовремя не разобрался в предназначении нескольких строк старого программного кода. Обязательно ли брать новых людей или достаточно чтобы когда будет окно в заданиях развивать новую версию конкретного модуля? Зависит от людей. Если они хотят и могут работать так, как Вы потребуете - что плохого в том, чтобы на них и опираться? Но я бы сказал, вряд ли будет оправданным поручать каждому потихоньку переписывать свой модуль. Скорее я бы посоветовал потихоньку перетягивать людей в команду "новой технологии", то есть допустим взять пару человек, сколь возможно скинуть с них старую текучку и нагрузить реализацией по-новому. И далее перераспределять силы согласно пропорции "старого" и "нового" кода. В результате получится несколько (назовем так, наиболее талантливых и перспективных) людей, которые вытащат на себе большую часть новой реализации, будут хорошо знать новую систему итп, и в то же время более инерционные люди смогут не спеша перейти от старой системы к новой, потихоньку заняться сопровождением уже нового кода, имея перед глазами примеры правильной реализации. Как правильно спланировать улучшщение 1-го модуля, чтобы это не затронуло старые? Собственно основной принцип модульного программирования - пока выдерживается оговоренный интерфейс взаимодействия, плевать, как меняется реализация. Я бы сказал, начать следует с выверки интерфейса (предполагаемого и реального) этого модуля. Почему такая разница - потому что в программе могут встретиться очень "левые" взаимодействия, труднопредставимые при взгляде на код. Так, в дельфе все компоненты форм являются доступными, и какой-нибудь идиот вполне может из самого неожиданного места устанавливать значение в edit-е на форме или допустим нажимать на ней кнопку. Простая первая проверка - посмотреть, где и что отвалится при компиляции, если просто убрать из программы этот модуль. Когда интерфейс определен, выверен и при необходимости переделан (включая изменения в вызывающих модулях), начинается то самое изменение внутренней реализации, уже ничего особенного не затрагивающее. Другой важный аспект - прозрачная реализация новой технологической базы. Новая технология стопроцентно повлечет необходимость реализации каких-либо новых базовых классов, функций ядра итп. Такие вещи, понятно, нужно делать как минимум не конфликтующими со старыми, а по возможности - так, чтобы старый код заработал с использованием нового API. Опять-таки пример из дельфы - допустим, старое MDI-приложение хочется переделать на интерфейс с закладками (pagecontrol). Для этого я бы действовал примерно так: определил бы тривиальный базовый класс окна, настроив его под MDI; унаследовал бы от этого класса ранее реализованные формы; когда не осталось бы неохваченных форм, переделал бы методы базового класса так, чтобы они вместо MDI создавали закладку и клали окно на нее. Главное здесь - постараться не спеша привести все к единому образцу; не требовать "быстро и синхронно поменять кучу всего везде". ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2006, 02:54 |
|
Как улучшить старый проект?
|
|||
---|---|---|---|
#18+
Надо поговорить с теми, кто работал над старым проектом. У них наверня есть масса идей, как его улучьшить. Не обязательно придумывать самому. Если они смогли много уже наворотить, то они спецы в этом деле. То, что у них не получилось, вовсе не значит, что они слабаки. Просто может у них не было авторитеного лидера. Вспомните, о трех сильных героях Лебеди, Раке и Щуке. Затем достаточно из разных предложенных вариантов выбрать один, над которым все будут дальше работать. Это дело рискованное. Ну так и должность обязывает - руководитель проекта, все таки. Надо отрабатывать зарплату. Бывает еще хуже, когда деньги начинают тратиться Ваши, а не чьи то, хозяйские. Ошибся, они кончатся раньше, чем успеете переделать. Если будут сомнения, можно все предложения выложить на форуме. Обсудим вместе. Скептиков будет.... Завались! Я в своей практике, когда у меня есть хорошая идея, и не просто хорошая, а вообще - класс, начинаю советоваться с ребятами, особенно со скептиками. Если они не смогли отговорить, значит можно работать в этом направлении. Но чаще они отговаривают, чем поддерживают. Хорошо, что не всегда. А вообще, разработка, это как игра в футбол. Голы забивают нападающие, они звезды, их все знают, они миллионеры. Но играет вся команда. И если остальные не будут играть, то ни фига этим нападающим, то бишь руководителям проекта, не удастся. PS. Я бы постарался не обидеть ребят. Ни в коем случае - вы сделали фуфло, давайте делать так. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2006, 17:16 |
|
Как улучшить старый проект?
|
|||
---|---|---|---|
#18+
1. Составить детальную документацию на программу в том виде, в котором она эксплуатируется сейчас. Чем полнее будет эта документация, тем легче будет и ошибки исправлять, и модули модернизировать. 2. Так как программистов больше одного, ввести жёсткий контроль над изменениями, вносимыми в проект. Все изменения должны как минимум отражаться в документации. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2006, 12:28 |
|
Как улучшить старый проект?
|
|||
---|---|---|---|
#18+
Gerros Не думаю, что это удачный путь. Документация - это путь долговременного хранения информации, передачи ее между людьми, работающими над этой темой. Цена этого - серьезный оверхед, существенное дополнительное время. Составлять детальную документацию того, что рискует оказаться серьезно переделанным - все равно что посылать людей разобрать, описать и классифицировать каждый отдельный предмет на свалке перед тем, как свалить их все вместе в мусорную печь. В данном случае вполне хватит общего понимания, без закапывания в детали, и соответственно тех заметок, которые человек будет делать "для себя". ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2006, 12:43 |
|
Как улучшить старый проект?
|
|||
---|---|---|---|
#18+
Спасибо всем за советы. Я ещё обращусь сюда, когда и если здесь начутся изменения проекта. softwarer В Delphi немного другая ситуация, как мне кажется. Я не могу взять и поменять одно окно, при этом чтобы другие остались как и раньше (как бы мне этого хотелось). Если менять на новые технологии, то менять всё или ничего (VB6 to Dot.Net). Но в любом случае может что-то другое можно будет сделать. К примеру, выделить это окно с её логической частью, как отдельную программу (я ещё подумаю ;) ). Просто об этом рано ещё говорить. PVP Мне бы очень хотелось, чтобы меня взяли руководителем проекта, но к сожелению это не так. Меня просто попросили, как более квалифицированного программиста, посмотреть, что можно сделать. А месяца через 2-3 сказать к каким выводам я пришёл. А так, я работаю обычным (ну, не совсем обычным) программером, исравляю баги, делаю небольшие добавления и т.д. Вот поэтому и хотелось бы знать на какие вещи особенно обращать внимание во время работы (если уж всё равно я пишу или изменяю код), чтобы потом иметь более полную картину того, что я смогу предложить начальству. softwarerPS. Я бы постарался не обидеть ребят. Ни в коем случае - вы сделали фуфло, давайте делать так. А я и не говорю, что они виноваты. Я сам работал в нескольких компаниях, так что примерно понимаю, как получаются нечитабельные программы (сам в своё время делал примерно тоже самое). Просто раньше большинство работало (и сейчас мне кажется тоже) по принципу "Quick and Dirty", особенно если поначалу казалось что проект будет маленький, а потом он разрастался. Кроме того, как я уже сказал, эта фирма существует уже много лет, а эти ребята здесь относительно недолго. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2006, 17:14 |
|
Как улучшить старый проект?
|
|||
---|---|---|---|
#18+
GoldDragonВ Delphi немного другая ситуация, как мне кажется. Я не могу взять и поменять одно окно, при этом чтобы другие остались как и раньше (как бы мне этого хотелось). Если менять на новые технологии, то менять всё или ничего (VB6 to Dot.Net) Смена инструмента - безусловно, более тяжелый процесс, но почти уверен, что и в этом случае можно что-то придумывать. Тут больше вопрос именно владения инструментом; ни по VB, ни по VB.NET, к сожалению, ничего сказать не смогу. GoldDragonМне бы очень хотелось, чтобы меня взяли руководителем проекта, но к сожелению это не так. Меня просто попросили, как более квалифицированного программиста, посмотреть, что можно сделать. Тогда имейте в виду - говоря о "можно изменить", не скромничайте насчет необходимых полномочий. Тут надо смотреть по ситуации, но грубо говоря если будет серьезная модификация, и Вы - единственный, кто в этом разбирается и кто будет нести немалую долю ответственности за результат, нужен соответствующий статус. Говорить "ну ребята, ну давайте ну начнем делать хорошо" можно долго и безрезультатно. GoldDragon softwarerPS. Я бы постарался не обидеть ребят. Ни в коем случае - вы сделали фуфло, давайте делать так. На всякий случай подчеркну, что эта цитата приписана мне по ошибке. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2006, 11:47 |
|
Как улучшить старый проект?
|
|||
---|---|---|---|
#18+
softwarer GoldDragon softwarerPS. Я бы постарался не обидеть ребят. Ни в коем случае - вы сделали фуфло, давайте делать так. На всякий случай подчеркну, что эта цитата приписана мне по ошибке. Извени не туда посмотрел :) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2006, 16:37 |
|
|
start [/forum/topic.php?fid=33&msg=33583741&tid=1549455]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
172ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 239ms |
total: | 513ms |
0 / 0 |