Вместе с тем, при росте спроса со стороны государственных и частных организаций на все более и более сложные системы автоматизации предприятий, надежные операционные среды, комплексы глобального телекоммуникационного управления, возникла необходимость в постановке процесса разработки программного обеспечения (ПО) на поток, превращения программирования в ремесло. Было разработано несколько методологий и стандартов, позволяющих эффективно организовывать труд сотен программистов средней квалификации, точно укладываться в отпущенные сроки и средства и не зависеть от настроения нескольких талантливых ведущих специалистов. Отрицательная сторона подобных методологий - отсутствие творческого элемента в работе и своеобразная конвейерная «потогонная» система промышленного производства программ.
Принципиальные возможности человека
Объем проекта, строк исходного кода | Тип программы | Время создания | Вероятность успешного завершения | Число программистов |
100 | Утилиты для временных нужд | 1 день | 100% | 1 |
1000 | Небольшие приложения и дополнения, вносимые в готовые системы | до 1 месяца | 100% | 1 |
10 000 | Типичная средняя программа, разрабатываемая на заказ | до 6 месяцев | 85% | 1 (предел возможностей среднего программиста) |
100 000 | Большинство современных коммерческих автономных и небольших клиент-серверных приложений | 1 год | 85% для групп, 35% для одиночки | 10 |
1 млн | Крупные системы автоматизации | 1,5 – 5 лет | 50% для группы, 0% для одиночки | 100 |
10 млн | Операционные системы, большие военные комплексы. Предел сегодняшних возможностей. Стоимость подобной разработки может равняться стоимости большого стадиона или крупного корабля. | 5 – 8 лет | 35% | до тысячи |
Программы небольшого и среднего размера (несколько тысяч строк) создаются, как правило, в два этапа. Сначала необходимо точно установить, что надо сделать, продумать соответствующий алгоритм, определить структуры данных, объекты и взаимодействие между ними (это этап системного анализа), а затем выразить этот алгоритм в виде, понятном машине (этап кодирования).
Если же разрабатывается крупный проект объемом от десятков тысяч до миллиона строк кода, тогда приходится применять специальные методологии проектирования, охватывающие период разработки программного обеспечения (ПО).
Классический период разработки ПО.
Формируются и анализируются требования к проекту. Этот этап самый важный, т. к. неправильное формулирование требований приводит к выполнению ненужной работы. Сегодня около 60% крупных проектов завершаются неудачей именно из-за ошибок на стадии подготовки требований. На основе требований определяется примерный объем проекта и его трудоемкость, рассчитываются будущие трудозатраты и определяется его стоимость. После согласования требований подписывается контракт на разработку ПО. Примерный объем работ на этом этапе – 5% от объема всего проекта. Начинается предпроектное обследование объекта автоматизации. С помощью CASE-средств составляется формальная модель его работы, модель базы данных, объектов и потоков информации. На этом этапе привлекаются специалисты заказчика и эксперты, хорошо знакомые с предметной областью, для которой составляется задача. Примерный объем работ второго этапа – 10% от общего. На основе формальной модели составляется подробное техническое задание для программистов, спецификации отдельных модулей, таблицы баз данных, другая сопроводительная документация. Готовится подробный календарный план работ, где указываются все сроки, конкретные исполнители и выполняемые объемы работ (понедельно, помесячно). Примерный объем работ третьего этапа – 10% от общего. Выбирается методология разработки ПО и начинается разработка (кодирование). Крупные компании имеют собственные методологии, ориентированные на конкретные задачи (как правило, это задачи автоматизации предприятий), однако все методологии имеют общие черты и более менее серьезно различающихся известно около двух десятков. Выше, в частности, упомянуты методологии структурного и объектного проектирования. Хотя объектный подход, безусловно, один из самых передовых, он подразумевает высокую квалификацию всех исполнителей без исключения и поэтому распространен не очень широко. Достаточно популярна методология итерационного проектирования, ориентированная на использование сред быстрого проектирования (RAD-сред) и систем автоматической генерации исходных текстов на основе созданной формальной модели. Такой подход хорош тем, что позволяет быстро создать первый работающий прототип программы, когда еще требования к ней окончательно не определены, а в дальнейшем, на следующих итерациях (от двух до пяти), постепенно детализировать и реализовывать конкретные возможности, пропущенные по каким-либо причинам на предыдущей итерации. Примерный объем этих работ-10% от общего объема проекта. Когда программа закончена (готова работоспособная альфа-версия), она поступает к тестерам компании-исполнителя, которые начинают проверять ее на наличие ошибок и сообщать о найденных ошибках программистам. Когда число ошибок, выявляемых за определенный срок (неделя, месяц), снижается ниже экспериментально подобранного уровня (на основе аналогичных проектов), начинается бета-тестирование программы у заказчика. Примерный объем этих работ – 10% от общего объема проекта. После того, как заказчик удовлетворен качеством продукта, начинается его внедрение – подготовка к окончательному запуску в эксплуатацию. Этот этап самый трудоемкий и «нудный» и занимает порой до 90% времени всего проекта. Для систем автоматизации больших предприятий он растягивается на годы. После того как новая система готова к работе, сотрудников организации заказчика нужно обучить работе с этой системой, потому что книг о ней не написано, да и содержится в такой системе, внедренной на конкретном предприятии, множество нюансов, связанных со спецификой работы. Примерный объем трудозатрат на обучение – 5% от общего объема проекта. После того как заказчик подписывает акт приемки, проект считается завершенным, но связь с исполнителем не теряется. Особенно в первое время у пользователей системы постоянно будет возникать множество вопросов по работе с ней. Неизбежно и возникновение ошибок, которые требуется устранять. Кроме того, исполнитель может выпускать новые версии системы, и старая система потребует обновления. Сотрудничество с заказчиком по обслуживанию системы называется сопровождением. Оно бесплатно на определенный гарантийный срок (например, год).Компания может организовать у себя очень эффективный процесс разработки ПО, однако заказчик вполне обоснованно может ей не поверить. Существует международная система сертификации компаний по стандарту качества ISO 9000, которая гарантирует, что данная компания выполняет программные проекты в срок и с высоким качеством.
Методы маркетинга программного обеспечения:
- коммерческое ПО – средства в разработку ПО и на рекламу вкладывает либо сам разработчик, либо издатель, который нанимает исполнителя. По окончании работ издатель получает все имущественные права на созданный продукт. При этом может быть оговорено получение исполнителем некоторого процента (роялти) с каждой проданной копии (порядка 1-3%).;
- условно-бесплатное ПО (shareware) – не имея средств на рекламные компании, разработчики предоставляют возможность получения ознакомительных версий их программ через Интернет. Если человеку эта программа нравится, он оплачивает небольшую сумму и получает работоспособную версию. В Интернете есть немало узлов, которые предлагают бесплатные услуги по размещению таких программ;
- бесплатное ПО (freeware, public domain) – такие программы не имеют никаких ограничений, однако автор может попросить заплатить ему некоторую сумму, не настаивая, впрочем, на этом (это метод freeware). Некоторые программы авторы называют «общественным достоянием» (public domain), ничего взамен не требуют и нередко распространяют такое ПО в исходных текстах. Как правило, стимулом к созданию freeware/public domain- программ служит стремление повысить свою квалификацию, установить контакты с коллегами, а в случае удачно созданной программы получить известность и, как правило, приглашение на хорошую работу.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 |


