Вариант 6
Поисковая система (веб-сервис для поиска текстовой или графической информации во Всемирной паутине)
1. Функциональные требования:
- перебор страниц Интернета (поисковый робот);
- формирование списка слов и адресов найденных страниц;
- индексирование данных с учетом весовых коэффициентов;
- занесение данных в бд;
- обработка и сопоставление ключевых слов со словами в индексе;
- сопоставление сайтов содержащих ключевые слова;
- ранжирование выдачи по релевантности ресурса: ссылочная масса, количество вхождений ключевых слов, вес страницы (ТИЦ, PR) и т. д.;
- пользовательские фильтры для поиска информации (регион, язык, время, картинки, видео);
- поисковая строка с возможностью ввода и редактирования текста;
- выпадающий список подсказок при вводе запроса в поисковую строку;
- сохранение предыдущих запросов пользователя;
- сбор поведенческих факторов для улучшения выдачи;
- авторизация пользователя;
- персонализированная выдача по предпочтениям авторизованного пользователя;
- на одной страницы выдачи формируется не более 10 ресурсов;
- навигация по страницам выдачи происходит с помощью пагинатора;
2. Другие требования:
- среднее время ответа сервера – 0,82c;
- среднее время загрузки страницы– 2,5c;
- использование не более 64кб оперативной памяти на один поисковой запрос;
- защита от DDoS-атак;
- защита от xss-атак;
- защита от sql-инъекций;
- адаптивный веб-дизайн;
- кроссбраузерность;
- интерфейс в стиле Flat Design;
- юзабилити должно соответствовать стандарту ISO 9241-11.
3. Детализация требований.
Перебор страниц Интернета (поисковый робот):
1. Задачей поискового бота является только получение страниц сайта и иных документов;
|
2. Бот посылает HTTP-запрос GET, в котором указан полный адрес (URI) документа;
3. Сервер отвечает на запрос так же, как и в случае обращения браузера: передает заголовок ответа (HTTP Response Header) с информацией о документе, а следом сам документ;
4. Робот получает документ, сохраняет его и запрашивает следующий URI;
5. Единственное действие, которое бот может выполнять, кроме чтения документов — обработка исключений для роботов.
Адаптивный веб-дизайн:
1. Целью адаптивного веб-дизайна является универсальность веб-сайта для различных устройств;
2. Применение гибкого макета на основе сетки;
3. Использование гибких изображений;
4. Использование медиа-запросов.
1.Программная инженерия:
- это установление и использование обоснованных инж. принципов для экономного получения ПО, которое надежно работает на разных машинах;
- дисциплина, целью которой является создание качественного ПО которое не превышает бюджетных средств.
2. Этапы становления ПИ:
1) Повторное использование кода (модульное программирование).
На первых этапах становления программной инженерии (даже когда она так еще не называлась) было отмечено, что высокая стоимость программ связана с разработкой одинаковых (или похожих) фрагментов кода в различных программах. Использование при создании новых программ ранее написанных фрагментов сулило существенное снижение сроков и стоимости разработки. Главный принцип модульного программирования состоял в выделении таких фрагментов и оформлении их в виде модулей. Каждый модуль снабжался описанием, в котором устанавливались правила его использования – интерфейс модуля. Интерфейс задавал связи модуля с основной программой – связи по данным и связи по управлению. При этом возможность повторного использования модулей определялась количеством и сложностью этих связей, или насколько эти связи удалось согласовывать с организацией данных и управления основной программы.
|
2) Рост сложности программ (структурное программирование).
Следующий этап возрастания стоимости ПО был связан с переходом от разработки относительно простых программ к разработке сложных программных комплексов. Следует отметить, что этот переход был вызван появлением вычислительной техники третьего поколения (интегральные схемы). С переходом на использование интегральных схем производительность компьютеров возросла на порядки, что и создало предпосылки для решения сложных задач. Этап сопровождения программного комплекса включал действия по исправлению ошибок в работе программы и внесению изменений в соответствии с изменившимися требованиями пользователей. Основная причина высокой стоимости (а порой и невозможности выполнения) этапа сопровождения состояла в том, что программы были плохо спроектированы – документация была не понятна и не соответствовала программному коду, а сам программный код был очень сложен и запутан. Нужна была технология, которая обеспечит «правильное» проектирование и кодирование.
Основные принципы технологии структурного проектирования и кодирования:
o Нисходящее функциональное проектирование, при котором в системе выделяются основные функциональные подсистемы, которые потом разбиваются на подсистемы и т.д. (принцип «разделяй и властвуй»);
|
o Применение специальных языков проектирования и средств автоматизации использования этих языков;
o Дисциплина проектирования и разработки: планирование и документирование проекта, поддержка соответствие кода проектной документации.
3) Модификация программ (ООП) Следующая проблема роста стоимости программ была вызвана тем, что изменение требований к программе стали возникать не только на стадии сопровождения, но и на стадии проектирования – проблема заказчика, который не знает, что он хочет. Создание программного продукта превратилось в его перманентное перепроектирование. Возник вопрос, как проектировать и писать программы, чтобы обеспечить возможность внесений изменений в программу, не меняя ранее написанного кода. Решением этой проблемы стало использование подхода или метода, который стали называть объектно-ориентированным проектированием и программированием. Суть подхода состоит в том, что вводится понятие класса как развитие понятия модуля с определенными свойствами и поведением, характеризующими обязанностями класса. Каждый класс может порождать объекты – экземпляры данного класса.
3. Основные процессы (фазы) разработки программы:
1) Постановка задачи — выполняется специалистом в предметной области на естественном языке (русском, английском и т. д.). Необходимо определить цель задачи, ее содержание и общий подход к решению. Возможно, что задача решается точно (аналитически), и без компьютера можно обойтись. Уже на этапе постановки надо учитывать эффективность алгоритма решения задачи на ЭВМ, ограничения, накладываемые аппаратным и программным обеспечением (АО и ПО).
2) Анализ задачи и моделирование — определяются исходные данные и результат, выявляются ограничения на
их значения, выполняется формализованное описание задачи и построение (выбор) математической модели, пригодной для решения на компьютере.
3) Разработка или выбор алгоритма решения задачи — выполняется на основе ее математического описания. Многие задачи можно решить различными способами. Программист должен выбрать оптимальное решение. Неточности в постановке, анализе задачи или разработке алгоритма могут привести к скрытой ошибке — программист получит неверный результат, считая его правильным.
4) Проектирование общей структуры программы — формируется модель решения с последующей детализацией и разбивкой на подпрограммы, определяется "архитектура" программы, способ хранения информации (набор переменных, массивов и т. п.).
5) Кодирование — запись алгоритма на языке программирования. Современные системы программирования позволяют ускорить процесс разработки программы, автоматически создавая часть ее текста, однако творческая работа по-прежнему лежит на программисте. Для успешной реализации целей проекта программисту необходимо использовать методы структурного программирования.
6) Отладка и тестирование программы. Под отладкой понимается устранение ошибок в программе. Тестирование позволяет вести их поиск и, в конечном счете, убедиться в том, что полностью отлаженная программа дает правильный результат. Для этого разрабатывается система тестов — специально подобранных контрольных примеров с такими наборами па раметров, для которых решение задачи известно. Тестирование должно охватывать все возможные ветвления в программе, т. е. проверять все ее инструкции, и включать такие исходные данные, для которых решение невозможно. Проверка особых, исключительных ситуаций, необходима для анализа корректности. Например, программа должна отказать клиенту банка в просьбе выдать сумму, отсутствующую на его счете. В ответственных проектах большое внимание уделяется так называемой "защите от дурака" подразумевающей устойчивость программы к неумелому обращению пользователя. Использование специальных программ — отладчиков, которые позволяют выполнять программу по отдельным шагам, просматривая при этом значения переменных, значительно упрощает этот этап.
7) Анализ результатов — если программа выполняет моделирование какого-либо известного процесса, следует сопоставить результаты вычислений с результатами наблюдений. В случае существенного расхождения необ ходимо изменить модель.
Публикация результатов работы, передача заказчику для эксплуатации.
9) Сопровождение программы — включает консультации представителей заказчика по работе с программой и обучение персонала. Недостатки и ошибки, замеченные в процессе эксплуатации, должны устраняться.