Второй большой категорией, введенной Джилбом, является гибкость, в которую входят:
1) логическая сложность;
2) внутренняя гибкость;
3) открытость (адаптируемость);
4) толерантность (к изменениям входа системы);
5) универсальность;
6) удобство переноса;
7) совместимость.
В качестве меры логической сложности Джилб предложил число логических "двоичных принятий решений". Такая оценка может быть получена вручную или автоматически. Абсолютная логическая сложность задается числом нестандартных выходов из операторов, в которых происходит принятие решений. Джилб предполагает, что логическая сложность окажется значимым фактором для предсказания стоимости программы.
Кроме этих, Джилб приводит еще большое количество иных метрик, но это длинное перечисление скорее будит воображение, чем приносит пользу. Работа Джилба демонстрирует новые возможности, однако реальное применение этих идей на практике дает обескураживающие результаты. Большинство характеристик очень трудно получить; сбивает с толку и то, что оценки сильно связаны, что затрудняет программисту предсказание влияния изменения программы на некоторую группу характеристик.
22.3 Оценка сложности Маккейба
Маккейб описывает оценку сложности с помощью теории графов и демонстрирует ее применение для управления, тестирования и контроля за сложностью программы. Следует оговорить, что в данном исследовании Маккейб под сложностью программы понимал ее логическую сложность. В его теории предполагается, что сложность не зависит от размера, а только от структуры выборов решений в программе.
Маккейб предлагает математический метод, дающий количественные основания для модуляризации и позволяющий выявлять модули, которые будет трудно тестировать или обслуживать.
Согласно его подходу вычисляется и контролируется число путей в программе. В математические предпосылки входит определение цикломатического числа V(G) для графа с n вершинами, e ребрами и p компонентами связности:
V(G) = e - n + p
Маккейб использует следующую теорему: в сильно связанном графе G цикломатическое число равно максимальному числу линейно-независимых циклов.
Применяя эту теорему, Маккейб связывает с программой ориентированный граф с одним выходом. Каждой вершине графа соответствует блок кода с последовательным управлением, а каждой дуге соответствует ветвление программы. Каждой вершины можно достигнуть из входной вершины и из каждой вершины может быть достигнута выходная вершина. Этот граф сильно связан, так как для любой пары вершин существует связывающий их путь.
Общий подход состоит в оценке сложности программы с помощью вычисления числа линейно-независимых путей, цикломатической сложности V(G), а также управления размером программ с помощью ограничения V(G) и использования V(G) как основы для методологии тестирования. Маккейб обнаружил, что разумной верхней границей для цикломатической сложности является 10. Если программисты переступают эту границу, им следует или переписать программу, или разбить ее на модули.
Оценка цикломатической сложности Маккейба полезна при подготовке тестовых данных и может дать нужную информацию о логической сложности программы. Однако при такой оценке не принимается во внимание выбор структур данных, алгоритмов, мнемонических имен переменных или комментариев, отсутствует обсуждение таких важных понятий, как удобство переноса, гибкость, эффективность. Необходимы дополнительные исследования, чтобы прояснить, когда полезно использовать цикломатическую сложность. В рассмотренном программном модуле по созданию базы данных абонентов автоматизированной системы оповещения циклическая граница сложности модуля равняется 6, что не превышает верхнюю границу сложности. Ориентированный граф модуля представлен на рис.14.1. Это позволяет сделать вывод о правильном подходе к написанию отдельных модулей программного обеспечения системы оповещения, который применялся при разработке данного дипломного проекта.
Понимаемость программы можно назвать ее психологическую сложность, так как психологическая сложность связана с теми же характеристиками программы, которые затрудняют понимание программы человеком.
Авторы работы "Predicting Software Comprehensibility" экспериментировали с 36 профессиональными программистами, предложив им по 25 минут изучать 3 программы, а затем восстановить их за 20 минут. Были использованы 3 класса задач (инженерные, статические и не численные) и 3 типа структурирования (полное, частичное и неструктурированные программы). Было также введено 3 уровня мнемоничности имен переменных.
Результаты эксперимента показали, что хуже всего восстанавливаются неструктурированные программы, лучше всего - частично структурированные. Уровень мнемоничности имен переменных не оказал влияния на проведение эксперимента.
Важным заключением этого эксперимента явилось то, что на способность правильно воспроизводить программы оказали влияние индивидуальные особенности участников, характеристики программы и уровень их структурированности.
Качество управляемо и может быть повышено. Администратор может выбрать принципы руководства, определив, что является основной целью - своевременная выдача результата, эффективное использование ресурсов или надежное обслуживание. В любом из этих случаев не следует забывать о психологической сложности программ. Как показывает опыт, в случае создания и отладки большого программного комплекса очень важно, чтобы программа каждого из авторов была понятна остальным, что обеспечивает четкую и безболезненную стыковку. К сожалению, приемлемый набор оценок пока еще не разработан. Глубокое теоретическое понимание поведения человека в программировании может привести к разработке более совершенных оценок, но проверить их пригодность следует экспериментально.
22 Технико-экономическое обоснование целесообразности разработки
В последнее время все чаще для учета основных фондов организации прибегают к помощи компьютеров. Разработанная система изначально предназначалась для использования её одним или несколькими сотрудниками, отвечающими за ведение учета основных средств на предприятии, начислению арендной стоимости и по организациям и сбору итоговой информации, и формированию различных отчётных документов. В результате использования системы было решено разделить выполняемые операции. Так первый сотрудник занимается только бухгалтерским учетом основных средств, а второй сотрудник работает с организациями, и отделами главного механика. С введением второго рабочего места, появилась необходимость в организации сетевого взаимодействия, при этом время работы уменьшается, а качество становиться намного лучше. Если раньше всегда существовали расхождения в данных бухгалтерии и другими отделами, то теперь эта проблема отпала.
С внедрением системы, работа служащих, отвечающих за учёт основных фондов на предприятии, стала выполнятся быстрее, и количество ошибок уменьшилось, таких как точность расчета амортизационных отчислений и т.д. Данная система адаптирована к технике IBM/PC, уровень которой отвечает современным требованиям. Использование дружественного интерфейса сильно облегчает работу с ней.
При разработке системы учитывались требования автоматизации часто повторяемых операций, использование многочисленных справочников данных, которые существенно увеличивают производительность труда бухгалтера. В программе применяются графические средства отображения информации, что повышает наглядность, позволяет лучше сконцентрировать внимание на вводимые данные. Раньше использовалась программа, разработанная для операционной системы DOS, что не всегда позволяло наглядно работать с представляемыми данными, не было возможности использовать графическую информацию и векторные шрифты, что в свою очередь уменьшает производительность труда и увеличивает утомляемость бухгалтера. Разработанная программа работает под Windows, что само по себе исключает описанные выше проблемы.
Таким образом, данная программа позволяет экономить рабочее время сотрудников, даёт возможность привести к минимуму ручное выполнение повторяющихся операций. Всё вышеизложенное позволяет сделать вывод о целесообразности разработки.
23 Планирование комплекса работ
23.1 Выбор и обоснование состава и трудоёмкости работ
Для нахождения наиболее эффективного пути решения поставленных задач необходим технико-экономический анализ задания. Прежде чем приступать к выполнению задания, необходимо рационально спланировать свою работу, для этого нужно провести отбор и обоснование комплекса работ. При составлении планов комплекса работ используются в основном сетевые и линейные методы планирования.
Поскольку данная разработка не велика по объему и не требует большого состава исполнителей, то в данной работе будем использовать ленточный метод планирования. Для построения ленточного графика необходимо разработать перечень работ. Результаты технического анализа разработки сведены в таблицу 23.1.
Трудоемкость работ определяется по сумме трудоемкости этапов и видов работ, оцениваемых экспериментальным путем в человеко-днях, и носит вероятностный характер, так как зависит от множества трудно учитываемых факторов, поэтому применяются оценки минимально возможной трудоемкости выполнения отдельных видов работ - ai, максимально возможной - bi и наиболее