- •Технические особенности разработки программных средств. Принципы модульности и адаптируемости.
- •Экономические особенности разработки программных средств.
- •Вопросы оценки трудоёмкости разработки программных средств в свете требований стандартизации
- •1. Анализ разработки:
- •2. Проектирование:
- •3. Программирование:
- •Проблемы и задачи проектирования программных средств
- •Этапы жизненного цикла программных средств
- •Виды поддержки и стадии этапа проектирования
- •Основные понятия и определения статического анализа программных средств
- •Критерии оценки технологий проектирования программных средств
- •Суть управления качеством программных средств
- •Составляющие затрат в жизненном цикле программных средств
- •Основные факторы, влияющие на трудоёмкость разработки программных средств
- •Особенности сертификации программного обеспечения
- •Порядок и методология проведения статического анализа программных средств
- •1) Анализ и проектирование
Основные понятия и определения статического анализа программных средств
Статический анализ (СА) – это процесс анализа исходного текста программы без её выполнения на ЭВМ.
СА программ проводится:
– для проверки модульной структуры программного средства, а также логической структуры отдельных модулей и сравнения этих структур с приведенными в программной документации;
– подготовки исходных данных для проведения динамического анализа ПС и разработки плана тестирования ПС;
– оценки конструктивных характеристик программы, степени простоты модификации и сопровождения программы;
– определения наличия несовершенства в программе, неиспользуемых участков программы, лишних переменных;
– оценки текстовой сложности программы, затрат на ее разработку и освоение;
– экспертизы идентичности программ при установлении авторства и разрешении правовых споров;
– определения количественных характеристик при оценке уровня качества программы.
Статический анализ начинается со стадии проектирования программы (укрупненный анализ) и продолжается на всех последующих фазах жизненного цикла программного средства.
Статический анализ программного средства предусматривает получение следующих характеристик (графических и метрических):
модульная структура ПС;
логическая структура отдельного программного модуля;
характеристика текста программы.
Модульная структура анализируемого ПС представляется в виде графа вызовов; списка путей вызовов; матрицы вызовов и достижимости; точек вызовов; метрик иерархии вызовов.
Логическая структура отдельного программного модуля представляется в виде графа управления; путей тестирования; метрик структуры управления.
Характеристики текста программ включают в себя: статистические данные о комментированности программы и текстовые метрики Холстеда.
Граф вызовов – это ориентированный граф, в котором вершины – модули ПС, а рёбра ориентированы от вызывающего модуля к вызываемому.
Граф управления −это ориентированный граф, вершинами которого являются логические блоки, а направленные ребра ориентированы в направлении передачи управления между блоками.
Логический блок программы – это участок программы, состоящий из одного или нескольких операторов и не имеющий разветвлений. Матрица вызовов и достижимости – это матрица, характеризующая отношение вызова и достижимости между произвольными парами программных компонент (модулей).
Путь вызовов – это последовательность соприкасающихся ребер из графа вызовов, где начальная вершина есть корень графа, а конечная − лист дерева.
Путь тестирования – это маршрут в графе управления программного модуля, начальная вершина которого является входной вершиной графа, а конечная вершина − выходной вершиной графа.
Точка вызовов – это местоположение вызова программной компоненты (модуля), задаваемое номером строки и столбца расположения оператора вызова.
Кроме этого СА предусматривает определение ряда количественных характеристик, таких как иерархическая и структурная сложность, тестируемость и др.
Иерархическая сложность: I = N / L, где N – количество вершин в графе вызовов модулей; L – количество уровней.
Иерархическая сложность характеризует среднюю ширину уровня в графе вызовов, т.е. количество проектных решений, принимаемых на отдельном шаге разработки программы.
Структурная сложность: S = D / N, где D – количество ребер в графе вызовов модулей; N – количество вершин.
Тестируемость – это свойство ПС, заключающееся в их приспособленности к эффективному применению контрольных тестов, зависящей от степени разветвления вычислительного процесса и
доступности модулей.
Доступность узла (модуля) характеризует структурную вероятность вызова этого модуля, зависящую от разветвленности дерева вызовов.
Если показатель тестируемости имеет малое значение, то затрудняется тестирование модулей нижних уровней иерархии, особенно при применении автоматизированных методов тестирования.
ЭФФЕКТИВНОСТЬ ТЕХНОЛОГИЙ ПРОЕКТИРОВАНИЯ ПРОГРАММНЫХ СРЕДСТВ