В этой статье я попытаюсь рассмотреть разработку программного обеспечения: выделить процессы и этапы, указать на преимущества и недостатки тех или иных методик, предостеречь от ошибок.
Постановка задачи Важнейшим этапом разработки программного обеспечения является постановка задачи — от правильности постановки задачи будет зависеть конечный результат. Составление технического задания.
Техническая спецификация — это документ, описывающий все возможности программного обеспечения, утрированный пример: Создание интернет-магазина Написать интернет-магазин с возможностью добавления категорий, добавлять товары по категориям с картинкой и описанием.
Участники системы: 1) Администратор 2) Покупатель Возможности пользователя Возможности администратора: 1) Добавлять, удалять и редактировать категории 2) Добавляйте, удаляйте и редактируйте товары.
3) Добавлять, удалять и редактировать заявки на покупку товаров Возможности пользователя/покупателя 1) Добавьте товар в корзину 2) Совершить покупку Вот так выглядит техническое задание со стороны заказчика, добавьте сюда обязательства и это может стать дополнением к договору.
Давайте рассмотрим подробнее и разобьем его на этапы: 1) Чертеж и макет конструкции.
2) Проектирование базы данных.
3) Архитектурный дизайн.
4) Написание программного кода.
5) Написание базы данных.
а 6) Покупка хостинга и домена.
7) Продвижение сайта.
И если мы захотим, мы можем добавить еще 2 возможности: 1) Регистрация пользователя 2) Пользователь может добавлять товары Вроде разница в две строчки, но это уже не интернет-магазин, и задача может перерасти в сервис типа авито, алибаба, а время и сложность значительно возрастут (таблиц станет не 5-10, но 100).
Примеры ошибок проектирования : Зачастую сложность и стоимость разработки могут увеличиться из-за ошибок в архитектуре и постановке задачи, примеры: 1) Был сервис, который показывал геолокацию товара или услуги на карте с помощью API карт Яндекса или Google, а потом нужны были конкретные расчеты, которые сторонние сервисы не дают, в результате: нужно установить карту движок, изменить базу данных, преобразовать данные, написать необходимые формулы, адаптировать старый код под возможности модуля карты.
Это повлечет за собой временные и денежные затраты.
2) Неправильно смоделирована база данных, необходимо добавить несколько полей и изменить код программы.
3) Неправильно составлено техническое задание: необходимо полное переписывание.
4) Выбраны неправильные технологии разработки: вы пишете многозадачное, многопоточное приложение на языке, который этого не предусматривает; выбранный фреймворк не имеет необходимых возможностей.
Список можно продолжать бесконечно в зависимости от ситуации; лучше иметь грамотное техническое задание и представить всю картину.
Выбор правильных инструментов разработки 1) IDE — многие современные среды разработки обеспечивают: автодополнение (автоматическое завершение кода), интеграцию с системами контроля версий, системы сборки версий, подсказки об ошибках, интеграцию с системами тестирования, интеграцию с системами отладки.
2) Система контроля версий: снижает риск потери программного кода, дает возможность командной разработки, дает возможность разделения кода на ветки и возможность восстановления старых версий кода.
3) Система управления проектами: дает возможность ставить задачи перед командой, распределять задачи и контролировать процесс разработки.
4) Фреймворк: позволяет ускорить разработку, позволяет разделить логику и может иметь определенный набор возможностей под ваши задачи.
5) Выбор языка и базы данных здесь рассматриваться не будет — мое личное мнение, что их следует выбирать в зависимости от задачи.
Итеративная и командная разработка и ошибки В команде три разработчика, их обязанности разделены на части кода, в понедельник они собрались и решили, какие задачи будут выполнять в течение следующих двух недель: 1) Первый решил изменить модель, чтобы можно было отображать и отслеживать дату создания.
2) Второй решил поправить регистрацию.
3) Третий поменял дизайн.
В течение недели все трое писали код и вносили изменения в репозиторий, в результате первый разработчик изменил код так, что та часть, за которую отвечал второй программист, «отвалилась».
Те части, где были внесены изменения, работают хорошо, а вот в других местах, где не заметил, стали появляться ошибки.
Проведение тестирования Я начал писать собственный фреймворк для разработки онлайн-игры, определив набор возможностей, начал его тестировать с использованием стандартных функций языка (java).
Далее, чтобы протестировать возможности фреймворка, мне пришлось написать еще несколько глобальных тестов, имитирующих пользователя.
Конечно, проводить кучу тестов неудобно и довольно дорого — поэтому придется сделать их автоматическими.
Преимущества рефакторинга Рекомендую исправлять недостатки в архитектуре и программном коде, как только будет замечена ошибка.
Постоянный рефакторинг занимает больше времени при разработке, но дает заметный прирост общих временных затрат, чем если бы вы начали вносить несколько глобальных изменений (крупных переписываний) и накопили кучу ошибок.
Правильная постановка сроков Сколько времени вам понадобится на создание типичного интернет-магазина? У вас все настроено, вы давно работаете, свободно владеете языками и системами управления контентом, работаете в команде.
Дней 5, а может и неделя (качественное, отказоустойчивое приложение за этот срок вы не получите)? Смело умножайте на 2, чтобы учесть форс-мажорные обстоятельства и избежать конфликтов.
Думаю, несложно представить себе экономию: сил, времени, денег и нервов.
Учет всех нюансов, приемов и ошибок, описанных выше.
Теги: #дизайн #тестирование #работа в команде #программирование
-
Спрос На Облачные Вычисления
19 Oct, 24 -
История Успеха, Или Dev+Devops+Ops
19 Oct, 24 -
Javaone/Oracle Develop: Общие Впечатления
19 Oct, 24 -
Обновление Часового Пояса В Java
19 Oct, 24 -
Tencent Полностью Купила Riot Games
19 Oct, 24 -
Интересные Международные События В Марте
19 Oct, 24