В чем заключается согласованность по
Программная инженерия — тест с ответами
Информатика в настоящее время является стремительно развивающийся наукой. Многие студенты постают в технические университеты, чтобы в будущем связать свою деятельность с IT или приближенными областями. Для проверки знаний по теме Программная инженерия предлагаем пройти тестирование на этой странице. Обращаем ваше внимание, что в тесте правильные ответы выделены символом [+].
К какому типу проектов относятся проекты по разработке ПО:
[+] а) и к творческим, и к промышленным проектам
[-] б) к промышленным проектам
[-] в) к творческим проектам
Какие возвраты невозможны при разработке по водопадной модели:
[-] а) возврат от кодированию к тестированию
[+] б) возврат от тестирования к анализу
[-] в) возврат от тестирования к кодированию
Какие возвраты невозможны при разработке по водопадной модели:
[-] а) возврат от кодированию к тестированию
[-] б) возврат от тестирования к кодированию
[+] в) возврат от кодирования к разработке системных требований
В чем заключается согласованность ПО:
[+] а) в том, что ПО должно быть согласовано с большим количеством интерфейсов
[-] б) в согласованности заказчика и исполнителя
[-] в) в том, что ПО основывается на объективных посылках
Для чего используется рабочий продукт:
[-] а) для контроля разработки
[-] б) для устранения накладных расходов
[+] в) для контроля разработки
Какая стратегия нацелена на решение конкретных проблем компании:
[+] б) organization pull
Какой вопрос решается в сфере программной инженерии:
[-] а) вопросы создания компьютерных программ и/или программного обеспечения
[+] в) вопрос поддержки жизненного цикла разработки ПО
Какой вопрос решается в сфере программной инженерии:
[+] а) вопрос организации и улучшения процесса разработки ПО
[-] б) вопросы создания компьютерных программ и/или программного обеспечения
Какой вопрос решается в сфере программной инженерии:
[-] б) вопросы создания компьютерных программ и/или программного обеспечения
[+] в) вопрос управления командой разработчиков
Какая область объединяет различные инженерные дисциплины по разработке всевозможных искусственных систем:
Какое свойство определяет процедуры внесения изменений в требования:
[-] в) тестируемость и проверяемость
Целью какого вида деятельности является обнаружение и устранение противоречий и неоднозначностей в требованиях, их уточнение и систематизация:
[-] а) описание требований
[+] б) анализ требований
[-] в) валидация требований
Для чего предназначены диаграммы конечных автоматов:
[+] а) для задания поведения реактивных систем
[-] б) для моделирования структуры объектно-ориентированных приложений классов, их атрибутов и заголовков методов, наследования
[-] в) для моделирования компонентной структуры распределенных приложений
Что реализуют модели, представленные диаграммами UML:
[-] а) вид деятельности
[-] б) фазу разработки ПО
[+] в) точку зрения на программную систему
Что такое управление версиями:
[+] а) одна из задач конфигурационного управления
[-] б) автоматизированный процесс трансформации исходных текстов ПО в пакет исполняемых модулей
[-] в) ручной процесс трансформации исходных текстов ПО в пакет исполняемых модулей
Что такое управление версиями:
[-] а) автоматизированный процесс трансформации исходных текстов ПО в пакет исполняемых модулей
[+] б) управление версиями файлов
[-] в) ручной процесс трансформации исходных текстов ПО в пакет исполняемых модулей
При выполнении какого вида тестирования система тестируется на устойчивость к непредвиденным ситуациям:
[-] а) при выполнении нагрузочного тестирования
[-] б) при выполнении интеграционного тестирования
[+] в) при выполнении стрессового тестирования
При использовании какого метода тестирования код программы доступен тестировщикам:
[-] а) при использовании любого метода тестирования
[+] б) при использовании метода белого ящика
[-] в) при использовании метода черного ящика
При использовании какого метода тестирования реализация системы недоступна тестировщикам:
[-] а) при использовании метода белого ящика
[-] б) при использовании любого метода тестирования
[+] в) при использовании метода черного ящика
Что такое нагрузочное тестирование:
[-] а) тестирование системы на устойчивость к непредвиденным ситуациям
[+] б) тестирование системы на корректную работу с большими объемами данных
[-] в) тестирование всей системы в целом, как правило, через ее пользовательский интерфейс
Что определяют варианты использования:
[+] а) как функции, так и требования
[-] б) только функции системы
[-] в) только требования к системе
Какова основная задача комитета ITU:
[-] а) стандартизация в телекоммуникационной промышленности
[+] б) стандартизация телекоммуникационных протоколов и интерфейсов с целью поддержания и развития глобальной мировой телекоммуникационной сети
[-] в) содействие развитию стандартизации, а также смежных видов деятельности в мире с целью обеспечения международного обмена товарами и услугами
Какие тесты представляют собой последовательность действий тестировщика или разработчика, приводящую к воспроизведению ошибки:
Какую роль выполняет менеджер в процессе работы над ошибками:
[-] а) нахождение ошибок
[+] б) контроль хода проекта
[-] в) исправление ошибок
Какой из участников создания модели при описании системы не несет ответственности за качество моделирования:
При выполнении какого вида тестирования тестируется отдельный модуль, в отрыве от остальной системы:
[-] а) при выполнении интеграционного тестирования
[+] б) при выполнении модульного тестирования
[-] в) при выполнении системного тестирования
С какой ролью можно совмещать разработку:
[-] б) управление продуктом
На каком уровне зрелости осуществляется анализ причин возникновения проблем и предотвращение их появления в будущем:
[-] а) на уровне зрелости 3
[-] б) на уровне зрелости 4
[+] в) на уровне зрелости 5
Какой этап следует за созданием требований к продукту при использовании метода Scrum:
[+] а) планирование итерации
[-] б) анализ результатов, пересмотр требований
[-] в) выполнение итерации
На каком уровне процессы в полной мере существуют лишь в рамках отдельных проектов:
Согласованные в конечном счете (Eventually Consistent)
Введение
В основе облачных вычислений Amazon лежат инфраструктурные сервисы. Такие, как Amazon S3, SimpleDB и EC2. Они позволяют строить масштабируемые вычислительные платформы и приложения. Требования к этим сервисам весьма жесткие. Они должны обеспечивать отличную безопасность, масштабируемость, доступность, производительность и эффективное использование ресурсов. И всё это – во время обслуживания миллионов клиентов со всего мира.
Внутри эти сервисы представляют собой огромные распределенные системы, работающие в мировом масштабе. Что создаёт дополнительные сложности, поскольку при обработке триллионов и триллионов запросов, события, которые обычно случаются с весьма низкой вероятностью, теперь гарантированно случаются. И это нужно учитывать при проектировании и разработке системы. В мировых масштабах мы используем репликацию повсеместно, чтобы обеспечить требуемую производительность и высокую доступность. Хотя репликация и приближает нас к нашим цели, она всё же не позволяет нам прозрачно достичь их. Существует ряд нюансов, с которыми столкнутся пользователи сервисов, использующих репликацию.
Один из таких нюансов – тип согласованности данных, обеспечиваемый системой. В частности, многие распространенные распределенные системы используют модель «согласованность в конечном счете» (eventual consistency) в контексте репликации данных. При разработке больших масштабируемых систем в Amazon мы использовали набор правил и абстракций, связанных с репликацией данных в больших масштабируемых системах. Мы сфокусировались на поиске компромисса между высокой доступностью (high availability) и согласованностью данных. В этой статье я рассмотрю часть информации, сформировавшей наш подход к построению надежных распределенных систем, работающих в мировом масштабе.
Историческая перспектива
В идеальном мире существовала бы только одна модель согласованности: после выполнения обновления данных, все наблюдатели увидят обновления. Первые трудности с достижением этого возникли в СУБД в конце 70х. Лучшая работа на эту тему – «Notes on Distributed Databases» Брюса Линдсей. Он излагает основные принципы репликации баз данных и обсуждает ряд техник, связанных с достижением согласованности. Множество из этих техник пытается достичь прозрачности распределения – чтобы с точки зрения пользователя это выглядело как единая система, а не как множество связанных систем. Многие системы того времени следовали подходу, что лучше сбой всей системы, чем нарушение прозрачности.
В средине 90х, с ростом систем в интернете, эта практика была пересмотрена. В это время люди начали склоняться к мнению, что доступность – наиболее важное свойство, но они не могли решить, чем пожертвовать в качестве компромисса. Эрик Брюэр (Eric Brewer), профессор Беркли, который в то время был главой Inktomi (компания, выпустившая успешный поисковик, которая потом была поглощена Yahoo – прим. пер.), собрал все компромиссы воедино в докладе на конференции PODC в 2000 году. Он представил теорему CAP, которая утверждает, что из трех свойств систем с распределенными данными – согласованность данных (consistency), доступность системы при сбое одного из узлов (system availability) и устойчивость к потере связи между сегментами сети (partition tolerance) (здесь и далее под сегментированием сети подразумевается потеря связи между частями распределенной системы, когда каждая часть отдельно работоспособна, но они «не видят» друг друга – прим. пер.) – одновременно можно достичь только два. Более формализованное подтверждение опубликовано в статье Сета Гилберта и Ненси Линча в 2002.
Система, не обеспечивающая устойчивости к потере связи между сегментами сети, может достичь согласованности данных и доступности, что зачастую достигается использованием протокола транзакций. При этом, определенные ситуации обрабатываются как сбой системы. Например, если клиент не видит часть узлов. Стоит отметить, что в больших масштабируемых системах зачастую присутствует сегментирование, потому согласованность данных и доступность не достижимы одновременно. Это значит, что у нас есть два выбора: ослабить согласованность, что позволит создать систему с высокой доступностью в условиях сегментирования сети, или же акцентироваться на согласованности, что приведет к недоступности системы в определенных ситуациях.
Оба варианта требуют внимания разработчика клиентской части к возможностям системы. Если система акцентируется на целостности, то разработчик должен иметь ввиду, что система может оказаться недоступной, например, для записи и соответственно обрабатывать эту ситуацию, чтобы не потерять данные. Если же система акцентирует внимание на доступности, то она может всегда обеспечивать запись, но чтение данных в некоторых случаях не будет отражать результат недавно осуществленной записи. Разработчику приходится решать, действительно ли клиенту необходимы самые-самые последние изменения. Во многих случаях допустимо использовать слегка устаревшие данные.
В принципе, согласованность в транзакционных системах, соответствующих ACID, – это несколько другой вид обеспечения согласованности. В ACID под согласованностью подразумевается гарантия, что по завершению транзакции база данных находится в согласованном состоянии. Например, при переводе денег между счетами, сумма денег на счетах не должна измениться. В системах, соответствующих ACID, этот вид согласованности, как правило, обеспечивается использованием транзакций и средств базы по обеспечению целостности данных.
Согласованность – клиент и сервер
Существует два взгляда на согласованность. Один с точки зрения разработчика/клиента: как они видят обновления данных. Второй – со стороны сервера: как проходят обновления в системе и что система может гарантировать относительно апдейтов.
Согласованность с точки зрения клиента
С точки зрения клиента у нас есть следующие компоненты:
Система хранения. На данный момент мы рассматриваем её как черный ящик. Но учитываем, что внутри нечто в высокой степени масштабируемое и распределенное, построенное для обеспечения устойчивости и доступности.
Процесс А. Процесс, который пишет в систему хранения и читает из неё.
Процессы В и С. Два процесса, не зависящие от процесса А, которые также пишут систему хранения и читают из неё. Не важно, являются ли они процессами или потоками одного процесса. Важно лишь то, что они независимы и должны взаимодействовать для обмена информацией.
Клиентская (client-side) согласованность определяет, как и когда наблюдатели (в нашем случае процессы А, В и С) видят изменения объекта данный в системе хранения. В следующих примерах, иллюстрирующих различные типы согласованности, процесс А выполнил обновление (update) данных.
Сильная согласованность (Strong consistency). После завершения обновления, любой последующий доступ к данным (Процессом А, В или С) вернет обновленное значение.
Слабая согласованность (Weak consistency). Система не гарантирует, что последующие обращения к данным вернут обновленное значение. Перед тем, как будет возвращено обновленное значение, должен выполниться ряд условий. Период между обновлением и моментом, когда каждый наблюдатель всегда гарантированно увидит обновленное значение, называется окном несогласованности (inconsistency window).
Согласованность в конечном счете (Eventual consistency). Частный случай слабой согласованности. Система гарантирует, что, при отсутствии новых обновлений данных, в конечном счете, все запросы будут возвращать последнее обновленное значение. При отсутствии сбоев, максимальный размер окна несогласованности может быть определен на основании таких факторов, как задержка связи, загруженность системы и количество реплик в соответствии со схемой репликации. Самая популярная система, реализующая «согласованность в конечном счете» – DNS. Обновленная запись распространяется в соответствии с параметрами конфигурации и настройками интервалов кэшированя. В конечном счете, все клиенты увидят обновление.
Согласованность в конечном счете (Eventual consistency) имеет множество вариаций, которые важно учитывать:
Причинная согласованность (Causal consistency). Если процесс А сообщил процессу В, что обновил данные, то последующие обращения процесса В к этим данным будут возвращать обновленные значения и запись гарантированно замещает более раннюю. Доступ процесса С, который не находится в причинной связи с процессом А, подчиняется обычным правилам eventual consistency.
Модель согласованности «Читай то, что записал» (Read-your-writes consistency). Это важная модель, в которой процесс А после обновления данных всегда при обращении получает обновленное значение и никогда не видит более старого. Это частный случай причинной согласованности (causal consistency).
Сессионная согласованность (Session consistency). Это практическая версия предыдущей модели, когда процесс получает доступ к хранилищу в контексте сессии. Пока сессия существует, система гарантирует Read-your-writes согласованность. Если же сессия завершается по причине какого-либо сбоя, то должна создаваться новая сессия, гарантированно не перекрывающаяся с другими.
Модель согласованности «однообразное чтение» (Monotonic read consistency). Если процесс увидел определенное значение, то, при последующих обращениях к этим данным, он никогда не получит более старое значение.
Модель согласованности «однообразная запись» (Monotonic write consistency). В этом варианте система гарантирует упорядоченность записи одного процесса. Системы, не обеспечивающие этот уровень согласованности, сложны в использовании.
Некоторые из этих вариаций могут быть скомбинированы. Например, можно объединить monotonic reads и сессионную согласованность. С практической точки зрения, monotonic reads и read-your-writes наиболее желанны в системах, реализующих «согласованность в конечном счете», но не всегда необходимы. Такая комбинация облегчает разработку приложений, позволяя при этом системе хранения ослабить согласованность и обеспечить высокую доступность.
«Согласованность в конечном счете» (Eventual consistency) не является какой-то эзотерической поэзией экстремальных распределенных систем. Многие современные реляционные СУБД, обеспечивающие надежность дублированием на резервный сервер (primary-backup reliability), реализуют работу механизма репликации в двух режимах: синхронном и асинхронном. В синхронном режиме обновление реплики является частью транзакции. В асинхронном режиме обновление доставляется как бекап, с некоторой задержкой, зачастую через доставку логов. В последнем случае, если основной сервер откажет до того, как лог был доставлен, то чтение с резервного сервера, поднятого вместо основного, вернет нам устаревшие данные. Также, для обеспечения лучшей масштабируемости чтения, реляционные СУБД начали предоставлять возможность чтения с резервного сервера, что является классическим случаем гарантий «согласованности в конечном счете», в котором размер окна несогласованности зависит от периодичности отправки лога.
Тест с ответами: “Программная инженерия”
1. К какому типу проектов относятся проекты по разработке ПО:
а) и к творческим, и к промышленным проектам +
б) к промышленным проектам
в) к творческим проектам
2. Какие возвраты невозможны при разработке по водопадной модели:
а) возврат от кодированию к тестированию
б) возврат от тестирования к анализу +
в) возврат от тестирования к кодированию
3. Какие возвраты невозможны при разработке по водопадной модели:
а) возврат от кодированию к тестированию
б) возврат от тестирования к кодированию
в) возврат от кодирования к разработке системных требований +
4. В чем заключается согласованность ПО:
а) в том, что ПО должно быть согласовано с большим количеством интерфейсов +
б) в согласованности заказчика и исполнителя
в) в том, что ПО основывается на объективных посылках
5. Для чего используется рабочий продукт:
а) для контроля разработки
б) для устранения накладных расходов
в) для контроля разработки +
6. Какая стратегия нацелена на решение конкретных проблем компании:
а) technology push
б) organization pull +
в) обе стратегии
7. Какой вопрос решается в сфере программной инженерии:
а) вопросы создания компьютерных программ и/или программного обеспечения
б) бизнес-реинжиниринг
в) вопрос поддержки жизненного цикла разработки ПО +
8. Какой вопрос решается в сфере программной инженерии:
а) вопрос организации и улучшения процесса разработки ПО +
б) вопросы создания компьютерных программ и/или программного обеспечения
в) бизнес-реинжиниринг
9. Какой вопрос решается в сфере программной инженерии:
а) бизнес-реинжиниринг
б) вопросы создания компьютерных программ и/или программного обеспечения
в) вопрос управления командой разработчиков +
10. Какая область объединяет различные инженерные дисциплины по разработке всевозможных искусственных систем:
а) информатика
б) системотехника +
в) бизнес-реинжиниринг
11. Какое свойство определяет процедуры внесения изменений в требования:
а) модифицируемость +
б) прослеживаемость
в) тестируемость и проверяемость
12. Целью какого вида деятельности является обнаружение и устранение противоречий и неоднозначностей в требованиях, их уточнение и систематизация:
а) описание требований
б) анализ требований +
в) валидация требований
13. Для чего предназначены диаграммы конечных автоматов:
а) для задания поведения реактивных систем +
б) для моделирования структуры объектно-ориентированных приложений классов, их атрибутов и заголовков методов, наследования
в) для моделирования компонентной структуры распределенных приложений
14. Что реализуют модели, представленные диаграммами UML:
а) вид деятельности
б) фазу разработки ПО
в) точку зрения на программную систему +
15. Что такое управление версиями:
а) одна из задач конфигурационного управления +
б) автоматизированный процесс трансформации исходных текстов ПО в пакет исполняемых модулей
в) ручной процесс трансформации исходных текстов ПО в пакет исполняемых модулей
16. Что такое управление версиями:
а) автоматизированный процесс трансформации исходных текстов ПО в пакет исполняемых модулей
б) управление версиями файлов +
в) ручной процесс трансформации исходных текстов ПО в пакет исполняемых модулей
17. При выполнении какого вида тестирования система тестируется на устойчивость к непредвиденным ситуациям:
а) при выполнении нагрузочного тестирования
б) при выполнении интеграционного тестирования
в) при выполнении стрессового тестирования +
18. При использовании какого метода тестирования код программы доступен тестировщикам:
а) при использовании любого метода тестирования
б) при использовании метода белого ящика +
в) при использовании метода черного ящика
19. При использовании какого метода тестирования реализация системы недоступна тестировщикам:
а) при использовании метода белого ящика
б) при использовании любого метода тестирования
в) при использовании метода черного ящика +
20. Что такое нагрузочное тестирование:
а) тестирование системы на устойчивость к непредвиденным ситуациям
б) тестирование системы на корректную работу с большими объемами данных +
в) тестирование всей системы в целом, как правило, через ее пользовательский интерфейс
21. Что определяют варианты использования:
а) как функции, так и требования +
б) только функции системы
в) только требования к системе
22. Какова основная задача комитета ITU:
а) стандартизация в телекоммуникационной промышленности
б) стандартизация телекоммуникационных протоколов и интерфейсов с целью поддержания и развития глобальной мировой телекоммуникационной сети +
в) содействие развитию стандартизации, а также смежных видов деятельности в мире с целью обеспечения международного обмена товарами и услугами
23. Какие тесты представляют собой последовательность действий тестировщика или разработчика, приводящую к воспроизведению ошибки:
а) никакие
б) любые
в) ручные +
24. Какую роль выполняет менеджер в процессе работы над ошибками:
а) нахождение ошибок
б) контроль хода проекта +
в) исправление ошибок
25. Какой из участников создания модели при описании системы не несет ответственности за качество моделирования:
а) автор
б) эксперт
в) читатель +
26. При выполнении какого вида тестирования тестируется отдельный модуль, в отрыве от остальной системы:
а) при выполнении интеграционного тестирования
б) при выполнении модульного тестирования +
в) при выполнении системного тестирования
27. С какой ролью можно совмещать разработку:
а) архитектура +
б) управление продуктом
в) тестирование
28. На каком уровне зрелости осуществляется анализ причин возникновения проблем и предотвращение их появления в будущем:
а) на уровне зрелости 3
б) на уровне зрелости 4
в) на уровне зрелости 5 +
29. Какой этап следует за созданием требований к продукту при использовании метода Scrum:
а) планирование итерации +
б) анализ результатов, пересмотр требований
в) выполнение итерации
30. На каком уровне процессы в полной мере существуют лишь в рамках отдельных проектов:
а) на начальном уровне
б) на управляемом уровне +
в) на оптимизирующемся уровне
Согласованность данных
Согласованность данных (иногда консистентность данных, англ. data consistency ) в информатике — это согласованность данных друг с другом, целостность данных, а также внутренняя непротиворечивость.
Содержание
Согласованность в ER-модели
В терминах ER-модели, условия согласованности могут включать в себя указание того, какие значения могут принимать атрибуты узлов, какие связи могут устанавливаться между узлами, каково минимальное и максимальное число связей определённого типа, в котором может участвовать один узел.
Согласованность в базах данных
Согласованность в теории алгоритмов и структур данных
Согласованность структуры данных в теории алгоритмов имеет важное значение: многие задачи, решаемые алгоритмистами и программистами связаны с поиском эффективной структуры данных и реализацией механизмов поддержки её согласованности.
См. также
Полезное
Смотреть что такое «Согласованность данных» в других словарях:
Консистентность данных — (англ. data consistency или data validity) это согласованность данных друг с другом, целостность данных, а также внутренняя непротиворечивость. Множество всех условий, налагаемых на данные определяется моделью (структурой) данных.… … Википедия
Хранилище данных (значения) — Это слово имеет следующие значения: Content repository программная система, сочетающая в себе СУБД, систему контроля версий и поисковую машину; Data Warehouse предметно ориентированная корпоративная база данных. … Википедия
Сервер базы данных — Сервер БД выполняет обслуживание и управление базой данных и отвечает за целостность и сохранность данных, а также обеспечивает операции ввода вывода при доступе клиента к информации. Архитектура клиент сервер состоит из клиентов и серверов.… … Википедия
Сервер баз данных — Сервер БД обслуживает базу данных и отвечает за целостность и сохранность данных, а также обеспечивает операции ввода вывода при доступе клиента к информации. Архитектура клиент сервер состоит из клиентов и серверов. Основная идея состоит в том,… … Википедия
Хранилище данных — (англ. Data Warehouse) предметно ориентированная информационная база данных, специально разработанная и предназначенная для подготовки отчётов и бизнес анализа с целью поддержки принятия решений в организации. Строится на базе систем… … Википедия
Хранилище Данных — (англ. Data Warehouse) очень большая предметно ориентированная информационная корпоративная база данных, специально разработанная и предназначенная для подготовки отчётов, анализа бизнес процессов с целью поддержки принятия решений в организации … Википедия
Хранилище данных (Datawarehouse) — Хранилище данных (англ. Data Warehouse) очень большая предметно ориентированная информационная корпоративная база данных, специально разработанная и предназначенная для подготовки отчётов, анализа бизнес процессов с целью поддержки принятия… … Википедия
логическая согласованность (пространственных данных) — Соблюдение ограничений на координатные, атрибутивные данные и топологические отношения пространственных объектов и их наборов. [ГОСТ Р 52438 2005] Тематики географические информационные системы … Справочник технического переводчика
логическая согласованность (пространственных данных) — 73 логическая согласованность (пространственных данных): Соблюдение ограничений на координатные, атрибутивные данные и топологические отношения пространственных объектов и их наборов. Источник: ГОСТ Р 52438 2005: Географические информационные… … Словарь-справочник терминов нормативно-технической документации
Внутренняя согласованность шкалы — Понятие внутренней согласованности шкалы теста связано с проблемой надёжности результатов измерения. Сложность состоит в том, чтобы определить, насколько ответы на предложенные в тесте вопросы дадут соответствующую и полную информацию об… … Википедия