Архив за месяц: Март 2015

Лекция 16. Документирование ПО

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

Существует и другая классификация документов на программную систему:

  • Некоторые документы (например, документ спецификации требований и планы проектирования / конструирования компонентов системы) описывают процессы разработки. Эти документы — часть системной документации.
  • Остальные документы описывают продукты процессов разработки. Эти документы могут быть как системными (например, UML-схемы модулей системы), так и пользовательскими (например, руководства по использованию).

Презентация: Лекция 16.

Читать далее Лекция 16. Документирование ПО

Фракталы — использование Web Workers API

Общее описание сайта и математическая теория здесь.

После того, как определен способ вычисления функции f (за счет синтаксического разбора), остается вычислить «скорость убегания» P(z, f) для комплексных чисел z, соответствующих отдельным пикселям изображения. Наиболее простой способ вычислений — цикл по всем пикселям. Фатальный недостаток этого метода состоит в том, что подсчеты занимают существенное время (порядка нескольких секунд или десятков секунд), и во время выполнения цикла браузер перестает отвечать на внешние раздражители, что, разумеется, неприемлемо. К счастью, для этой проблемы есть решение — современные браузеры (Firefox, Chrome, IE 10+) поддерживают выполнение JavaScript-кода в фоновых потоках выполнения.

Читать далее Фракталы — использование Web Workers API

Фракталы — синтаксический разбор арифметических выражений

Общее описание сайта и математическая теория создания фрактальных изображений здесь.

Одна из основных задач, которые пришлось решить в ходе создания сайта «Fun with Fractals», заключается в следующем:

Задача. На основе понятного для человека описания функции комплексного переменного составить ее представление, позволяющее вычислять ее значения при помощи JavaScript или WebGL.

Читать далее Фракталы — синтаксический разбор арифметических выражений

Фракталы — общее описание

Сайт Fun with Fractals — небольшой проект, наглядно демонстрирующий возможности HTML5 на примере фракталов:

  • элемент HTML5 <canvas> для рисования (<canvas>, HTMLCanvasElement);
  • фоновые потоки выполнения JavaScript для ускорения процесса рисования и избавления от «подвисания» браузера;
  • WebGL для рисования с помощью графического ускорителя вместо JavaScript (значительно быстрее).

В результате получаются достаточно красивые картинки:

Фрактал №1
ссылка на сайт
Фрактал №2
ссылка на сайт
Фрактал №3
ссылка на сайт

Читать далее Фракталы — общее описание

Yii Framework — поддержка нескольких языков в URL

Одной из причин, по которой для реализации программного комплекса я выбрал полноценный веб-фреймворк, стала необходимость поддержки трех языков: русского, украинского и английского. В системах управления содержимым (content management system), таких как Joomla, WordPress или Drupal, для поддержки нескольких языков необходимы сторонние дополнения. В то же время, в современных веб-фреймворках, использующих архитектуру Model — View — Controller, модуль поддержки языков встроен в систему и доступен без каких-либо манипуляций со стороны разработчика.

Поддержка нескольких языков интерфейса присутствует и в выбранном для разработки программного комплекса Yii Framework. С переводом представлений проблем нет; в Yii существуют для него два базовых механизма:

  • при помощи сообщений;
  • путем создания специфичных для языка файлов представлений.

Определенные трудности возникают при настройке преобразования URL. В отличие от некоторых других веб-фреймворков (например, Django), Yii «из коробки» не поддерживает работу с URL на сайтах с несколькими языками. Для того, чтобы устранить этот недостаток, надо рассмотреть, как происходит обработка URL в Yii.

Читать далее Yii Framework — поддержка нескольких языков в URL

Лекция 15. Эволюция ПО

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

Существует несколько причин, по которым эволюция ПО объективно необходима:

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

Презентация: Лекция 15.

Читать далее Лекция 15. Эволюция ПО

Лекция 14. Верификация и валидация

Верификация и валидация — два связанных процесса разработки ПО. Верификация отвечает на вопрос «Правильно ли разрабатывается продукт?» (Are we building the product right?); валидация — на вопрос «Правильный ли продукт разрабатывается?» (Are we building the right product?). Верификация проверяет ПО на соответствие спецификациям, заданным при проектировании; валидация проверяет, соответствует ли продукт ожиданиям заказчика и потребителей. Исходя из определения, тестирование — частный случай валидации.

Презентация: Лекция 14.

Читать далее Лекция 14. Верификация и валидация

Лекция 13. Тестирование ПО

Тестирование — один из основных этапов разработки ПО, решающий две задачи:

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

В рамках классических моделей жизненного цикла тестирование следует за конструированием. В более современных подходах (например, в гибкой методологии разработки) тестирование происходит одновременно с конструированием; оно помогает уточнить и/или выявить требования к программной системе. Существует даже подход к разработке ПО, при котором тесты пишутся до (а не после) основного кода — test-driven development.

Презентация: Лекция 13.

Читать далее Лекция 13. Тестирование ПО