Тип работы:
Предмет:
Язык работы:


РЕИНЖИНИРИНГ АРХИТЕКТУРЫ И ПРОЦЕССОВ РАЗРАБОТКИ В СИСТЕМЕ АВТОМАТИЗИРОВАННОЙ МЕДИЦИНСКОЙ ДИАГНОСТИКИ

Работа №183393

Тип работы

Бакалаврская работа

Предмет

программирование

Объем работы53
Год сдачи2021
Стоимость4245 руб.
ПУБЛИКУЕТСЯ ВПЕРВЫЕ
Просмотрено
4
Не подходит работа?

Узнай цену на написание


Перечень условных обозначений 3
Введение 4
1 Анализ и проектирование 6
1.1 Обзор существующей системы 6
1.2 Выявленные проблемы 8
1.3 Нефункциональные требования 9
2 Основные инструменты 10
2.1 Data Version Control (DVC) 10
2.2 Cookiecutter 13
2.3 GitLab CI/CD 14
3 Организация воспроизводимости результатов машинного обучения 15
3.1 Недостатки исходного процесса разработки моделей 15
3.2 Версионирование данных при помощи DVC 18
3.3 Шаблон репозитория для моделей машинного обучения 19
3.4 Процесс разработки и внедрение CI/CD 25
4 Рефакторинг и перепроектирование 30
4.1 Сложность проектирования систем в сфере машинного обучения 33
4.2 Варианты использования 34
4.3 Основные сущности предметной области 35
4.4 Рефакторинг на уровне классов 36
4.5 Роли компонентов в системе 40
4.6 Выделенные компоненты 43
Заключение 47
Список использованных источников и литературы 48

Отступление. Данная работа написана на основе решения задач в рамках прохождения производственной практики в компании. С целью соблюдения подписанных соглашений о неразглашении некоторые подробности реализации намеренно сокрыты.
В последние годы искусственный интеллект (англ. Artificial intelligence, AI) и, в частности, машинное обучение (англ. Machine learning, ML) демонстрируют многообещающие результаты в сфере автоматизации бизнес-процессов и повседневной жизни [1]. Быстрое развитие алгоритмов и инструментов машинного обучения, развитие облачных инфраструктур и удешевление вычислительных мощностей способствовали бурному развитию информационных систем, основанных на машинном обучении. Различные компании, большие или маленькие, стремятся внедрить машинное обучение в используемое ПО, чтобы улучшить предоставляемые продукты и услуги.
В основе данной работы лежит одна из таких систем, разработанная компанией ООО «Энбисис» (далее — компания). Система OcuScreen позволяет с высокой точностью выявлять у пациентов наличие диабетической ретинопатии, глаукомы и возрастной дегенерации макулы по фотографиям глазного дна. Первый рабочий прототип прошел необходимые проверки и постепенно вводится в эксплуатацию в клиниках России и за рубежом. Автор данной работы разработал по меньшей мере два модуля в этой системе, отвечающих за выявление возрастной дегенерации макулы, а также оценку пригодности снимков для анализа.
В ходе эксплуатации от врачей были получены первые запросы на модернизацию системы. Однако в процессе разработки и ввода в эксплуатацию этих и других изменений команда автора начала сталкиваться с проблемами и некоторыми ограничениями существующей архитектуры и самого процесса разработки. В большинстве своем это проблемы, связанные с поддержкой и расширением, непрерывной интеграцией, воспроизводимостью результатов исследований и т. п.
Система находится в разработке более двух с половиной лет. Однако с момента начала разработки у системы не было ни единой итерации рефакторинга, вследствие чего накопился значительный технический долг. До недавних пор проект считался прототипом, что объясняет такое положение дел. Однако система уже перешла в более серьезную стадию жизненного цикла, активно используется и подвержена вполне регулярным изменениям, что и приводит нас к необходимости в глобальном перепроектировании системы и процессов разработки.
Несмотря на то, что ежегодно во многих компаниях разрабатываются и публикуются различные инструменты для упрощения разработки и доставки подобных систем, универсальные и общепринятые подходы и методологии разработки все еще находятся на этапе начального формирования [2].
Как точно подмечено в работе авторов из компании ThoughtWorks [3], основная сложность разработки систем на базе технологий машинного обучения заключается в присутствии, помимо самого программного кода, двух других не менее важных компонент: данных и моделей. Этот факт накладывает дополнительные расходы на поддержку и изменение систем, ведь каждая из этих компонент может изменяться независимо от других. При этом все изменения должны поддаваться контролю и версионированию, как и прежде.
Эта дополнительная нагрузка требует особого внимания от разработчиков. Ввиду вышеизложенных причин, часть предложенных в данной работе изменений затрагивает не только код и другие артефакты, но и сам процесс разработки системы на уровне вышеупомянутых трех компонент. Все эти аспекты также являются критически важными для сертификации системы в качестве медицинского ПО.
Таким образом, целью данной работы является реинжиниринг архитектуры и процесса разработки системы OcuScreen в первую очередь для упрощения ее поддержки и развития, а также для соответствия системы строгим стандартам разработки медицинского ПО.
Для достижения поставленной цели можно выделить следующие задачи:
1. Выявить проблемы существующей системы и процесса разработки
2. Проанализировать требования к системе
3. Спроектировать решения выявленных проблем
4. Продемонстрировать преимущества предложенных решений относительно исходной системы и процессов разработки


