Что такое функционал программы

Любая сложная система состоит из простых компонентов. В объектно-ориентированном программировании такими компонентами являются классы, а в функциональном – функции. Таким образом, наряду с классами, функции позволяют программисту описать абстракции. Абстракция — мысленное отвлечение от ряда свойств предметов и отношений между ними [1].

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

2 Функционалы в LISP

Функционалы — это функции, которые используют в качестве аргументов или результатов другие функции [3]. Из этого определения следует, что функционалы являются инструментом построения более глубоких абстракций, чем обычные функции.

Функционал программы для-кафе.рф

2.1 Функционалы как абстракции

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

Рекурсивный вызов функции сопряжен с использованием стека, в который помещаются аргументы вызываемой функции, адрес возврата, содержимое регистров процессора. При большой глубине рекурсии стек переполняется, исключением является «хвостовая рекурсия», которую компилятор/интерпретатор автоматически транслирует в традиционный цикл [5]. Таким образом, отображающие функционалы типа map можно в полной мере считать абстракциями, заменяющими традиционные циклические конструкции для отдельных случаев. MAP-функции отображают исходный список в новый список или порождают побочный эффект, связанный с исходным списком [6]. Это абстракции потому что предоставляется простой и безопасный интерфейс (сложно случайно организовать «вечную рекурсию»), программист не задумывается о реализации – в частности хвостовой рекурсии.

Читайте также:
Что может программа avz

2.2 Функционалы как средство повышения качества кода

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

Основной функционал программы Xmaind

Однако, это такие фрагменты кода, которые часто встречаются в программах, при отсутствии таких конструкций программисту пришлось бы часто руками реализовывать один и тот же код – нарушался бы принцип DRY – Don’t repeat yourself и KISS — keep it simple stupid [7]. Сами по себе функционалы обязательно что-либо делегируют функции-аргументу. Делегирование является элементарным шаблоном проектирования, повышающим гибкость системы [8]. Паттерны представляют собой некоторые удачные и широко известные (описанные в литературе) программные конструкции. Разобраться в таких конструкциях проще, чем в никому не известных конструкциях – поэтому делегирование – это хорошо, так как даже любой пользовательский (не описанный в стандартной библиотеке) функционал – реализует шаблон делегирования.

Выводы

В результате применения функционалов:
1. программист пишет меньше кода, а значит:
◦ делает меньше ошибок;
◦ стоимость поддержки проекта падает;
2. программный код становится более стандартным, снижается порог вхождения, а значит – упрощается процедура найма и стоимость новых программистов.

Источник: pro-prof.com

1. Функциональность программного средства (functionality)

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

2. Удобство использования программного средства (usability)

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

3. Эффективность программного средства (efficiency)

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

Примечание: правильнее эту характеристику называть производительностью (performance); тогда как эффективность дожна также зависеть от затрат на создание и внедрение ПС.

4. Сопровождаемость программного средства(maintainability)

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

5. Мобильность программного средства (portability)

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

6. Надежность программного средства (reliability)

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

Читайте также:
Что такое конверсионная программа

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

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

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

  1. Сложность программ. Рассматривается в трех аспектах:
  • сложность процесса разработки программ;
  • сложность программы как объекта разработки (статическая);
  • сложность выполнения программы (динамическая) – учитывает ресурсы, необходимые для ее выполнения.
  1. Трудоемкость — совокупные затраты труда на создание или использование программы.

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

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

Конструктивные критерии зависят не от области применения, а от этапа жизненного цикла программы (ЖЦП). На различных этапах ЖЦП рекомендуется использовать разные критерии: Критерии этапа разработки

  1. Трудоемкость ( статическая сложность )
  2. Корректность ( правильность ) программы

Критерии этапа эксплуатации ПП

  1. Функциональность
  2. Производительность ( ресурсоемкость )
  3. Надежность

Критерии этапа сопровождения

  1. Трудоемкость
  2. Понимаемость программы
  3. Производительность программы
  4. Надежность

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

  1. Классификация видов сложности программных продуктов и их краткая характеристика.

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

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

Динамическая (или вычислительная) сложность характеризует процесс выполнения программы и имеет три взаимосвязанных составляющих:

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

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

  1. Система метрик Холстеда для оценивания характеристик программ. Измеримые параметры программ. Оценки длины и объема программы. Потенциальный объем программы. Причины несоответствия оценоктеоретическим значениям.

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

Источник: studfile.net

Как использовать термин «функционал программы»?

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

  • Вопрос задан более трёх лет назад
  • 7053 просмотра

Комментировать
Решения вопроса 0
Ответы на вопрос 1
Программирую немного )

Функционал — математический термин. Меня подёргивает когда его употребляют не по назначению. Функциональность — вот подходящее слово.

Ответ написан более трёх лет назад

я хоть и пережил 3 семестра ФАНа в свое время, но меня не передергивает, а в жизни почти никто не говорит функциональность вместо функционала

Ваш ответ на вопрос

Войдите, чтобы написать ответ

терминология

  • IT-терминология

Существует ли единый глоссарий для айти?

  • нет подписчиков
  • 31 мар.
  • 157 просмотров

терминология

  • IT-терминология

Аутентификация. Отсебятина или единообразие?

  • 1 подписчик
  • 13 дек. 2022
  • 148 просмотров

бизнес-информатика

  • Бизнес-информатика
  • +1 ещё

В чём отличие атрибута от критерия (принятие решений)?

  • 1 подписчик
  • 09 дек. 2022
  • 136 просмотров

Источник: qna.habr.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru