Учебники

Методологии программирования — Краткое руководство

Методологии программирования — Введение

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

Типы методологий программирования

Есть много типов методологий программирования, распространенных среди разработчиков программного обеспечения —

Процедурное программирование

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

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

Объектно-ориентированное программирование

Здесь решение вращается вокруг сущностей или объектов, которые являются частью проблемы. Решение имеет дело с тем, как хранить данные, связанные с объектами, как эти объекты ведут себя и как они взаимодействуют друг с другом, чтобы дать согласованное решение.

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

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

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

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

Логическое программирование

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

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

  • Нисходящий подход
  • Подход «снизу вверх

Нисходящий или модульный подход

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

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

Обработка платежной ведомости

Подход «снизу вверх

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

Давайте посмотрим на компоненты программы калькулятора.

Подход «снизу вверх

Понимание проблемы

Типичный процесс разработки программного обеспечения состоит из следующих шагов:

  • Сбор требований
  • Определение проблемы
  • Системный дизайн
  • Реализация
  • тестирование
  • Документация
  • Обучение и поддержка
  • техническое обслуживание

Первые два шага помогают команде понять проблему, самый важный первый шаг на пути к решению. Лицо, ответственное за сбор требований, определение проблемы и разработку системы, называется системным аналитиком .

Сбор требований

Обычно клиенты или пользователи не могут четко определить свои проблемы или требования. У них есть смутное представление о том, чего они хотят. Таким образом, разработчики системы должны собрать требования клиентов, чтобы понять проблему, которая должна быть решена, или что нужно доставить. Детальное понимание проблемы возможно только при первом понимании области бизнеса, для которой разрабатывается решение. Некоторые ключевые вопросы, которые помогают понять бизнес, включают:

  • Что делается?
  • Как это делается?
  • Какова частота выполнения задания?
  • Каков объем решений или транзакций?
  • Какие проблемы возникают?

Некоторые методы, которые помогают в сборе этой информации:

  • Интервью
  • Анкетирование
  • Изучение существующих системных документов
  • Анализ бизнес-данных

Системные аналитики должны создать четкий и краткий, но тщательный документ с требованиями, чтобы определить требования SMART — конкретные, измеримые, согласованные, реалистичные и основанные на времени. Неспособность сделать это приводит к —

  • Неполное определение проблемы
  • Неправильные цели программы
  • Переработать, чтобы доставить требуемый результат клиенту
  • Увеличение расходов
  • Задержка доставки

Из-за глубины необходимой информации сбор требований также известен как детальное расследование .

Определение проблемы

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

  • Определить масштаб проекта
  • Держите команду сосредоточенной
  • Держите проект на ходу
  • Подтвердить, что желаемый результат был достигнут в конце проекта

Определение решения

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

Первое, что следует отметить при проектировании системы, — это то, что изначально системный аналитик может предложить более одного решения. Но окончательное решение или продукт может быть только один. Углубленный анализ данных, собранных на этапе сбора требований, может помочь найти уникальное решение. Правильное определение проблемы также имеет решающее значение для достижения решения.

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

блок-схем

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

блок-схем

Это преимущества блок-схемы —

  • Визуальное представление помогает в понимании логики программы

  • Они выступают в качестве чертежей для фактического кодирования программы

  • Блок-схемы важны для программной документации

  • Блок-схемы являются важным помощником при обслуживании программы.

Визуальное представление помогает в понимании логики программы

Они выступают в качестве чертежей для фактического кодирования программы

Блок-схемы важны для программной документации

Блок-схемы являются важным помощником при обслуживании программы.

Это недостатки блок-схемы —

  • Сложная логика не может быть изображена с использованием блок-схем

  • В случае каких-либо изменений в логике или потоке данных / работ, блок-схема должна быть полностью перерисована

Сложная логика не может быть изображена с использованием блок-схем

В случае каких-либо изменений в логике или потоке данных / работ, блок-схема должна быть полностью перерисована

Диаграмма потока данных