Возникли сложности?

Нужна помощь преподавателя?

Помощь в написании работ!


Таким образом, цель работы достигнута, а задачи выполнены.
В результате реинжениринга процесс разработки моделей стал воспроизводимым, самодокументируемым, возрос контроль качества кода. Обмен наработками между разработчиками стал происходить проще и быстрее. Благодаря разносторонней унификации в работе предложены некоторые механизмы непрерывной интеграции для моделей машинного обучения.
В результате работы составлен набор артефактов первичного проектирования, определены основные сущности, выделены роли, в рамках которых система скорее всего будет расширяться в дальнейшем. На основе сформированных артефактов были выделены новые функциональные компоненты, а также выдвинуты некоторые предположения о причинах высокого зацепления модулей в исходной системе. Все это было учтено при перепроектировании.
На основе разработанных артефактов проектирования была предложена новая структура классов. Описаны особенности и преимущества решения в сравнении с исходной системой.
На текущий момент все предложенные изменения системы приняты руководством компании и постепенно вводятся в эксплуатацию: существующие модели переносятся в собственные репозитории, ведется реализация и тестирование предложенных компонентов системы.



1. Bringing AI and machine learning data science into operation // Redhat Blog. - [S. l.], 2018. - URL: https://www.redhat.com/en/blog/bringing-ai-and-machine-learning-data- science-operation (access date: 16.01.2021).
2. Hidden Technical Debt in Machine Learning Systems / D. Sculley, G. Holt, D. Golovin [et
al.] // Advances in Neural Information Processing Systems 28 (NIPS 2015). - 2015. - URL: https://papers.nips.cc/paper/2015/file/86df7dcfd896fcaf2674f757a2463eba-
Paper.pdf (access date: 16.01.2021).
3. Sato D. Continuous Delivery for Machine Learning. Automating the end-to-end lifecycle of Machine Learning applications / D. Sato, A. Wider, C. Windheuser // martinfowler.com. - [S. l.], 2019. - URL: https://martinfowler.com/articles/cd4ml.html (access date: 05.01.2021).
4. PEP 8 - Style Guide for Python Code // Welcome to Python.org. - [S. l.], 2021. - URL: // https://www.python.org/dev/peps/pep-0008/ (access date: 13.05.2021).
5. DVC Documentation // Home | Data Version Control • DVC. - [S. l.], 2021. - URL: https://dvc.org/doc (access date: 05.01.2021).
6. Git Large File Storage | Git Large File Storage (LFS) replaces large files such as audio samples, videos, datasets, and graphics with text pointers inside Git, while storing the file contents on a remote server like GitHub.com or GitHub Enterprise. - [S. l.], 2021. - URL: https://git-lfs.github.com/ (access date: 13.05.2021).
7. Cookiecutter // github.com. - 2021. - URL: https://github.com/cookiecutter/cookiecutter (access date: 05.01.2021).
8. Jinja2 Documentation // Welcome to Jinja2 — Jinja2 documentation. - [S. l.], 2021. - URL: https://jinja2docs.readthedocs.io/en/stable/ (access date: 05.01.2021).
9. Iterate faster, innovate together | GitLab. - [S. l.], 2021. - URL: https://about.gitlab.com/ (access date: 21.04.2021).
10. GitLab CI/CD // GitLab Documentation. - [S. l.], 2021. - URL: https://docs.gitlab.com/ee/ci/ (access date: 13.05.2021).
11. The Jupyter Notebook // The Jupyter Notebook — Jupyter Notebook documentation. - [S. l.], 2021. - URL: https://jupyter-notebook.readthedocs.io/en/stable/ (access date: 13.05.2021).
12. ETL // Википедия : ceobogHaa энциклопедия. - [Б. м.], 2021. - URL: https://ru.wikipedia.org/wiki/ETL(дата обращения: 19.05.2021).
13. Michelangelo PyML: Introducing Uber’s Platform for Rapid Python ML Model
Development // Uber Engineering Blog. - [S. l.], 2018. - URL:
https://eng.uber.com/michelangelo-pyml/ (access date: 05.01.2021).
14. Cookiecutter Data Science // Home - Cookiecutter Data Science. - [S. l.], 2021. - URL: https://drivendata.github.io/cookiecutter-data-science/ (access date: 13.05.2021).
15. Pipenv Documentation // Pipenv: Python Dev Workflow for Humans. - [S. l.], 2021. - URL: https://pipenv.pypa.io/en/latest/ (access date: 30.05.2021).
16. Poetry - Python dependency management and packaging made easy. - [S. l.], 2021. - URL: https://python-poetry.org/ (access date: 30.05.2021).
17. MkDocs : Project documentation with Markdown. - [S. l.], 2021. - URL: https://www.mkdocs.org/ (access date: 21.04.2021).
18. mkdocstrings. - [S. l.], 2021. - URL: https://mkdocstrings.github.io/ (access date: 12.05.2021).
19. Black Documentation // The uncompromising code formatter — Black documentation. - - [S. l.], 2021. - URL: https://black.readthedocs.io/en/stable/ (access date: 19.03.2021).
20. isort. - [S. l.], 2021. - URL: https://pycqa.github.io/isort/ (access date: 19.03.2021).
21. Flake8 Documentation // Flake8: Your Tool For Style Guide Enforcement — flake8 documentation. - [S. l.], 2021. - URL: https://flake8.pycqa.org/en/latest/ (access date: 19.03.2021).
22. Pre-commit. - [S. l.], 2021. - URL: https://pre-commit.com/ (access date: 13.05.2021).
23. GNU Make // Make - GNU Project - Free Software Foundation. - [S. l.], 2021. - URL: https://www.gnu.org/software/make/ (access date: 13.05.2021).
24. A successful Git branching model // nvie.com. - [S. l.], 2010. - URL: https://nvie.com/posts/a-successful-git-branching-model/ (access date: 13.05.2021).
25. Machine Learning Software Engineering in Practice: An Industrial Case Study / Md S. Rahman, E. Rivera, F. Khomh [et al.] // arXiv.org. - [S. l.], 2019. - URL: https://arxiv.org/abs/1906.07154 (access date: 21.04.2021).
26. Yokoyama H. Machine Learning System Architectural Pattern for Improving Operational Stability / H. Yokoyama. - DOI 10.1109/ICSA-C.2019.00055 // 2019 IEEE International Conference on Software Architecture Companion (ICSA-C). - 2019. - P. 267-274. - URL: https://ieeexplore.ieee.org/document/8712157 (access date: 19.03.2021). - Access mode: for registered users.
27. Machine Learning Architecture and Design Patterns / H. Washizaki, H. Uchida, F. Khomh [et al.] // Reliable Software Engineering, Washizaki Laboratory : Department of Computer Science and Engineering, Waseda University. - [S. l.], 2019. - URL:
http://www.washi.cs.waseda.ac.jp/wp- content/uploads/2019/12/IEEE_Software_19__ML_Patterns.pdf (access date: 24.04.2021).
28. toposort // PyPI • The Python Package Index. - [S. l.], 2021. - URL: https://pypi.org/project/toposort/ (access date: 24.04.2021).
29. Pipes and Filters pattern // Developer tools, technical documentation and coding examples | Microsoft Docs. - [S. l.], 2017. - URL: https://docs.microsoft.com/en- us/azure/architecture/patterns/pipes-and-filters (access date: 07.03.2021).
30. Clean Architecture // The Clean Code Blog : by Robert C. Martin (Uncle Bob). - [S. l.],
2012. - URL: https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-
architecture.html (access date: 10.05.2021).
31. YAGNI // Википедия : cBobognaa энциклопедия. - [Б. м.], 2021. - URL: https://ru.wikipedia.org/wiki/YAGNI(дата обращения: 02.05.2021).


Работу высылаем на протяжении 30 минут после оплаты.




©2025 Cервис помощи студентам в выполнении работ