Pull to refresh

Разработка этапы, ошибки и преимущества

Reading time 4 min
Views 5K
В этой статье я попытаюсь рассмотреть разработку программного обеспечения: выделить процессы и этапы, указать на преимущества и недостатки тех или иных приемов, предупредить от совершения ошибок.



Постановка задачи

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

Составление технического задания.

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

Создание интернет магазина

Написать интернет магазин с возможностью добавлять категории, добавлять товар по категории с картинкой и описанием.

Участники системы:
1) Администратор
2) Покупатель

Возможности пользователей

Возможности администратора:
1) Добавлять удалять и редактировать категории
2) Добавлять удалять и редактировать товары
3) Добавлять удалять и редактировать заявки на покупку товара

Возможности пользователя/покупателя
1) Добавлять товар в корзину
2) Оформлять покупку

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

Давайте рассмотрим подробнее и разобьем на этапы:
1) Рисование и верстка дизайна.
2) Проектирование базы данных.
3) Проектировние архитектуры.
4) Написание программного кода.
5) Написание базы данных.а
6) Покупка хостинга и домена.
7) Продвижение сайта.

А если мы захотим, добавить еще 2 возможности:
1) Регистрация пользователя
2) Пользователь может добавлять товары

Вроде бы отличие в двух строчках, но это уже не интернет магазин, а задача может перерости в сервис на подобии avito, alibaba, а сроки и сложность возрасти в разы (таблиц станет не 5-10, а 100).

Ошибки в проектировании примеры:
Часто сроки сложность и стоимость разработки может увеличиваться из за ошибок в архитектуре и постановке задачи, примеры:

1) Был сервис который показывал геолокацию товара или услуги на карте при помощи API яндекс или гугл карт, а потом понадобились специфические вычисления которые сторонние сервисы не предоставляют в результате: нужно установить движок карты, сменить базу данных, сконвертировать данные, написать нужные формулы, адаптировать старый код под возможности модуля карт. Это повлечет за собой временные и денежные затраты.

2) Была неправильно смоделирована база данных, необходимо добавить несколько полей и изменить программный код.

3) Неправильно составлено техническое задание: необходимо полное переписывание.

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

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

Правильный выбор инструментов для разработки
1) IDE — во многих современных средах разработки предусмотрен: автокоплит (автоматическое дополнение кода), интеграция с системой контроля версий, сестемами сборки версий, подсказки об ошибках, интерграция с системами тестирования, интеграция с системами дебага.
2) Система контроля версий: снижает риски потерять программный код, дает возможность командной разработки, дает возможность разделять код на ветки, дате возможность восстанавливать старые версии кода.
3) Система управления проектами: дает возможность ставить задачи для команды, разделять задачи, контролировать процесс разработки.
4) Фреймворк: позволяет ускорить разработку, позволяет разделить логику, может иметь специфический набор возможностей для ваших задач.
5) Выбор языка и базы данных тут рассматриваться не будет — лично мое мнени их нужно выбирать от задачи.

Итеративная и командная разработка и ошибки
В команде есть три разработчика их обязанности разделены по частям кода, в понедельник они собрались и решили какие задачи будут выполнять в течении следующих двух недель:
1) Первый решил поменять модель, так что бы появилась возможность выводить и отслеживать дату создания.
2) Второй решил исправить регистрацию.
3) Третий менял дизайн.
В течении недели все трое писали код и вносили изменения в репозиторий, в результате первый разработчик изменил код так, что «отвалилась» часть за которую был ответственен второй программист. Части в которых были внесены изменения работают хорошо, а в других местах где он незаметил начали сыпаться ошибки.

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

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

Правильная постановка сроков

За сколько вы создадите типовой интернет магазин? У вас все настроенное, вы давно работаете, в совершенстве владеете языками и системами управления контента и работаете командой. 5 дней может быть неделя (качественного отказоустойччивого приложения вы за этот срок неполучите)? Смело умножайте на 2, для того что бы учесть форсмажоры и избежать конфликтов.

Думаю не трудно себе представить экономию: сил, времени, денег и нервов. Учтя все вышеописанные нюансы, приемы и ошибки.
Tags:
Hubs:
-21
Comments 8
Comments Comments 8

Articles