Диаграмма потока данных или DFD — это графическое представление потока данных через систему или подсистему. Каждый процесс имеет свой собственный поток данных и уровни диаграмм потоков данных. Уровень 0 показывает входные и выходные данные для всей системы. Затем система разбивается на модули, и DFD уровня 1 показывает поток данных для каждого модуля в отдельности. Модули могут быть дополнительно разбиты на подмодули, если требуется, и нарисован DFD уровня 2.

ПСЕВДОКОД

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

Вот пример псевдокода в C ++. Программисту просто нужно перевести каждый оператор в синтаксис C ++, чтобы получить программный код.

ПСЕВДОКОД

Идентификация математических операций

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

  • Занимают место в памяти
  • Занять время в исполнении
  • Определить эффективность программного обеспечения
  • Влияет на общую производительность программного обеспечения

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

Применение модульных методов

Реальная проблема сложна и велика. Если разработано монолитное решение, оно ставит эти проблемы —

  • Сложно написать, протестировать и реализовать одну большую программу

  • Изменения после доставки конечного продукта практически невозможны

  • Сопровождение программы очень сложное

  • Одна ошибка может привести к остановке всей системы

Сложно написать, протестировать и реализовать одну большую программу

Изменения после доставки конечного продукта практически невозможны

Сопровождение программы очень сложное

Одна ошибка может привести к остановке всей системы

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

Преимущества модульного программирования

Модульное программирование предлагает эти преимущества —

  • Обеспечивает более быструю разработку, так как каждый модуль может разрабатываться параллельно.

  • Модули могут быть повторно использованы

  • Поскольку каждый модуль должен тестироваться независимо, тестирование проходит быстрее и надежнее

  • Отладка и сопровождение всей программы проще

  • Модули меньше и имеют более низкий уровень сложности, поэтому их легко понять

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

Модули могут быть повторно использованы

Поскольку каждый модуль должен тестироваться независимо, тестирование проходит быстрее и надежнее

Отладка и сопровождение всей программы проще

Модули меньше и имеют более низкий уровень сложности, поэтому их легко понять

Идентификация модулей

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

  • Если данные являются наиболее важным элементом системы, создайте модули, которые обрабатывают связанные данные.

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

  • Если ничего не помогает, разбейте систему на логические модули в соответствии с вашим пониманием системы на этапе сбора требований.

Если данные являются наиболее важным элементом системы, создайте модули, которые обрабатывают связанные данные.

Если сервис, предоставляемый системой, разнообразен, разбейте систему на функциональные модули.

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

Для кодирования каждый модуль должен быть снова разбит на более мелкие модули для простоты программирования. Это снова можно сделать с помощью трех советов, приведенных выше, в сочетании с конкретными правилами программирования. Например, для объектно-ориентированного языка программирования, такого как C ++ и Java, каждый класс со своими данными и методами может образовывать единый модуль.

Пошаговое решение

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

  • Любой, кто читает решение, может понять и проблему, и решение.

  • Это одинаково понятно программистам и непрограммистам.

  • Во время кодирования каждый оператор просто необходимо преобразовать в программный оператор.

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

  • Детали микроуровня, такие как имена идентификаторов, требуемые операции и т. Д., Вырабатываются автоматически

Любой, кто читает решение, может понять и проблему, и решение.

Это одинаково понятно программистам и непрограммистам.

Во время кодирования каждый оператор просто необходимо преобразовать в программный оператор.

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

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

Давайте посмотрим на пример.

Принимаем оплату

Управляющие структуры

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

Алгоритмы и псевдокоды помогают аналитикам и программистам определить, где требуются структуры управления.

Управляющие структуры бывают трех типов:

Структуры контроля принятия решений

Структуры управления принятием решений используются, когда следующий шаг, который должен быть выполнен, зависит от критериев. Этот критерий обычно является одним или несколькими логическими выражениями, которые должны быть оценены. Булево выражение всегда оценивается как «истина» или «ложь». Один набор операторов выполняется, если критерий «истинный», а другой набор выполняется, если критерий оценивается как «ложный». Например, если заявление

