Понятие «современная методология разработки программ»включает общие принципы и правила решения задачи с помощью компьютера.
Удовлетворительного общего описания механизма решения задач не существует. Более того, невозможно четко отделить постановку задачи от ее решения. Использование компьютера делает этот процесс еще более сложным. Поэтому методология программирования призвана не жестко регламентировать деятельность программиста, а исследовать и рекомендовать организационные рамки, способствующие написанию хороших программ. Цель – повышение производительности труда программистов, причем «производительность» подразумевает оптимальное использование и человеческих, и компьютерных ресурсов.
Не останавливаясь на философских аспектах методологии, в данном пособии приведем только основные ее положения, на которых базируется процесс разработки программы, и основные этапы этого процесса. Поэтому далее будем говорить о технологииразработки программ.
● Для оценки упомянутой производительности используется ряд критериев качества программ. Поскольку такое комплексное понятие производительности формально определить невозможно, критерии также оказываются не строго определенными, взаимосвязанными, а иногда противоречивыми. В разных источниках могут приводиться различные наборы критериев. Но, несмотря на это, как правило эти наборы сводимы один к другому и хорошо работают!
VS Code плагины для Frontend разработчиков
Автор предлагает следующую совокупность критериев.
- Работоспособность.
- Правильность.(программа должна решать именно поставленную, а не более широкую, более узкую или измененную задачу).
- Надежность (программа должна работать при любых исходных данных – анализировать их правильность и выдавать результаты или диагностику ошибок).
- Читабельность (текст программы – итоговый носитель всей информации о решении, поэтому он должен иметь четкую и ясную организацию, отображающую решение).
- Легкость отладки и тестирования.
- Модифицируемость (возможность внесения изменений в программу).
- Документированность (наличие документации по всему процессу разработки, начиная от постановки задачи); документированность обеспечивает возможность передачи программы другим лицам, или отчуждениепрограммы.
- Простота пользования, наличие сервиса.
- эффективность применительно к компьютеру (использование минимума машинных ресурсов – памяти и времени выполнения).
Видно, например, что критерии 4, 6, 7 взаимосвязаны, критерий 5 ими определяется; критерии 3 – 8 противоречат 9-му, и сам он внутренне противоречив. Делать акцент на тех или иных критериях следует в зависимости от реальной ситуации. Так, мощность современных компьютеров в большинстве случаев позволяет не слишком учитывать ресурсы. Однако если речь идет о специальных расчетных инженерных задачах, время решения которых объективно велико, на первый план выступают ресурсы. ● Принципысовременной технологии разработки программ
- Разбиение процесса создания программы на четкие этапы и обеспечение максимальной их автономности:
- не следует переходить к очередному этапу, не закончив предыдущего;
- предыдущий этап может захватывать последующий, но не наоборот.
- Уделение основного внимания начальным этапам разработки – уточнению постановки задачи (спецификации) и проектированию алгоритма и данных.
- Использование для проектирования специального языка высокого уровня. Этот принцип носит название надъязыкового подхода.
- Использование метода нисходящего проектирования, состоящего в постепенном разбиении задачи на подзадачи.
- Использование принципа структурного программирования, предписывающего построение алгоритма из ограниченного числа базовых конструкций.
При таком подходе суть решения закладывается в постепенно создаваемый проект, а собственно составление программы сводится к перекодировке алгоритма с языка проектирования на конкретный алгоритмический язык и представляет собой один из этапов, называемый кодированием. ● Жизненный цикл программного обеспечения– это весь процесс его создания и применения от начала до конца. Этапы жизненного цикла и удельный вес общих затрат на каждый из этапов приведены на рис. 1.1. Как видно из рисунка, примерно половина затрат приходится на этап, называемый сопровождением. Суть сопровождения – внесение изменений в уже находящуюся в эксплуатации программу и поддержание ее в рабочем состоянии. Это чрезвычайно важная часть жизни программы, рассмотрение которой выходит за рамки пособия. Заметим только, что эффективность сопровождения практически полностью определяется качеством выполнения предшествующих этапов разработки. ● Этапы разработки программыотображены в нижней половине рисунка в той последовательности, как они выполняются. Этапы обладают свойством преемственности, но принципиально важно, чтобы эта преемственность реализовалась сверху вниз, т.е. чтобы предшествующие этапы захватывали последующие, а не наоборот. Возвратов назад по возможности быть не должно. Кратко охарактеризуем этапы. 1. Составление внешней спецификации. Цель – уточнение постановки задачи, а именно:
- точная формулировка задачи и всех вводимых ограничений;
- определение состава и структуры входных и выходных данных и формы их ввода и вывода;
- описание аномалий– ситуаций, при которых решение не может быть получено (выход данных за границы диапазона, деление на ноль и т.п.);
- описание тестов– примеров, на которых будет проверяться работа программы;
- описание метода решения– связей входных и выходных величин, общей идеи и схемы решения задачи.
Спецификация представляет собой интерфейс между разработчиком программы и ее пользователем. Большая часть желательных качеств программы должна быть сконцентрирована в ее спецификации, так, чтобы программа после первой ее реализации требовала улучшений в минимально возможной мере.Исключением является быстродействие, которое можно повышать уже после реализации программы. 2. Проектирование алгоритма. Цель – создание алгоритма,понятного человеку. Центральный и наиболее трудоемкий этап. Требует творчества и не может быть полностью формализован. Созданный на этом этапе текст алгоритма – носитель всей информации о решении, поэтому для записи алгоритма целесообразно использовать наиболее универсальные и одновременно точные средства – «отказ от красивого и умного в пользу незамысловатого и четкого». Такими средствами являются полуформальные языки, используемые для проектирования –псевдокоды. 3. Кодирование программысостоит в переводе алгоритма с одного языка, достаточно жесткого (псевдокода), на другой, полностью формализованный (язык программирования). Если первые два этапа выполнены тщательно, то кодирование выполняется без особых трудностей. 4. Отладка и тестирование. Цель – получение работоспособной программы. Очень важный этап, требующий особого рассмотрения и здесь представленный только самыми основными положениями. Отладка– процесс изменения программы с целью исправления ошибок. Тест– совокупность специально подобранных входных и соответствующих им выходных данных, используемая для контроля правильности программы. Тестирование– исполнение программы на наборе тестов на компьютере. Отладка включает тестирование. Принципиальная трудность проектирования тестов состоит в практической невозможности составления всех тестовых наборов данных для всех возможных режимов работы алгоритма. Поэтому задача проектирования тестов сводится к проектированию ограниченногоих набора, гарантирующегос достаточной достоверностьюправильную работу программыво всехпрактически значимых режимах. Содержание тестов определяется спецификацией задачи и логикой ее решения. Функциональные тестысоставляются на уровне спецификации, до решения. Будущий алгоритм рассматривается как«черный ящик»- функция с неизвестной структурой, преобразующая входы в выходы. Суть функциональных тестов: каким бы способом ни решалась задача, при заданных входных значениях должны получиться соответствующие выходные значения. Структурные тестысоставляются для проверки логики решения, или логики работы уже готового алгоритма. Логика определяется последовательностью операций, их условным выполнением или повторением. Совокупность структурных тестов должна обеспечить проверку каждой из таких конструкций. Чаще всего совокупность тщательно составленных функциональных тестов покрывает множество структурных тестов. Длительность и сложность данного этапа полностью определяется качеством выполнения предыдущих этапов. 5. Документирование. Для удобства описания представлено как некоторый этап, но по сути таковым не является. Элементы документации – все элементы проекта, полученные при его разработке, т.е. описание результатов отдельных этапов. Если процесс разработки программы организован правильно, то документация появляется постепенно и процесс ее создания сопровождает все этапы. Поэтому стрелка-окружность на рис. 1.1 проходит через все этапы жизни программы.
С чего начать разработку проекта? — Вопросы и Ответы #10
Источник: studfile.net
Разработка программного обеспечения: этапы и принципы
Основной нашей специализацией в EDISON является разработка сложного заказного программного обеспечения на платформах Windows, Linux, MacOS и мобильных Android, iOS, Windows Phone. За время своей работы мы выполнили свыше нескольких сотен крупных проектов на самом высоком уровне качества разработки и обслуживания клиентов. К сожалению, большая часть самых интересных проектов надёжно скрыты за NDA. Но каким бы ни было разрабатываемое программное обеспечение: системное, прикладное, веб-приложение или приложение для мобильных, — общая схема разработки и ее принципы одинаковы.
В прошлой статье мы рассказали о наших принципах проектирования ПО, в этом посте перейдём непосредственно к процессу разработки в Центре разработки EDISON.
Этапы разработки программного обеспечения
В зависимости от вида, масштабов и потребностей проекта определяется порядок разработки. Он будет несколько отличаться для разработки мобильных приложений, встроенного ПО, решений для автоматизации и БД, но общая последовательность действий для создания ПО универсальна:
Подробно про первый и второй этапы (подготовительный и проектирование программного обеспечения) можно перечитать в прошлой статье.
Перейдём к созиданию:
- Дизайн — вторая по важности составляющая продукта после технических характеристик, влияющая на эффективность и скорость взаимодействия пользователя с ним. Требования к дизайну определяются ТЗ — как правило, важны простота, интуитивность и минимальные затраты на совершения действия (достижение результата), а также красота и соответствие стилю компании и (или) продукта.
- Код — та часть работы, которая обычно ассоциируется с разработкой ПО как таковой. Важно, чтобы код был в достаточной мере оптимизированным, лаконичным и понятным. Назначаем на подобранные под специфику задания в ТЗ языки специализирующихся на их использовании программистов.
- Тестирование. Тестирование в EDISON проводится на каждом этапе разработки ПО, включает множество тестов по плану тестирования, кастомизируемому с учётом специфики проекта на этапе составления технического задания. Результаты тестирования документируются и доступны клиенту в режиме реального времени. Оплата за продукт производится только после прохождения всех видов тестов, в том числе клиентских.
- Документирование — процедура, фиксирующая план, процесс и результат разработки программного обеспечения. Включает в себя всю исходную информацию (ТЗ, макеты), планы работ, затрат, тестирования, список задач исполнителей в каждый момент времени, отчеты о работе и так далее. Документация необходима для быстрого и точного выявления ошибок, прозрачности совместной работы, как обязательная юридическая часть договора.
Принципы разработки программного обеспечения
Важный момент для компании, занимающейся разработкой ПО, — определиться с базовыми принципами работы. У каждого разработчика свой подход, свои ценности и приоритеты. Для компании EDISON такими принципами при разработке являются:
- Ориентация на качество. Мы прилагаем все усилия, чтобы это было не избитым маркетинговым клише, а объективной реальностью. Бесперебойность работы и удовлетворенность конечным результатом обеспечивают:
- следование ГОСТам, лучшим практикам и методологиям качественной разработки (RUP, Agile),
- лучшие спецы, четкое разделение труда и хорошая мотивация срок+качество,
- отлаженная и мощная система тестирования продуктов,
- качественное и прозрачное планирование и выполнение задач, система управления разработкой и обязательность грамотного технического задания,
- документирование процесса и результата,
- гарантии на разработанные продукты, техническая поддержка и обучение пользователей,
- понятная и удобная система оплаты за разработку ПО.
- Адаптивность и гибкость. В некоторых проектах нет возможности четкой формулировки требований на этапе составления ТЗ, а иногда у клиента уже на этапе разработки программного обеспечения появляется потребность в изменениях, — мы с пониманием относимся к таким ситуациям и заранее предусматриваем их вероятность и согласовываем с клиентом условия работы при прецеденте.
Примеры реализованных EDISON проектов
Программное обеспечение для микротомографа для изучения материалов, созданного учёными Томского Государственного Университета
Томограф с микроточностью распознает внешнее и внутреннее устройство органических и неорганических объектов размером до спичечного коробка. Программа сканирует предмет, строит 3D модель, выделяет цветом участки одинаковой плотности.
Электронная библиотечная система Vivaldi
Система для контроля и учета рабочего времени «Большой Брат»
Удобный сервис для компаний, особенно использующих гибкий график работы для сотрудников, позволяющий отслеживать и контролировать реальную занятость сотрудников на рабочем месте. Система не пропустит ни одного разгильдяя. Работодателю видно, когда сотрудник пришёл на рабочее место, когда покинул, отлучался, отслеживается бездействие за компьютером и время сверхурочных работ.
Если есть сомнения, занимается ли человек работой, с любого компьютера можно получить скриншот рабочего стола. Сервис удобен и для сотрудников разных отделов: вы можете точно определить, кто из коллег сейчас доступен, а кто, например, ушёл на обед; вы можете легко сами контролировать свой свободный график, выбирая время обеда, начала и конца рабочего дня. Ну, а работодатель может сделать выводы насчёт каждого нанятого человека для повышения эффективности работы организации.
Есть замечания по нашей методологии или вы хотите поделиться своим опытом? Рады будем пообщаться в комментариях, в нашей группе в Фейсбуке или во Вконтакте.
- EdisonSoftware
- разработка
- проектирование
- веб-разработка
Источник: habr.com
Цикл разработки и его этапы
В процессе создания программного обеспечения используются семь основных видов жизненных циклов. Типичный цикл разработки программного обеспечения называется «каскадным» и выглядит следующим образом.
- Дизайн — получение графических макетов, визуальных форм, разработка интерфейсов. Создание индивидуального стиля.
- Кодирование — написание исходного кода.
- Тестирование — проверка программы на соответствие всем предъявляемым к ней требованиям.
- Документирование — передача накопленных знаний пользователям и другим разработчикам.
- Внедрение — установка программного обеспечения, обучение пользователей.
- Сопровождение — исправление выявленных ошибок, поддержка пользователей.
Гибкий цикл
Второй из наиболее распространенных — гибкий цикл разработки (Agile), позволяющий без негативных последствий изменять направление деятельности, вносить дополнительные задания, требовать детальной проработки узких мест.
Создание ПО с помощью Agile состоит из небольших итераций — коротких циклов — спринтов, являющихся, по сути, мелкими проектами и занимающих от одной до четырех недель. При завершении отдельного продуктивного периода проводится анализ и переориентирование на новые задачи следующего цикла. Количество спринтов может быть любым. Этапы проиллюстрированы ниже.
01 | Планирование | Постановка целей спринта и выбор действий для их реализации, распределение имеющихся ресурсов. |
02 | Разработка | Практическое решение задач для достижения целей спринта. |
03 | Тестирование | Аккумулирование итоговой информации в целях контроля выполнения задач спринта. Анализ ошибок и причин отклонений от плана. Поиск путей исправления оплошностей. |
04 | Демонстрация | Представление заказчику готовой части ПО. |
05 | Внедрение | По требованию возможно использование ПО в качестве самостоятельного продукта. |
Сравнение
Применение гибкого цикла оправдано в крупных проектах, растянутых по времени, при постоянных изменениях требований пользователей; а также в других случаях, где невозможно точное планирование. Каскадный цикл подойдет для небольших проектов с четко определенными требованиями и при наличии специалистов нужной квалификации.
Степень риска при разработке ПО варьируется в зависимости от выбранного цикла. При гибком цикле выше вероятность возникновения неудачных архитектур, но и устранять ошибки проще. При каскадном цикле архитектурные погрешности обнаруживаются в конце проекта, а исправление недостатков значительно сложнее и дороже.
Гибкий цикл | Каскадный цикл |
Не требуется детальное ТЗ. | Необходимо детально проработанное ТЗ по ГОСТу. |
Договор оказания услуг. | Договор подряда. |
Оплачивается фактически потраченное время. | В стоимость работ закладывается запас на случай непредвиденных трудозатрат. |
На старте нет точного понимания бюджета, оценка примерная. | Точная стоимость и срок указываются в договоре. |
Начать разработку можно сразу после подписания договора. | Потребуется время на написание и согласование технического задания. |
Легко изменить то или иное требование к реализации, если они утратили актуальность или изменилось видение проекта. | Для изменения требований к реализации нужно подписать дополнительное соглашение. |
Стоимость проекта ниже. | Стоимость проекта выше. |
Работа на Agile осуществляется, как правило, за меньшую цену и с порционной выдачей готовых блоков. Каскадный цикл подразумевает фиксированный крупный платеж за конечный продукт, часто без демонстрации промежуточных результатов.
Выбор цикла зависит от особенностей проекта, являясь предметом и итогом обсуждения. Свяжитесь с нами — уже при первом знакомстве с задачей мы подберем методологию разработки и бесплатно предоставим оценку в течение нескольких дней.
Источник: www.edsd.ru