Реинжиниринг программного заклад, разработка программ и веб-сайтов

Автор: Рудюк Сергей Анатольевич
Интернет-адрес: http://corp2.net
E-Mail: rs@corp2.net
Оригинал статьи: [url=http://corp2.net/pages/159/900fb63295a39b0f162b2f1d0de88f5c/index.html]http://corp2.net/pages/159/900fb63295a39b0f162b2f1d0de88f5c/index.html[/url]

Реинжиниринг программного обеспечения

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

Разнообразие программного обеспечения гораздо больше, чем технических решений. Беспричинно вроде они решают самые различные задачи, начиная через связи с оборудованием (драйвера) и заканчивая автоматизацией бухгалтерского учета сиречь 3-х мерными играми.

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

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

Проходит вторично мало времени – через полу-года прежде 2-х лет и оказывается, сколько для данной программе больше нельзя делать, беспричинно подобно она «глючит», «тормозит» и общий перестает работать…

Столкнувшись с данной проблемой, выдумка начинает щупать нового программиста иначе компанию, которая способна привести данную программу к удовлетворяющему афера виду. Однако, как оказывается не постоянно беспричинно просто… Оказывается, большое состав программистов, которые хотя что-нибудь умеют сделать уехало после рубеж. А для рынке остались те, кто уходить не смог или кому не было в этом потребности. Предприятию невыносимо повезет, если оно зараз найдет грамотного и ответственного программиста. Ровно норма, придется перебрать 2-3 человека, встарь, чем они найдут достойную кандидатуру. Впрочем, грамотные программисты дешево не стоят и неизменно хотят перспектив. Поэтому, если вы не проворно развивающееся программное предприятие, да опять не так уж и много платите, то придет момент, который определенный программист уйдет тоже. И снова начинается постоянно вновь: 2-3 безответственных программиста, потом один профессиональный и ответственный, кто 2-3 месяца будет обдумывать в цена дела и чрез 2-3 возраст уйдет…

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

Компании-разработчики

Казалось желание, неизбежный подбор – найти компанию ради дальнейшей разработки программы. Однако, оказывается не все беспричинно просто… Беспричинно якобы на рынке большее количество компаний существует с одной целью – заработать. Такие компании страшно умело «раскручивают» на довольно большие деньги, но быть этом очень протяжно (спорадически, до бесконечности) делают план и никак не выпускают новую версию данной программы. Мне известны проекты, в которых подобные компании «разводили» предприятие для пол-миллиона – много долларов взамен выдавая (путем год-два) полу-фабрикат, кто не может трудиться в реальной обстановке.

Чистый уберечься от таких компаний? Ейей никак! От этого отсутствует защиты, нагрузиться токмо советы:

  • Не начинайте работать с компанией, даже, казалось желание надежной, моментально над миллионным проектом, начинайте с меньшего – от нескольких тысяч прежде пару десятков тысяч.

  • Посмотрите, сколько может предоставить данная компания.

  • Разбейте работу для этапы и ставьте накануне компанией четкие сроки.

  • Обязательно, контролируйте выполненную работу.

  • Кстати присылайте найденные ошибки и замечания.

  • Посмотрите насколько спешно исправляются ошибки. Успевает ли компания решить большинство ошибок в течении дня – двух разве испраление каждой ошибки длится недели – месяцы.

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

Преимущества и недостатки компании-разработчика предварительно отдельным разработчиком

Сейчас, перечислим преимущества и недостатки компании-разработчика предварительно отдельным разработчиком.

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

  • Общество может «стремиться» большие и крайне большие проекты. Изолированный же разработчик крупный план может не осилить физически.

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

  • Стандартизация исходного текста в компнии значительно выше, чем у отдельного разработчика, т.к. в компании работает разряд разработчиков.

  • Технически, компании выше оснащены, чем одинокий разработчик.

  • Источников информации у компании больше, чем у отдельного разработчика. А это отражается для результате – разрабатываемой программе.

  • У компании значительно выше опыт работы с различными проектами, чем у отдельного человека.

  • В компаниях больше направлений развития программных средств.

  • Компания может предоставить комплексный подход быть наличии специалистов различных направлений.

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

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

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

  • Компания не уволится.

  • Компания не умрет и ее не передет автобус.

  • Компания не заболеет и сообразно этой причине не приостановит поддержку.

  • В компании постоянно будут люди, которые смогут продолжить дело.

  • Общество берет на себя головную болезнь по поиску высоко-квалифицированных и ответственных программистов.

  • Общество следит изза технологиями и тенденциями развития программного обеспечения.

Недостатки компании-разработчика накануне отдельным разработчиком:

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

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

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

Почему компании-разработчики не любят реинжиниринг

Не море компаний реально занимается реинжинирингом программ. Коль Вы закажете реинжиниринг, то вероятней только Вам скажут: «легче разработать недавний программный изделие» и пойдут именно этим путем. В результате Вы получите другую программу, которая может, решит те проблемы, которые были, но которая уже, вероятно, довольно иметь новыми проблемами… И не обязательно программного решения…

Почему же беспричинно не добром компании берутся изза реинжиниринг?

Вот они причины:

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

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

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

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

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

Рентабельность реинжиниринга

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

Рассмотрим два примера реинжиниринга из жизни.

1-й образчик: Для одном крупном предприятии с большим количеством филиалов работала список, разработанная штатным программистом. На некотором этапе, известный программист не смог продолжать работу. В результате, для предприятии было 2 версии программы: одна старая версия, работающая на BDE и одна новая, только не накануне конца работающая и доступ к данным в которой был сполна второй: компоненты прямого доступа. Старую версию пытались установить для филиалах, но без успешно, а в центральном офисе она работала с большими ошибками. Из-за чего, возникали большие очереди из заказчиков и в результате, общество терпела большие убытки. Программа была разработана на Delphi, с использованием сервера базы данных Interbase 6. Таблиц в программе было 10-11 штук, а хранимых процедур и триггеров практически не использовалось.

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

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

В данном проекте реинжиниринг прошел полностью успешно. И список пошла для дальнейшее развитие.

2-й прообраз: Только институт более 10 лет разрабатывал программу расчета, CAD-систему. Программа была написана одним инженером, что сам изучил Delphi и написал программу, взяв алгоритмы из программы для Fortran. В качестве базы данных использовались dbf-файлы. Исходный текст программы написан очень плохо, без форматирования, без наименования компонент человеческими названиями (названия, зачастую вообще не изменялись и оставлялись такими, ровно назначал Delphi). Помимо того, способ состояла из ряда dll (на каждую форму), исходный текст которых находился в различных каталогах, а файлы юнитов назывались одинаково. Проекты чертежей хранились в отдельных каталогах отдельных баз данных.

Командировка: Привести программу к коммерческому виду. Организовать систему защиты через копирования. Организовать систему безопасности на современном уровне. Переделать базу данных на Firebird. Организовать возможность импорта/экспорта информации. Увеличить возможности графического редактора (предположим, откат изменений). А так же многое другое такого же типа.

Решение: Исходный текст пришлось полностью переформатировать. Проекты соединять в один exe-файл, а одинаковые юниты удалять. Пришлось построить схему базы данных. В результате оказалось, что база данных избыточная, а строение неправильный составлена. Систему от копирования организовали. Только перевод в Firebird оказался практически не возможным, экономически не выгодным. Список непрерывно сбоила. Надежность ее была адски низкая.

В результате получилсь приблизительно такой график рентабельности обслуживания+разработки программы (сообразно вертикали - в тысячах $, по горизонтали - в количестве компьютеров, реально работающих с программой):

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

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

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

О авторе

Специалисты компнии К2Р занимаются разработкой программного обеспечения много лет. Мы навеки стремились успевать идеального программного решения. Чтобы того, чтобы добиться достойного уровня программного обеспечения нам приходилось много однажды переменять программы. В наших программых мы испробывали однако, испытав на себе различные технологии. Таким образом, сформировался запевало и настоящий основной испытание переделки программ.

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

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

Так подобно, в нашей компании море направлений производства, то вдруг правило, заказчики начинают с нами сотрудничать в 2-5 различных направлениях.

Наша цель – не только заработать капитал, однако и добиться идеала в разработанных нами программах. Обеспечив, тем самым, успех и процветание наших партнеров.