Структуры контроля выбора

Структуры контроля выбора используются, когда последовательность программы зависит от ответа на конкретный вопрос. Например, программа имеет много вариантов для пользователя. Следующая инструкция будет зависеть от выбранной опции. Например, оператор switch, оператор case .

Структуры контроля повторения / петли

Структура управления повторением используется, когда набор операторов должен повторяться много раз. Количество повторений может быть известно до его запуска или может зависеть от значения выражения. Например, для оператора «оператор», «оператор», «оператор» пока « и т. Д.

Структуры контроля контура

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

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

Структуры принятия решений

Структуры принятия решений

Написание алгоритма

Конечный набор шагов, которые необходимо выполнить для решения любой проблемы, называется алгоритмом . Алгоритм обычно разрабатывается до фактического кодирования. Он написан на английском языке, так что его легко понять даже непрограммистам.

Иногда алгоритмы пишутся с использованием псевдокодов , то есть языка, аналогичного используемому языку программирования. Написание алгоритма для решения проблемы предлагает эти преимущества —

  • Способствует эффективному общению между членами команды

  • Позволяет анализ проблемы под рукой

  • Действует как план для кодирования

  • Помогает в отладке

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

Способствует эффективному общению между членами команды

Позволяет анализ проблемы под рукой

Действует как план для кодирования

Помогает в отладке

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

Это характеристики хорошего и правильного алгоритма —

  • Имеет набор входов

  • Шаги определены однозначно

  • Имеет конечное число шагов

  • Производит желаемый результат

Имеет набор входов

Шаги определены однозначно

Имеет конечное число шагов

Производит желаемый результат

Пример алгоритмов

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

Пример алгоритмов

Шаг 4 в этом алгоритме сам по себе является законченной задачей, и для него можно написать отдельный алгоритм. Давайте теперь создадим алгоритм, чтобы проверить, является ли число положительным или отрицательным.

Пример алгоритмов

Элементы блок-схемы

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

Символы блок-схемы

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

Условное обозначение Название символа Цель
Стоп Стоп Start / Stop Используется в начале и конце алгоритма, чтобы показать начало и конец программы.
Процесс Процесс Обозначает такие процессы, как математические операции.
Ввод, вывод Ввод, вывод Используется для обозначения входов и выходов программы.
Решение Решение Обозначает заявления о решениях в программе, где ответ обычно да или нет.
Стрела Стрела Показывает отношения между различными формами.
Коннектор на странице Коннектор на странице Соединяет две или более части потоковой диаграммы, которые находятся на одной странице.
Вне страницы Разъем Вне страницы Разъем Соединяет две части блок-схемы, которые распределены по разным страницам.

Руководство по разработке блок-схем

Вот некоторые моменты, которые следует учитывать при разработке блок-схемы —

  • Блок-схема может иметь только один старт и один символ остановки

  • На соединители страниц ссылаются по номерам

  • Ссылки на сторонние коннекторы указываются с помощью алфавитов

  • Общий поток процессов сверху вниз или слева направо

  • Стрелки не должны пересекаться

Блок-схема может иметь только один старт и один символ остановки

На соединители страниц ссылаются по номерам

Ссылки на сторонние коннекторы указываются с помощью алфавитов

Общий поток процессов сверху вниз или слева направо

Стрелки не должны пересекаться

Примеры блок-схем

Вот блок-схема для того, чтобы пойти на рынок, чтобы купить ручку.

Примеры блок-схем

Вот блок-схема для вычисления среднего двух чисел.

Примеры блок-схем

Использование четких инструкций

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

Ясность выражений

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

  • Сравнивая два значения
  • Определение переменной, объекта или класса
  • Арифметические вычисления с использованием одной или нескольких переменных
  • Извлечение данных из базы данных
  • Обновление значений в базе данных

Написание однозначных выражений — это навык, который должен развивать каждый программист. Вот несколько моментов, о которых следует помнить при написании таких выражений:

Однозначный результат

Оценка выражения должна дать однозначный результат. Например, унарные операторы следует использовать с осторожностью.

недвусмысленный

Избегайте сложных выражений

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

Простота инструкций

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

Написание простых инструкций помогает избежать этой проблемы. Вот несколько советов, чтобы написать простые инструкции —

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

  • Одна инструкция на задание. Попытка выполнять более чем одну вещь за раз усложняет инструкции.

  • Используйте стандарты — у каждого языка есть свои стандарты, следуйте им. Помните, что вы работаете не один над проектом; следуйте проектным стандартам и руководствам по кодированию.

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

Одна инструкция на задание. Попытка выполнять более чем одну вещь за раз усложняет инструкции.

Используйте стандарты — у каждого языка есть свои стандарты, следуйте им. Помните, что вы работаете не один над проектом; следуйте проектным стандартам и руководствам по кодированию.

Правильные методы программирования

В этой главе мы расскажем, как написать хорошую программу. Но прежде чем мы это сделаем, давайте посмотрим, каковы характеристики хорошей программы —

  • Portable — программа или программное обеспечение должны работать на всех компьютерах одного типа. Под тем же типом мы подразумеваем, что программное обеспечение, разработанное для персональных компьютеров, должно работать на всех ПК. Или программное обеспечение для написанного для планшетов должно работать на всех планшетах, имеющих правильные характеристики.

  • Эффективный — программное обеспечение, которое быстро выполняет поставленные задачи, называется эффективным. Оптимизация кода и оптимизация памяти являются одними из способов повышения эффективности программы.

Portable — программа или программное обеспечение должны работать на всех компьютерах одного типа. Под тем же типом мы подразумеваем, что программное обеспечение, разработанное для персональных компьютеров, должно работать на всех ПК. Или программное обеспечение для написанного для планшетов должно работать на всех планшетах, имеющих правильные характеристики.

Эффективный — программное обеспечение, которое быстро выполняет поставленные задачи, называется эффективным. Оптимизация кода и оптимизация памяти являются одними из способов повышения эффективности программы.

Характеристики Хорошая программа

  • Эффективно — программное обеспечение должно помочь в решении проблемы. Программное обеспечение, которое делает это, называется эффективным.

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

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

  • Самодокументирование — любая программа или программное обеспечение, имена идентификаторов, имена модулей и т. Д. Могут описывать себя из-за использования явных имен.

Эффективно — программное обеспечение должно помочь в решении проблемы. Программное обеспечение, которое делает это, называется эффективным.

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

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

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

Вот несколько способов написания хороших программ.

Правильные имена идентификаторов

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

Правильные имена идентификаторов

Посмотрите на строку 10. Она говорит всем, кто читает программу, что необходимо выбрать ID, имя и номер ученика. Имена переменных делают это самоочевидным. Вот несколько советов по созданию правильных имен идентификаторов —

  • Используйте языковые рекомендации

  • Не стесняйтесь давать длинные имена, чтобы сохранить ясность

  • Используйте заглавные и строчные буквы

  • Не присваивайте одинаковое имя двум идентификаторам, даже если язык позволяет это

  • Не присваивайте одинаковые имена более чем одному идентификатору, даже если они имеют взаимоисключающую область видимости

Используйте языковые рекомендации

Не стесняйтесь давать длинные имена, чтобы сохранить ясность

Используйте заглавные и строчные буквы

Не присваивайте одинаковое имя двум идентификаторам, даже если язык позволяет это

Не присваивайте одинаковые имена более чем одному идентификатору, даже если они имеют взаимоисключающую область видимости

Комментарии

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

Такое выражение, которое не скомпилировано, а записано как примечание или объяснение для программиста, называется комментарием . Посмотрите на комментарии в следующем сегменте программы. Комментарии начинаются с //.

Комментарии

