2009-10-28 2 views
6

Я в настоящее время переписываю приложение базы данных нашей компании, которое является интерфейсом Access-VBA для бэкэнд SQL Server (Express).Я переусердствовал с этим проектом?

Я управляю приложением в течение 4 лет или около того, и когда я начал здесь, это был единственный * .MDB-файл на сетевом ресурсе (который получил коррумпирован еженедельно).

С тех пор я сменил БД на многопользовательский * .MDE, позже я перенес данные на сервер SQL Express как * .ADE.

С тех пор приложение работает плавно и очень надежно.

Но, конечно, есть некоторые недостатки с использованием Access (без управления версиями, в зависимости от версии Office и т. Д.), Поэтому я предложил моему боссу переписать интерфейс в C# & WPF.

Несколько лет назад я немного разбирался в Java и C++, но это все. Теперь я работаю над этим проектом в течение 3 месяцев или около того, и это очень сложно. Просто для таких простых задач, как заполнение combobox, я должен искать в сети и читать много вещей.

Я действительно хочу научиться C# (а также многому научился с тех пор, как начал!), И я нахожу это отличной возможностью, но, возможно, я переусердствовал, начиная с настоящего приложения LOB как одного, младшего разработчик?

+0

насчет VBA-> VB.NET/VSTO + продолжения C# интеграции? Есть много троп рядом с коварными ущельями :) – 2009-11-02 20:36:41

ответ

10

Выбор технологии для проекта, потому что вы хотите узнать, что это всегда риск. Я также обеспокоен WPF. Во-первых, это не проверенная технология (в том же смысле, что и Winforms). Это все еще довольно ново. Во-вторых, это создает потенциально проблематичные ограничения на то, в каких системах он может работать. Vista/Win7 или я думаю, что XP SP3. Это может быть или не быть проблемой.

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

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

+2

С одной стороны, да WPF недоказан. С другой стороны VS 2010 построено с ним и очень впечатляет .... – RCIX

+0

Полезность WPF для данных ванили толкающих приложений спорным вопрос тоже. – Benjol

+0

Реакции VS2010 смешаны: http://blogs.ijw.co.nz/chris/index.php/2009/07/visual-studio-2010-10-is-the-new-6-but-not-the- путь-они-хотели/ – cletus

1

Я почти всегда согласен с cletus, но я буду играть обеими сторонами и сказать, где вы рисуете линию? продолжаете ли вы поддерживать этот проект, который был передан вам с конца 1903 года? Когда нужно укусить пулю и переписать систему? Я думаю, что, когда проект рассматривается как разрозненный как то, что вы описываете, вы должны разбить систему на функции, основные этапы, которые вы должны достичь и протестировать тестовый тест, тесты, которые проверяют функцию, которую вы переписываете.

+0

«Приложение работает гладко и очень надежно». Работа с контролем версий и версиями Office тривиальна для перезаписи. – JeffO

+0

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

1

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

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

2

Корабль рано и часто отправляйте.

Я согласен с cletus() по этому вопросу. "Отправим его!" это быстрое чтение с некоторыми хорошими советами по этому вопросу.

Большой риск, связанный с переработкой, заключается в том, что вы тратите на него много времени, а затем проект либо отменяется до того, как он находится где-то близко к концу, либо поставляется со 100% функциональности в 50% государство. Если ваш переписывать находится в руках некоторых пользователей, тогда проект с меньшей вероятностью будет отменен, и пользователи будут управлять функциональностью, в которой они нуждаются. Может оказаться, что у старого приложения много функциональности, которая не используется много, так что вы можете получить большую часть стоимости в руки пользователей за меньшее время, чем требуется для полной перезаписи.

Как только ваш код будет создан, вы будете чувствовать себя счастливее и быть еще более мотивированным, и это поможет вам работать быстрее.

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

Вы недовольны темпом прогресса (или «скоростью» в Agile-speak)?

Очевидно, что если вы могли бы производить больше каждый день, тогда задача могла бы казаться менее подавляющей. Существует большая разница в производительности между лучшими программистами и средними (см. Peopleware или Мифический Человек Месяц), поэтому все, что вы можете сделать, чтобы стать лучшим программистом, может существенно повлиять.

В вашем случае я задаюсь вопросом, поможет ли какое-то обучение? Я обычно не большой поклонник обучения в классе, но если у вас нет много опытных людей вокруг вас, чтобы учиться, это дало бы вам начало. Если обучение не является вариантом, есть ли у вас локальная группа пользователей C#? Если в вашей компании есть более опытные разработчики, можете ли вы обратиться к ним за советом? Или просто забрать мозги у водоохладителя?

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

У вас есть (и используйте) все необходимые инструменты? Абсолютный минимум: a. Система управления версиями. b. База данных отслеживания ошибок. c. Хорошая среда разработки, например. Visual Studio d. Лучшая среда разработки, чем Visual Studio! например Resharper.

См. link text для лучшего списка.

Удачи вам!

+0

