75. Программные средства для организации совместной разработки программного обеспечения.
Использование свободных пакетов Subversion и Trac при совместной разработке программного обеспечения.
Пожалуй, любая группа программистов, которая переходит к совместной разработке программного обеспечения, сталкивается с одними и теми же проблемами.
Первая и главная из них – синхронизация изменений. Также, при разработке, как правило, сложно наладить контроль над внесением изменений, исправлением ошибок, добавлением новых возможностей, написанием документации. Даже если и ведется какая-либо документация, то, в конце концов, у каждого разработчика будет своя версия. А одну ошибку в программе может попытаться исправить несколько программистов.
При таком обилие проблем совместная разработка может настолько потерять в эффективности, что производительность такой группы будет ненамного выше, чем производительность одного программиста.
На данный момент существуют свободные программные средства, которые позволяют не только решить все вышеописанные проблемы, но и вывести эффективность совместной разработки на качественно новый уровень.
Из всего многообразия свободного ПО, решающего данную задачу, целесообразно выбрать наиболее развитые, распространенные и простые в освоении пакеты, кроссплатформенные и связанные между собой. Именно таким требованиям и удовлетворяют пакеты Subversion и Trac. Еще одним большим плюсом этих пакетов является наличие большого количества документации на русском языке.
Использование пакета Subversion как средства контроля версий программного обеспечения.
Пакет Subversion представляет собой централизованную систему управления версиями. Представляет собой пару программ – сервер и клиент. Сам пакет включает в себя сервер и консольный клиент, но есть и клиенты с удобным графическим интерфейсом, к примеру, TortoiseSVN для Windows (также свободное ПО).
Сервер устанавливается на доступный в сети компьютер, клиенты – на компьютеры разработчиков. На сервере создается репозиторий (хранилище исходных кодов разрабатываемого ПО и их версий), в котором отражаются все изменения, внесенные разработчиками в программу. Для каждого изменения создается своя версия разрабатываемого ПО (в системах управления версиями отдельная версия часто называется «ревизия»).
Процесс работы с репозиторием обычно выглядит так: программист при помощи клиента получает с сервера текущую копию исходных кодов разрабатываемого ПО, далее он вносит локально изменения в него и обновляет копию на сервере, создавая новую ревизию. В результате, на сервере всегда присутствует последняя версия ПО, над которым работает группа разработчиков. Старые ревизии при этом не удаляются, они остаются доступны, причем всегда можно посмотреть, какие файлы были изменены в каждой ревизии, какие изменения были сделаны в этих файлах (наглядно, с выделением новых и старых строк). Кроме того, можно всегда вернуться к предыдущей версии, если новая, из-за трудноопределимых ошибок, потеряла работоспособность. Также возможно просмотреть изменения в исходных кодах, еще не зафиксированных на сервере.
Так как процесс разработки от момента последнего получения свежих исходных кодов до фиксации изменений может занять длительное время, то может случиться, что какой-то другой разработчик зафиксирует свои изменения. В этом случае у программиста, еще не зафиксировавшего свои изменения могут возникнуть конфликты с новым исходным кодом. Для разрешения подобных конфликтов в пакете Subversion есть несколько средств. Во-первых, это возможность блокировки файлов от изменения, то есть программист, редактирующийданный файл может заблокировать его изменение на сервере. Этот механизм не очень удобен и использовался в основном в ранних системах управления версиями.
Вторым методом является разрешение конфликтов – то есть система контроля версий сама указывает изменения, сделанные в одном и том же файле, причем выделяет изменения противоречащие друг другу и автоматически «сливает» между собой изменения, друг другу не противоречащие. Естественно, это делается только на уровне текстов, то есть логические противоречия система, конечно, не заметит, но все слияние проходит под контролем программиста, достаточно быстро и просто.
Третий метод представляет собой дальнейшее развитие метода разрешения конфликтов – если для внесения каких-либо изменений требуется длительная работа, то в репозитории создается «ответвление», с отдельным набором ревизий, которое по окончанию работы над изменениями (причем для этого может быть создано большое число ревизий) сливается с главной веткой (естественно, с сопутствующим разрешением конфликтов).
При использовании системы Subversion разработчик может просматривать и отменять сделанные им изменения (в случае если они еще не были зафиксированы на сервере) без подключения к серверу, локально, что позволяет легко отслеживать изменения, сделанные в программе, и вернутся к начальной версии в случае, если внесенные изменения сделали программу неработоспособной.
В целом, пакет Subversion не только упрощает совместную разработку, но также является мощным средством резервирования и анализа изменений разрабатываемого ПО.
Из минусов пакета Subversion можно отметить повышенный расход места на диске клиента, т.к. в каждой папке с обрабатываемыми исходными кодами содержится скрытая папка “.svn”, обычно превышающая по размеру совокупный размер всех файлов в папке.
Использование пакета Trac как средства контроля над потоком разработки
Пакет Trac представляет собой инструмент управления проектами и отслеживания ошибок в программном обеспечении. Кроме этого, пакет позволяет вести документацию в формате Wiki для проектов и отслеживать изменения в документации. Более того, пакет имеет тесную интеграцию с пакетом Subversion – в пакет встроен удобный web-интерфейс для Subversion.
Основа системы Trac – «карточки», на которых отображаются задачи, ошибки, указания по проекту. Каждая карточка может содержать в себе текстовое описание проблемы или задачи, ссылки на документацию или исходный код, вложения, и так далее. Каждая карточка может быть назначена определенному программисту для работы. К примеру, если кто-либо приступает к исправлению ошибки, он помечает на карточке, посвященной данной ошибке, что он приступил к ее исправлению. А когда он завершает работу, то помечает карточку выполненной и прикладывает к ней ссылку на ревизию Subversion, содержащую исправления.
Еще одной интересной возможностью Trac является возможность группировать карточки в промежуточные этапы разработки.
Каждый этап считается завершенным, когда завершены все его карточки. Каждому этапу можно назначить предполагаемую дату его завершения и отслеживать, насколько этап выполнен на данный момент.
В целом пакет Trac представляет собой очень удачный компромисс между простотой и функциональностью – большинство возможностей, которые необходимы небольшой группе разработчиков, в пакете есть, некоторые возможности можно добавить посредством дополнений (например, при помощи дополнений можно сопоставить каждой карточке предполагаемое время исполнения и проследить, насколько предположения соответствуют действительности). При всем этом в интерфейсе Trac разобраться очень просто, вопросы практически не возникают.
Минусом пакета Trac можно считать ограниченные возможности отслеживания жизненного цикла ошибок и невозможность изменить стандартные формы и интерфейсы.
Организация удаленной разработки ПО при помощи Subversion и Trac
Репозитории Subversion при наличии доступа к сети Интернет на сервере можно сделать доступными через Интернет, что позволяет оперативно получать результаты работы в любой точке мира, производить совместную удаленную разработку.
К примеру, программист может находиться на удаленном объекте, где работает соединение с Интернет, возможно очень медленное. В этом случае он все равно может оперативно информировать команду о выявленных в системе ошибках и получать исправления по мере работы команды.
Кроме того, многие проекты с открытым исходным кодом разрабатываются большими группами программистов при помощи Subversion и Trac, в данном случае то, что программисты зачастую находятся на разных материках, не мешает им производить организованную совместную разработку.
В заключение заметим, что применение пакетов Subversion и Trac способны облегчить и разработку, выполняемую одним программистом, позволяя улучшить контроль над версиями и упорядочить разработку программы.
- 1. Процессы жизненного цикла систем (на основе гост р исо/мэк 15288).
- 2. Структура и функциональное назначение процессов жизненного цикла программных средств (на основе iso/iec 12207).
- 3. Модель качества и критерии качества программных средств (на основе iso/iec 9126 и iso/iec 25010).
- 4. Оценка зрелости процессов создания и сопровождения программных средств на основе методологии смм и cmmi (на основе iso/1ec 15504).
- 5. Система менеджмента информационной безопасности (на основе серии iso/iec 27000).
- 6. Модели жизненного цикла программного обеспечения. Классические и гибкие модели разработки программного обеспечения.
- 7. Требования к системе менеджмента качества (на основе гост р исо 9001-2015).
- 8. Требования к качеству готового к использованию программного продукта и инструкции по тестированию (на основе гост исо/мэк 25051).
- 9. Процесс оценки качества программного продукта (на основе гост р исо/мэк 25040 и гост р исо/мэк 25041).
- 10. Верификация и валидация программного обеспечения. Процессы менеджмента тестирования. Статическое и динамическое тестирование (на основе гост р 56920 и гост р 56921).
- 11. Программный продукт. Жизненный цикл программного продукта. Модели жизненного цикла программного обеспечения.
- V модель (разработка через тестирование)
- 12. Принципы и процессы сертификации программной продукции.
- 13. Классификация систем управления базами данных.
- 14. Основные этапы проектирования реляционных баз данных.
- 15. Поиск научно-технического информации. Цель, методы и формы представления результатов.
- 16. Научные документы. Виды, назначение и области применения.
- 17. Системный анализ. Цели, задачи, методы.
- 18. Системный анализ. Задачи и область применения вычислительного эксперимента в системном анализе.
- 19. Архитектура вычислительной системы. Определение, виды, условия выбора.
- 20. Архитектура «клиент – сервер». Определение, области применения, требования к программным средствам, рассчитанным на функционирование в архитектуре «клиент – сервер».
- 21. Открытая вычислительная система. Определение, области применения, модель взаимодействия открытых систем.
- 22.Стандартизация сетевых технологий. Сетевая модель osi.
- 23.Понятие протокола и стека протоколов. Сетевая модель и стек протоколов tcp/ip.
- 24.Понятие инкапсуляции и декапсуляции. Протокольные блоки данных (pdu).
- 25.Физические среды передачи данных.
- 26.Концепции беспроводных сетей.
- 27.Сетевой коммутатор. Сети на основе коммутаторов.
- 28.Виртуальные локальные сети. Протоколы ieee 802.1q и vtp.
- 30.Преобразование и трансляция сетевых адресов (arp и nat).
- 31. Понятие маршрутизации. Назначение, виды и принципы маршрутизации.
- 32. Статическая и адаптивная маршрутизация. Протоколы маршрутизации.
- 33. Протоколы транспортного уровня (tcp и udp).
- 34. Система доменных имен (dns). Назначение и принцип работы.
- 35. Прикладные службы tcp/ip. Протоколы http и https.
- 36. Понятие защиты информации. Основные характеристики защищаемой информации.
- 37. Понятие угрозы безопасности информации. Основные виды угроз.
- 38. Каналы утечки конфиденциальной информации.
- 39. Сущность системно-концептуального подхода к защите информации в компьютерных системах.
- 40. Сущность организационной защиты информации.
- 41. Правовое обеспечение информационной безопасности.
- 42. Средства информационно-технической защиты информации.
- 43. Программные средства защиты информации. Их достоинства и недостатки.
- 44. Требования к комплексным системам защиты информации.
- 45. Способы несанкционированного доступа к информации в компьютерных системах.
- 46. Способы аутентификации пользователей в компьютерных системах. Их достоинства и недостатки.
- 47. Искусственный интеллект. Определение, назначение, области применения.
- 48. Методы оценки размера программного обеспечения при управлении программными проектами.
- 49. Методы оценки трудозатрат, длительности и стоимости выполнения программного проекта.
- 50. Методы кодирования текстовой, графической и звуковой информации в эвм. Аналоговые, дискретные и цифровые сигналы.
- Разделы цос
- 51. История создания, принципы работы и основные сервисы сети Интернет.
- 52. Представление данных в эвм. Единицы измерения информации. Двоичные приставки по гост 8.417-2002 и iec 80000-13.
- 53. Принципы и архитектура фон Неймана.
- 54. Порядок обработки команд микропроцессором. Прерывания. Типы прерываний.
- 55. Поколения эвм, основные особенности.
- 56. Классификация запоминающих устройств в эвм. Современные реализации запоминающих устройств.
- 57. Алгебра логики. Основные законы алгебры логики. Применение алгебры логики в информатике.
- 58. Понятие алгоритма. Методы оценки алгоритмической сложности.
- 59. Понятие системы. Системный анализ. Применение системного анализа в информатике.
- 60. Теория формальных грамматик. Основные понятия и положения. Применение в информатике.
- 61. Теория вероятностей. Основные понятия и положения. Применение в информатике.
- 62. Математические методы оптимизации и их применение в информатике.
- 63. Понятие компьютерного моделирования. Вычислительный эксперимент.
- 64. Структурное программирование. Понятия и принципы.
- 65. Объектно-ориентированное программирование. Понятия и принципы.
- 66. Декларативные языки программирования и их сфера применения.
- 67. Событийно-ориентированное программирование.
- 68. Многопоточное программирование. Процесс и поток выполнения. Средства синхронизации потоков.
- 69. Основные алгоритмы и структуры данных применяемые в вычислительных системах.
- 70. Приёмы (шаблоны) объектно-ориентированного проектирования.
- 71. Теория графов. Основные понятия. Решаемые задачи.
- 72. Средства моделирования при разработке программного обеспечения.
- 73. Инструментальные средства разработки программного обеспечения.
- 74. Методологии разработки программного обеспечения. Классификация. Особенности применения.
- 75. Программные средства для организации совместной разработки программного обеспечения.
- 76. Программный продукт. Жизненный цикл программного продукта.
- 77. Отличие объектно-ориентированного программирования от процедурного.
- 78. Инкапсуляция как парадигма объектно-ориентированного программирования. Примеры использования.
- 79. Наследование как парадигма объектно-ориентированного программирования. Примеры использования.
- 80. Полиморфизм как парадигма объектно-ориентированного программирования. Примеры использования.
- 81. Принципы и архитектура эвм фон Неймана.
- 82. Архитектура вычислительных систем. Таксономия Флинна.
- 83. Методы повышения производительности микропроцессоров. Конвейеризация и суперскалярность. Hyper-threading.
- 84. Oltp и olap системы. Отличия Data Mining от других методов анализа данных.
- 85. Однородные линейные динамические системы, их решение с помощью характеристического уравнения.
- 86. Однородные линейные динамические системы, их решение с помощью операционным методом.
- 87. Точки покоя линейных динамических систем. Типы точек покоя для линейной динамической системы второго порядка.
- 88. Устойчивость решений линейных динамических систем. Условие устойчивости решений.
- 89. Равномерное распределение случайной величины.
- 90. Показательное распределение случайной величины.
- 91. Нормальное распределение случайной величины.
- 92. Понятие вариации. Необходимое условие существования экстремума функционала.
- 93. Уравнение Эйлера – Лагранжа для исследования функционала на экстремум.
- 94. Постановка задачи линейного программирования и основные методы решения.
- 95. Постановка задачи целочисленного линейного программирования и основные методы решения.
- 96. Бизнес-процесс. Средства анализа и моделирования. Автоматизация бизнес- процессов.
- 97. Архитектура вычислительной системы, разновидности.
- 98. Аппаратное обеспечение вычислительных систем.
- 99. Архитектура вычислительной сети
- 100. Виртуализация вычислительных ресурсов. "Облачные" вычисления
- 101. Способы реализации человеко-машинного взаимодействия.
- 102. Принципы защиты информации в информационных системах и телекоммуникационных сетях.
- 1.Правовые принципы защиты данных
- 2. Организационные принципы защиты данных
- 3. Принципы защиты информации от тср (технические средства разведки)
- 103. Операционная система. Понятие и основные задачи. Классификация операционных систем.
- 1) По числу одновременно выполняемых задач операционные системы могут быть разделены на два класса:
- 3) По разделяемому процессорному времени (Только для многозадачных ос).
- 5) По поддержке многонитевости систем:
- 104. Файловая система, принципы построения и основные функции.
- 105. Понятие машинного обучения и искусственного интеллекта. Решаемые задачи.
- 106. Центр обработки данных. Ключевые характеристики цод. Управление цод.
- 110. Виртуализация. Виртуальные ресурсы. Характеристики облачных вычислений.
- 2. Кластеризация компьютеров и распределенные вычисления.
- 3. Разделение ресурсов.
- 4. Инкапсуляция.
- 111. Облачные услуги и модели развертывания. Инфраструктура облачных вычислений.
- 112. Сетевые операционные системы. Сетевые службы и сетевые сервисы. Одноранговые и серверные сетевые ос. Домен.
- 113. Генетические алгоритмы. Основные понятия, принципы и предпосылки генетических алгоритмов. Достоинства и недостатки генетических алгоритмов.
- 114. Методы сжатия графической информации. Области применения различных методов.
- 115. Методы сжатия звуковой информации. Области применения различных методов.
- 116. Понятие виртуальной и дополненной реальности. Средства реализации.
- 117. Компьютерная графика. Различные методы и технологии реализации.
- 118. Системы управления базами данных, разновидности.
- 1) Файл-серверные:
- 2) Клиент-серверные:
- 3) Встраиваемые:
- 119. Принципы построения реляционных баз данных. Нормализация данных.
- 120. Распределенные базы данных. Принципы построения и решаемые задачи.
- 121. Понятие открытой вычислительной системы. Классификация. Принципы построения.
- 122. Методы анализа информационных систем.
- 123. Средства мониторинга сетевого трафика.
- 124. Метод Монте-Карло. Принципы построения моделей для анализа эффективности информационных систем (основа построения, достоинства и недостатки).
- 125. Методы управления сетью: коммутация каналов, коммутация пакетов.
- 126. Методы балансировки трафика
- 127. Локальные вычислительные сети (топология, методы доступа)
- 128. Методы повышения достоверности при передаче информации
- 129. Понятие качества обслуживания в компьютерных сетях. Средства обеспечения качества обслуживания.
- 130. Назначение и принцип работы интернет сети
- 131. Основные протоколы сети Интернет, их назначение.
- 132. Автоматизированные информационные системы.
- 133. «Облачные вычисления». Определение, назначение, особенности, области применения.
- 134. Встроенная (встраиваемая) вычислительная система. Определение, назначение, виды, области применения.
- 135. Техническое задание на программное средство. Назначение, роль в жизненном цикле, общая структура.
- 136. Системы автоматизированного проектирования (сапр).
- 137. Экспертные системы. Задачи и область применения.
- 138. Автоматизированные системы обработки информации и управления. Понятие, сферы применения.
- 139. Теория массового обслуживания. Основные принципы. Применение в информатике (основные модели и критерии оценки эффективности).
- 140. Информационные технологии в науке и образовании.
- 141. Прикладное программное обеспечение сетевых технологий (Сетевые операционные системы. Сетевые пакеты прикладных программ).
- 142. Принципы построения распределенных информационных систем. Промежуточное программное обеспечение для обработки сообщений.
- 143. Сервисно-ориентированная архитектура распределенных приложений. Основные протоколы.
- 144. Корпоративные информационные системы (класс erp). Разновидности. Решаемые задачи.
- 145. Новые информационно коммуникационных технологий как база становления информационного общества.
- 146. Модели жизненного цикла программного обеспечения.
- V модель (разработка через тестирование)
- 147. Основные принципы структурного анализа систем.
- 148. Консалтинг в области информационных технологий.
- 149. Методика проведения обследования объектов автоматизации.
- 150. Методы построения и анализа моделей деятельности предприятия.
- 151. Структурно-функциональные модели (sadt).
- 152. Модели потоков данных (dfd).
- 153. Модели «сущность-связь» (erd).
- 154. Нормализация модели данных.
- 155. Объектно-ориентированный язык визуального моделирования uml.
- 156. Методология rup: назначение и основные характеристики.
- 157. Диаграммы вариантов использования (use-cases diagram).
- 158. Диаграммы классов (class diagram). Основные объекты диаграммы.
- 159. Диаграммы деятельности (activity diagram). Основные объекты диаграммы.
- 160. Диаграммы последовательности (sequence diagram).
- Линия жизни (Life Line)
- Активация, фрагмент выполнения (Activation Bar, Execution Occurances)
- Сообщение, Стимул (Message, Stimulus)