Комментарии могут быть вставлены как —

  • Пролог к ​​программе, чтобы объяснить ее цель

  • В начале и / или конце логических или функциональных блоков

  • Запишите особые сценарии или исключения

Пролог к ​​программе, чтобы объяснить ее цель

В начале и / или конце логических или функциональных блоков

Запишите особые сценарии или исключения

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

вдавливание

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

вдавливание

Как видите, программа с отступом более понятна. Поток управления из цикла for в if и обратно очень ясен. Отступы особенно полезны в случае контрольных структур.

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

  • Пустые строки между логическими или функциональными блоками кода в программе

  • Пробелы вокруг операторов

  • Вкладки в начале новых структур управления

Пустые строки между логическими или функциональными блоками кода в программе

Пробелы вокруг операторов

Вкладки в начале новых структур управления

Методологии программирования — отладка

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

Синтаксические ошибки

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

Синтаксические ошибки

В этой программе переменная prod не была объявлена, которая генерируется компилятором.

Семантические ошибки

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

Семантические ошибки

Посмотрите на строку 13. Здесь программист хочет проверить, равен ли делитель 0, чтобы избежать деления на 0. Однако вместо использования оператора сравнения == был использован оператор присваивания =. Теперь каждый раз, когда выражение «if» будет принимать значение «истина», а программа будет выводить как «Вы не можете делить на 0». Определенно не то, что было задумано !!

Логические ошибки не могут быть обнаружены ни одной программой; они должны быть определены самим программистом, когда желаемый результат не достигнут.

Ошибки во время выполнения

Ошибки выполнения — это ошибки, возникающие при выполнении программы. Это означает, что в программе нет синтаксических ошибок. Вот некоторые из наиболее распространенных ошибок времени выполнения, которые могут возникнуть в вашей программе:

  • Бесконечный цикл
  • Деление на ‘0’
  • Введено неверное значение пользователем (скажем, строка вместо целого числа)

Оптимизация кода

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

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

Есть два подхода к оптимизации кода —

  • Оптимизация на основе интуиции (IBO) — здесь программист пытается оптимизировать программу на основе своих собственных навыков и опыта. Это может работать для небольших программ, но терпит неудачу с ростом сложности программы.

  • Оптимизация на основе фактических данных (EBO) — здесь используются автоматизированные инструменты для выявления узких мест в производительности, а затем соответствующие части оптимизируются соответствующим образом. Каждый язык программирования имеет свой набор инструментов для оптимизации кода. Например, PMD, FindBug и Clover используются для оптимизации кода Java.

Оптимизация на основе интуиции (IBO) — здесь программист пытается оптимизировать программу на основе своих собственных навыков и опыта. Это может работать для небольших программ, но терпит неудачу с ростом сложности программы.

Оптимизация на основе фактических данных (EBO) — здесь используются автоматизированные инструменты для выявления узких мест в производительности, а затем соответствующие части оптимизируются соответствующим образом. Каждый язык программирования имеет свой набор инструментов для оптимизации кода. Например, PMD, FindBug и Clover используются для оптимизации кода Java.

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

Поменяйте местами две переменные

Оптимизация времени выполнения

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

  • Используйте команды, которые имеют встроенную оптимизацию времени выполнения

  • Используйте переключатель вместо условия if

  • Минимизируйте вызовы функций внутри структур цикла

  • Оптимизировать структуры данных, используемые в программе

Используйте команды, которые имеют встроенную оптимизацию времени выполнения

Используйте переключатель вместо условия if

Минимизируйте вызовы функций внутри структур цикла

Оптимизировать структуры данных, используемые в программе

Оптимизация памяти

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

  • Используйте команды, которые имеют встроенную оптимизацию памяти

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

  • Избегайте объявления глобальных переменных внутри циклов, которые выполняются много раз

  • Избегайте использования интенсивных функций процессора, таких как sqrt ()

Используйте команды, которые имеют встроенную оптимизацию памяти

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

Избегайте объявления глобальных переменных внутри циклов, которые выполняются много раз

