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

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

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

Среди разработчиков программного обеспечения распространено множество типов методологий программирования -

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Сбор требований
  • Определение проблемы
  • Системный дизайн
  • Implementation
  • Testing
  • Documentation
  • Обучение и поддержка
  • Maintenance

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Блок-схема

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

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

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

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

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

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

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

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

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

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

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

Псевдокод

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

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

Определение математических операций

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

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

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

Реальная проблема сложна и велика. Если будет разработано монолитное решение, возникнут следующие проблемы:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Структуры управления выделением

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

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

Структура управления повторением используется, когда набор операторов должен повторяться много раз. Число повторений может быть известно до его начала или может зависеть от значения выражения. Например,for заявление, while заявление, do while заявление и т. д.

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

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

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

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

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

  • Позволяет анализировать текущую проблему

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Рекомендации по разработке блок-схем

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

  • На блок-схеме может быть только один символ начала и один символ остановки.

  • Ссылки на коннекторы на странице обозначаются цифрами.

  • Ссылки на межстраничные соединители обозначаются алфавитами

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Avoid clever instructions - Умные инструкции могут не выглядеть такими умными позже, если никто не сможет их правильно понять.

  • One instruction per task - Попытки выполнить несколько дел одновременно усложняют инструкции.

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Не стесняйтесь давать длинные имена для ясности

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

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

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

Комментарии

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

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

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

  • Пролог к ​​программе для объяснения ее цели

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

  • Обратите внимание на особые сценарии или исключения

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

Отступ

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

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

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

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

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

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

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

Ошибки синтаксиса

Syntax errorsграмматические ошибки в программе. Каждый язык имеет свой собственный набор правил, таких как создание идентификаторов, написание выражений и т. Д. Для написания программ. При нарушении этих правил ошибки называютсяsyntax errors. Многие современныеintegrated development environmentsможет идентифицировать синтаксические ошибки при вводе вашей программы. В противном случае это будет показано при компиляции программы. Возьмем пример -

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

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

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

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

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

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

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

  • Бесконечная петля
  • Деление на '0'
  • Пользователь ввел неверное значение (например, строка вместо целого)

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

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

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

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

  • Intuition based optimization (IBO)- Здесь программист пытается оптимизировать программу, исходя из собственных навыков и опыта. Это может сработать для небольших программ, но не работает по мере роста сложности программы.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Следует использовать отраслевые стандарты

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

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

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

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

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

  • Техническое обслуживание проще

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

  • Повышает общее качество программного обеспечения

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

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

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

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

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

  • Operational manual - В нем перечислены и описаны все выполняемые операции и их взаимозависимости.

  • Design Document- Он дает обзор программного обеспечения и подробно описывает элементы дизайна. Он документирует такие детали, какdata flow diagrams, entity relationship diagrams, и т.д.

  • Requirements Document- В нем есть список всех требований к системе, а также анализ жизнеспособности требований. В нем могут быть пользовательские кейсы, сценарии реальной жизни и т. Д.

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

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

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

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

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

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

Виды обслуживания

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

  • Corrective maintenance- Здесь исправлены ошибки, возникающие после внедрения на месте. На ошибки могут указывать сами пользователи.

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

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

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

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

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

  • Program slicer - выбирает часть программы, на которую может повлиять изменение

  • Data flow analyzer - отслеживает все возможные потоки данных в ПО

  • Dynamic analyzer - отслеживает путь выполнения программы

  • Static analyzer - позволяет общий просмотр и подведение итогов программы

  • Dependency analyzer - помогает понять и проанализировать взаимозависимость различных частей программы