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

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

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

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

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

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

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

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

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

Читайте также:
Как перенести программу навител на другой смартфон

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. Классификация видов сложности программных продуктов и их краткая характеристика.

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

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

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

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

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

  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