# Требования на разработку сервиса покупки авиабилетов ## Пользовательские истории ### ПИ-1 Как покупатель авиабилетов, я хочу иметь удобную возможность покупать авиабилеты всех авиакомпаний через единый интерфейс, это позволит мне съэкономить время и деньги на покупку авиабилетов путем сравнения предложений различных авиакомпаний в едином месте. ### ПИ-2 Как покупатель авиабилетов, я хочу иметь возможность поиска подходящих мне билетов в определенном интервале времени, это позволит мне выбрать наиболее подходящие и дешевые для меня билеты путем выбора даты отлета и возвращения с самыми дешевыми билетами. ### ПИ-3 Как любитель дешевых путешествий, я хочу чтобы система присылала информацию о стоимости билетов на интересующем меня маршруте, это позволит мне отследить момент когда билеты будут продаваться по выгодной для меня цене и купить их. ### ПИ-4 Как сомневающийся путешественник, я хочу чтобы система смогла подобрать для меня дешевое путешествие в заданных временных рамках в любую точку мира, мне останется только выбрать куда, это с экономит мне деньги и время на выборе и поиске авиабилетов. ## Сценарии использования ### **СИ1** - Пользователь четко знает дату поездки и не может ее поменять **Действующие лица:** Пользователь, Система **Цель:** Купить билет на рейс **Предусловие:** Пользователю известно время, место прибытия и отбытия **Успешный сценарий:** 1. Пользователь в интерфейсе вводит: * Пункт вылета; * Пункт назначения; * Количество путешественников; * Указывает тип билета: туда и обратно или в один конец; * Указывает дату вылета; * В случае билетов туда и обратно, пользователь также указывает дату возвращения. 2. При вводе пунктов вылета/прилета система позволяет вводить как название аэропорта, так и города и целой страны. 3. Система отображает пользователю все найденные билеты упорядоченные по стоимости начиная с самых дешевых. 4. Пользователь выбирает выгодные для себя билеты и производит покупку, оставляя свои контактные данные (email); 5. Система бронирует билеты в авиакомпании или у оператора; 6. Пользователь получает информацию о приобретенных билетах на указанный email. ### **СИ2** - Пользователь приблизительно знает дату поездки и может ее изменить на несколько дней **Действующие лица:** Пользователь, Система **Цель:** Купить билет на рейс **Предусловие:** Пользователю известно приблизительный интервал дат поездки, пункт вылета и желаемый пункт назначения **Успешный сценарий:** 1. Пользователь в интерфейсе вводит: * Пункт вылета; * Пункт назначения; * Количество путешественников; * Указывает тип билета: туда и обратно или в один конец; * Указывает примерную дату вылета и прилета (интервал дат, месяц вылета/прилета). 2. При вводе пунктов вылета/прилета система позволяет вводить как название аэропорта, так и города и целой страны. 3. Система отображает пользователю все найденные билеты упорядоченные по стоимости начиная с самых дешевых. 4. Пользователь выбирает выгодные для себя билеты и производит покупку, оставляя свои контактные данные (email); 5. Система бронирует билеты в авиакомпании или у оператора; 6. Пользователь получает информацию о приобретенных билетах на указанный email. ### **СИ3** - Пользователь ограничен в бюджете и хочет узнать когда появятся доступные ему билеты в определенный интервал времени **Действующие лица:** Пользователь, Система **Цель:** Получить информацию о доступных пользователю билетах **Предусловие:** Пользователю известно приблизительный интервал дат поездки, пункт вылета и желаемый пункт назначения **Успешный сценарий:** 1. Пользователь в интерфейсе вводит: * Пункт вылета; * Пункт назначения; * Количество путешественников; * Указывает тип билета: туда и обратно или в один конец; * Указывает примерную дату вылета и прилета. 2. При вводе пунктов вылета/прилета система позволяет вводить как название аэропорта, так и города и целой страны. 3. Пользователь указывает свои контактные данные (email) куда ежедневно будет приходить информаци об изменении в стоимости билетов. 4. Система периодически отправляет на почту пользвателя сводки об изменении цен на билеты. 5. Пользователь получает на почту информацию о выгодном для него билете и производит покупку; 6. Система бронирует билеты в авиакомпании или у оператора; 7. Пользователь получает информацию о приобретенных билетах на указанный email. ### **СИ4** - Пользователь ограничен только временными рамками, он хочет чтобы система предложила ему самые дешевые маршруты путешествия и ему останется только выбрать маршрут **Действующие лица:** Пользователь, Система **Цель:** Получить информацию о самых дешевых маршрутах **Предусловие:** Пользователю известен пункт вылета и интервал времени путешествия **Успешный сценарий:** 1. Пользователь в интерфейсе вводит: * Пункт вылета; * Количество путешественников; * Указывает тип билета: туда и обратно или в один конец; * Указывает примерную дату вылета и прилета. 2. При вводе пунктов вылета/прилета система позволяет вводить как название аэропорта, так и города и целой страны. 3. Система предоставляет пользователю перечень всех возможны перелетов упорядоченный по возрастанию стоимости. 4. Пользователь выбирает выгодные для себя билеты и производит покупку, оставляя свои контактные данные (email); 5. Система бронирует билеты в авиакомпании или у оператора; 6. Пользователь получает информацию о приобретенных билетах на указанный email. ## Функциональные требования ### ФТ1 - Требования к интерфейсу ввода данных Интерфейс ввода данных должен содержать поля для ввода: * Пункта вылета и пункта назначения, поля должны воспринимать ввод стран, городов, аэропортов и: * давать подсказки елси пользователь ошибся в названии, * или предлагать выбрать город в случае ввода страны, * или выбрать аэропорт в случае выбора города; * Ввода количества путешественников, количество путешественников должно быть всегда больше нуля; * Ввод типа билета: "туда и обратно" или "в один конце"; * Ввод даты вылета: необходима возможность как ввода конкретной даты, так и выбор интервала дат; * Ввод даты возвращения: Если тип билета выбрат "туда и обратно", так же должна быть доступна возможность ввода как конкретной даты, так и выбор интервала дат; ### ФТ2 - Требования к интерфейсу отображения данных билетов Интерфейс отображения информации о доступных рейсах и билетах должен поддерживать отображение перечная найденных рейсов согласно запросу пользователя. В интерфейсе должна присутствовать вся необходимая информация о рейсе: авиакомпания, самолет, доступные билеты и их стоимость. По нажатию на выбор доступных билетов в рейсе, интерфейс должен отображать их в удобном для пользователя виде, давать возможность выбрать места и купить их. Так же интерфейс должен предоставлять возможность начать отслеживать доступные билеты на рейс, по нажанию на кнопку "отслеживать" отображается интерфейс отслеживния доступных билетов. ### ФТ3 - Интерфейс покупки билетов Интерфейс покупки билетов должен предоставлять возможность оплаты билеты пользователем и ввода контактной информации для получения информации о купленых билетах. ### ФТ4 - Интерфейс отслеживания доступных билетов Интерфейс отслеживания доступных билетов должен предоставлять возможность указать почтовый адрес куда будет приходить информация о доступных билетах и задать частоту и интервал оповещения пользователя. ### ФТ5 - Требования к системе обработки информации о билетах Система должна получать всю информацию о доступных билетах всех авиакомпаний и обрабатывать все запросы на поиск билетов из интерфейса ввода данных. Система должна искать оптимальные маршруты следования и ранжировать их по стоимости билетов. ### ФТ6 - Система бронирования и приобретения билетов Система должна по запросу пользователия иметь возможность бронировать и приобретать билеты в авиакомпаних или у операторов и предоставлять данные о купленных билетах пользователю.