Программная реализация

В этой главе мы изучим методы программирования, документацию и проблемы при реализации программного обеспечения.

Структурированное программирование

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

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

  • Top-down analysis- Программа всегда предназначена для выполнения какой-то рациональной работы. Эта рациональная работа известна как проблема на языке программного обеспечения. Таким образом, очень важно, чтобы мы понимали, как решить проблему. При нисходящем анализе проблема разбивается на маленькие части, каждая из которых имеет определенное значение. Каждая проблема решается индивидуально, и четко указываются шаги по ее решению.

  • Modular Programming- При программировании код разбивается на меньшие группы инструкций. Эти группы известны как модули, подпрограммы или подпрограммы. Модульное программирование, основанное на понимании нисходящего анализа. Он препятствует переходам с использованием операторов goto в программе, что часто делает выполнение программы не отслеживаемым. Прыжки запрещены, а в структурном программировании поощряется модульный формат.

  • Structured Coding - Что касается нисходящего анализа, структурированное кодирование подразделяет модули на более мелкие блоки кода в порядке их выполнения. Структурированное программирование использует структуру управления, которая контролирует поток программы, тогда как структурированное кодирование использует структуру управления для организации своих инструкций в виде определяемых шаблонов.

Функциональное программирование

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

В процедурном программировании процедура может давать разные результаты, когда она вызывается с одним и тем же аргументом, поскольку сама программа может находиться в другом состоянии при ее вызове. Это свойство, а также недостаток процедурного программирования, при котором важна последовательность или время выполнения процедуры.

Функциональное программирование предоставляет средства вычислений в виде математических функций, которые производят результаты независимо от состояния программы. Это дает возможность прогнозировать поведение программы.

Функциональное программирование использует следующие концепции:

  • First class and High-order functions - Эти функции могут принимать другую функцию в качестве аргумента или возвращать другие функции в качестве результатов.

  • Pure functions - Эти функции не содержат деструктивных обновлений, то есть они не влияют на ввод-вывод или память, и, если они не используются, их можно легко удалить, не мешая остальной части программы.

  • Recursion- Рекурсия - это метод программирования, при котором функция вызывает сама себя и повторяет программный код в ней, если не выполняется какое-либо заранее определенное условие. Рекурсия - это способ создания циклов в функциональном программировании.

  • Strict evaluation- Это метод оценки выражения, переданного функции в качестве аргумента. В функциональном программировании есть два типа методов оценки: строгий (нетерпеливый) и нестрогий (ленивый). Строгая оценка всегда оценивает выражение перед вызовом функции. При нестрогом вычислении выражение не оценивается, если оно не требуется.

  • λ-calculus- Большинство языков функционального программирования используют λ-исчисление в качестве систем типов. λ-выражения выполняются путем их оценки по мере их появления.

Common Lisp, Scala, Haskell, Erlang и F # являются примерами языков функционального программирования.

Стиль программирования

Стиль программирования - это набор правил кодирования, которым следуют все программисты, пишущие код. Когда несколько программистов работают над одним и тем же программным проектом, им часто приходится работать с программным кодом, написанным другим разработчиком. Это становится утомительным, а иногда и невозможным, если все разработчики не соблюдают какой-либо стандартный стиль программирования при кодировании программы.

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

Рекомендации по кодированию

Практика стиля кодирования зависит от организации, операционной системы и самого языка программирования.

Следующие элементы кодирования могут быть определены в соответствии с руководящими принципами кодирования организации:

  • Naming conventions - В этом разделе определяется, как называть функции, переменные, константы и глобальные переменные.

  • Indenting - Это пробел, оставленный в начале строки, обычно 2-8 пробелов или одна табуляция.

  • Whitespace - Обычно его опускают в конце строки.

  • Operators- Определяет правила написания математических, присваивающих и логических операторов. Например, перед оператором присваивания «=» и после него должен быть пробел, как в «x = 2».

  • Control Structures - Правила написания if-then-else, case-switch, while-until и для операторов потока управления исключительно и во вложенном виде.

  • Line length and wrapping- Определяет, сколько символов должно быть в одной строке, обычно длина строки 80 символов. Перенос определяет, как строка должна быть обернута, если она слишком длинная.

  • Functions - Это определяет, как функции должны быть объявлены и вызваны, с параметрами и без них.

  • Variables - Здесь упоминается, как объявляются и определяются переменные разных типов данных.

  • Comments- Это один из важных компонентов кодирования, поскольку комментарии, включенные в код, описывают, что на самом деле делает код, и все другие связанные описания. Этот раздел также помогает создавать справочную документацию для других разработчиков.

Программная документация

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

Хорошо поддерживаемая документация должна включать следующие документы:

  • Requirement documentation - Эта документация служит ключевым инструментом для дизайнера, разработчика и группы тестирования программного обеспечения при выполнении их соответствующих задач. Этот документ содержит все функциональные, нефункциональные и поведенческие описания предполагаемого программного обеспечения.

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

    Эта документация служит основой для разрабатываемого программного обеспечения и в основном используется на этапах верификации и валидации. Большинство тестовых примеров строятся непосредственно из документации требований.

  • Software Design documentation - Эта документация содержит всю необходимую информацию, которая необходима для создания программного обеспечения. Это содержит:(a) Программная архитектура высокого уровня, (b) Детали разработки программного обеспечения, (c) Диаграммы потоков данных, (d) Дизайн базы данных

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

  • Technical documentation- Эта документация поддерживается разработчиками и кодировщиками. Эти документы в целом представляют информацию о коде. При написании кода программисты также упоминают цель кода, кто его написал, где он потребуется, что и как он делает, какие еще ресурсы использует код и т. Д.

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

    Доступны различные автоматизированные инструменты, некоторые из которых поставляются с самим языком программирования. Например, java поставляется с инструментом JavaDoc для создания технической документации кода.

  • User documentation- Эта документация отличается от всего описанного выше. Вся предыдущая документация поддерживается для предоставления информации о программном обеспечении и процессе его разработки. Но в пользовательской документации объясняется, как должен работать программный продукт и как его следует использовать для получения желаемых результатов.

    Эта документация может включать в себя процедуры установки программного обеспечения, практические руководства, руководства пользователя, метод удаления и специальные ссылки для получения дополнительной информации, такой как обновление лицензии и т. Д.

Проблемы реализации программного обеспечения

Команда разработчиков сталкивается с некоторыми проблемами при внедрении программного обеспечения. Некоторые из них упомянуты ниже:

  • Code-reuse- Программные интерфейсы современных языков очень сложны и оснащены огромными библиотечными функциями. Тем не менее, чтобы снизить стоимость конечного продукта, руководство организации предпочитает повторно использовать код, который был создан ранее для другого программного обеспечения. Программисты сталкиваются с огромными проблемами при проверке совместимости и принятии решения о том, сколько кода использовать повторно.

  • Version Management- Каждый раз, когда заказчику выпускается новое программное обеспечение, разработчики должны поддерживать документацию, относящуюся к версии и конфигурации. Эта документация должна быть очень точной и доступной вовремя.

  • Target-Host- Программа, которая разрабатывается в организации, должна быть разработана для хост-компьютеров на стороне клиентов. Но иногда невозможно разработать программное обеспечение, работающее на целевых машинах.