Избегайте использования интенсивных функций процессора, таких как sqrt ()

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

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

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

Вот некоторые рекомендации по созданию документов —

  • Документация должна быть с точки зрения читателя

  • Документ должен быть однозначным

  • Там не должно быть повторений

  • Промышленные стандарты должны быть использованы

  • Документы всегда должны быть обновлены

  • Любой устаревший документ должен быть снят с производства после надлежащей регистрации

Документация должна быть с точки зрения читателя

Документ должен быть однозначным

Там не должно быть повторений

Промышленные стандарты должны быть использованы

Документы всегда должны быть обновлены

Любой устаревший документ должен быть снят с производства после надлежащей регистрации

Преимущества документации

Вот некоторые из преимуществ предоставления программной документации —

  • Отслеживает все части программного обеспечения или программы

  • Обслуживание проще

  • Программисты, кроме разработчика, могут понимать все аспекты программного обеспечения

  • Улучшает общее качество программного обеспечения

  • Помогает в обучении пользователей

  • Обеспечивает децентрализацию знаний, сокращая затраты и усилия, если люди внезапно покидают систему

Отслеживает все части программного обеспечения или программы

Обслуживание проще

Программисты, кроме разработчика, могут понимать все аспекты программного обеспечения

Улучшает общее качество программного обеспечения

Помогает в обучении пользователей

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

Примеры документов

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

  • Руководство пользователя — описывает инструкции и процедуры для конечных пользователей по использованию различных функций программного обеспечения.

  • Руководство по эксплуатации — в нем перечислены и описаны все выполняемые операции и их взаимозависимости.

  • Проектный документ — он дает обзор программного обеспечения и подробно описывает элементы дизайна. Он документирует такие детали, как диаграммы потоков данных, диаграммы отношений сущностей и т. Д.

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

  • Техническая документация — это документация о реальных компонентах программирования, таких как алгоритмы, блок-схемы, программные коды, функциональные модули и т. Д.

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

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

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

Руководство по эксплуатации — в нем перечислены и описаны все выполняемые операции и их взаимозависимости.

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

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

Техническая документация — это документация о реальных компонентах программирования, таких как алгоритмы, блок-схемы, программные коды, функциональные модули и т. Д.

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

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

Обслуживание программы

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

  • Исправить ошибки
  • Улучшить производительность
  • Добавить функциональность
  • Удалить устаревшие части

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

Типы обслуживания

Работы по техническому обслуживанию можно разделить на четыре категории:

  • Корректирующее обслуживание — здесь исправлены ошибки, возникающие после реализации на месте. На ошибки могут указывать сами пользователи.

  • Профилактическое обслуживание — Модификации, сделанные во избежание ошибок в будущем, называются профилактическим обслуживанием.

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

  • Безупречное обслуживание — Изменения, вносимые в существующее программное обеспечение для включения новых требований клиента, называются безупречным обслуживанием. Цель состоит в том, чтобы всегда быть в курсе новейших технологий.

Корректирующее обслуживание — здесь исправлены ошибки, возникающие после реализации на месте. На ошибки могут указывать сами пользователи.

Профилактическое обслуживание — Модификации, сделанные во избежание ошибок в будущем, называются профилактическим обслуживанием.

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

Безупречное обслуживание — Изменения, вносимые в существующее программное обеспечение для включения новых требований клиента, называются безупречным обслуживанием. Цель состоит в том, чтобы всегда быть в курсе новейших технологий.

Инструменты обслуживания

Разработчики программного обеспечения и программисты используют много инструментов, чтобы помочь им в обслуживании программного обеспечения. Вот некоторые из наиболее широко используемых —

Программный слайсер — выбирает часть программы, которая будет затронута изменением

Анализатор потока данных — отслеживает все возможные потоки данных в программном обеспечении

Динамический анализатор — отслеживает путь выполнения программы

Статический анализатор — позволяет общий просмотр и обобщение программы

Анализатор зависимостей — помогает понять и проанализировать взаимозависимость различных частей программы