Я использую систему управления версиями (VisualSVN + TortoiseSVN), но у меня нет базы данных отслеживания ошибок (можете ли вы порекомендовать бесплатный?), И я использую C# Express. Если я доставляю действительно хороший продукт, я могу получить лучшую среду IDE, например Visual Studio (стандартное должно быть достаточно, я думаю?) –

+0

Здесь есть хорошее сравнение систем отслеживания ошибок и проблем: http://en.wikipedia.org/wiki/Comparison_of_issue_tracking_systems JIRA, Bugzilla и Trac - все с открытым исходным кодом, широко используются и имеют интеграцию с Subversion. Я не могу порекомендовать один из них сам, потому что я использую FogBugz 6. FogBugz не является бесплатным, но он отличный, и есть хостинг Student и Startup, бесплатно для команд из одного или двух человек. Вам не обязательно быть студентом или стартапом, чтобы использовать его, условия здесь: http://www.fogcreek.com/FogBugz/StudentAndStartup.html – richj

+0

Resharper добавляет много дополнительных возможностей производительности Visual Studio 2008: http: //www.jetbrains.com/resharper/features/ComparisonMatrix_R4.html Это дополнение для Visual Studio 2005/2008. Экспресс-версия не поддерживается, но похоже, что это стандартная версия. Даже если у вашей компании нет большого бюджета на программные средства, стоит подумать об этом, потому что она будет очень быстро платить за себя и быстро. – richj

4

Я бы сказал, что вы сделали все, что вы сделали на C#, и вернитесь в свое приложение Access.

Вы создаете переднюю часть базы данных для задней части SQL Server. Доступ идеально подходит для этого - это вся его причина для существования.

Для управления версиями есть Visual SourceSafe (хотя я не совсем понимаю, зачем вам нужен проект для одного человека). Что касается зависимости от версии Office, это уже не столько проблема с Access 2000, хотя ADP очень зависят от версии, потому что они не ведут себя одинаково во всех версиях Access. И в этом отношении MS уже несколько лет отказывается от ADP в пользу MDB/MDE-интерфейса, связанного с SQL Server через ODBC.

Я думаю, вы выбросили ребенка с водой для ванны и должны вернуться в Access для вашего фронтального конца. Вы хотите работать в приложении? Или вы хотите сказать, что вы разработчик C#?

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

+1

Это может быть не тот ответ, который вы хотели услышать, но я думаю, что Давид дал прекрасный ответ. Интерфейс доступа, подключенный к SQL Server, с SourceSafe для управления версиями - это настройка на моей работе (хотя не то, что я работаю напрямую). Есть ли солидный бизнес-пример для принятия того, что у вас уже есть, и, в сущности, от этого (но с New Technology Compliance (TM))? –

+0

Это действительно не то, что я хотел услышать, правильно =) Но я забыл упомянуть одно: я работаю здесь как неполный рабочий день, пока я посещаю колледж (информационные технологии). Мой босс знает, что я еще мало знаю о C# и что весь этот проект означает, в первую очередь, многому для меня. Я задал вопрос больше с личной точки зрения, чем с точки зрения бизнеса и ROI. (Мне, конечно, не платят за чтение stackoverflow весь день) –

+0

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

2

Если вы хотите изучить основную новую технологию, вам не рекомендуется начинать с перезаписи критически важной системы. Это почти стереотипная ошибка - такая вещь, которая заканчивается тем, что получает 250 голосов здесь, на Stackoverflow, под вопросом вроде «Какая самая большая ошибка, которую вы когда-либо видели при обновлении бизнес-приложения?»

Вам было бы лучше посоветовать сначала выполнить свой собственный проект в .NET, даже небольшой. Например, чтобы мои ноги были мокрыми с помощью jQuery, я недавно написал игру «Память» (там, где вы просматриваете две плитки одновременно, ища подходящие фотографии). Вы могли бы сделать что-то подобное или простую программу чековых книжек.

Если вы абсолютно должны выполнять фактическую работу в основном приложении своей компании в качестве учебного проекта, выберите небольшую и дискретную (отдельно от остальной части приложения) единицу работы и сделайте это в качестве тестового проекта. Он не должен нарушать существующее приложение, просто добавьте отдельную функциональность. Основываясь на этом эксперименте, вы и ваш босс можете решить, стоит ли идти вперед со следующей, чуть большей единицей работы.

1

Вы можете использовать SourceSafe с MS Access, он отлично сочетается. Я бы порекомендовал это, будь то проект одного человека, он спас мой бекон пару раз ...

Я не уверен, что WPF будет подходящим выбором для первого приложения, это крутая кривая обучения и преимущества для бизнес-приложения на мой взгляд далеко не убедительны. C# или VB.Net с привязкой данных могут быть мощными и быстрыми в построении, но мне непонятно, что это будет предлагать сверх вашего текущего приложения, которое уже «очень надежно». Использование SQL Server в качестве внутреннего блока устраняет многие возражения (производительность, масштабируемость и т. Д.), Связанные с использованием Access для критически важного для бизнеса приложения, действительно, у нас есть интерфейсы Access к базам данных SQL Server с сотнями одновременных пользователей, которые работа хорошо.

Я бы сохранить .Net для следующего приложения .....

Смежные вопросы