🍀BitBitGo🍀 Системный Анализ
3.32K subscribers
226 photos
159 videos
121 links
Курс «Системный анализ»
https://bitbitgo.by/
Пишем про системный анализ.
Поможем стартануть в карьере IT. Присоединяйся!
Download Telegram
🔍 Продолжение темы: Внутренние атрибуты качества ПО 📱💻

Мерой переносимости (portability) можно считать усилия, необходимые для перемещения ПО из одной операционной среды в другую, например, с iOS на Android или наоборот. Некоторые специалисты считают интернационализацию и возможность локализации продукта частью его переносимости, поскольку по Вигерсу нет явно выделенных атрибутов качества, таких как локализация и интернационализация.

Вопросы для анализа:

📅 На каких других платформах должно работать ПО сейчас и в будущем?

🔄 Какие части продукта должны разрабатываться с расчетом на более высокую переносимость по сравнению с другими его частями?

📂 Какие файлы данных, программные компоненты и другие элементы системы должны быть переносимыми?

⚠️ Какие другие атрибуты качества могут пострадать при реализации переносимости в системе?

📊 Примеры:

📱➡️📲 Модификация версии приложения для iOS, чтобы оно могло работать на устройствах под управлением Android, должна требовать изменения не более 10% исходного кода.

🔖 У пользователя должна быть возможность переносить закладки браузера между Firefox, Internet Explorer, Opera, Chrome и Safari.

🛠 Средство миграции платформы должно переносить индивидуализированные профили пользователей без каких-либо усилий со стороны пользователей.

Следите за нашими публикациями, чтобы узнать больше о других важных атрибутах качества ПО! 🚀

#REQUIREMENTS
👍5
3😁1😢1
🔍 Продолжение темы: Внутренние атрибуты качества ПО — Масштабируемость 📈

Масштабируемость (scalability) — это способность приложения расти и обслуживать большее количество пользователей, данных, серверов, географических точек, транзакций, сетевого трафика и других сервисов без снижения производительности и корректности.

Вопросы для анализа масштабируемости:

🤔 Какова оценка общего числа и числа одновременных пользователей, которое должна обслуживать система через несколько месяцев, кварталов или лет?

📊 Какие минимально приемлемые критерии производительности должны быть удовлетворены независимо от числа пользователей?

💾 Не могли бы вы описать, как и почему в будущем могут вырасти потребности в мощностях хранения данных?

🌍 Каковы планы будущего роста в плане числа серверов, центров обработки данных или числа установленных экземпляров системы?

Примеры требований по масштабируемости:

☎️ Аварийная телефонная система должна обеспечить увеличение пропускной способности с 500 до 2500 звонков в день в течение 12 часов.

🌐 Веб-сайт должен справляться с 30-процентным ростом частоты запросов страниц в квартал на протяжении как минимум двух лет без ощутимого снижения производительности.

🏢 Система распространения должна поддерживать до 20 новых складских комплексов.

📱 Приложение должно быть способно одновременно обслуживать до 1 миллиона активных пользователей без значительного ухудшения производительности.

🔧 Архитектура приложения должна позволять добавление новых серверов для обработки увеличивающегося объема трафика без необходимости изменения кода.

💽 База данных должна выдерживать увеличение объема данных (профили пользователей, сообщения) без снижения скорости запросов.

🛠 Приложение должно быть построено на микросервисной архитектуре, что упростит масштабирование отдельных компонентов (например, чата, профилей).

🚀 Приложение должно поддерживать автоматическое масштабирование ресурсов в зависимости от текущей нагрузки, например, добавляя серверы в пиковые часы.

📌 Следите за обновлениями, чтобы узнать больше о других атрибутах качества ПО!

#REQUIREMENTS
💯2
⚖️ Баланс работы и жизни: как системные аналитики находят время на всё?

Работа системного аналитика часто ассоциируется с высокой нагрузкой и ответственностью, что делает задачу сохранения баланса между работой и личной жизнью сложной.

🗓 Планирование и приоритизация
Эффективное планирование помогает расставлять приоритеты и концентрироваться на самых важных задачах. Важно уметь выделять главное и избегать ненужных отвлекающих факторов, что позволяет оптимально использовать своё время.

🧩 Разделение работы и личной жизни
Установление чётких границ между работой и отдыхом играет ключевую роль в сохранении баланса. Вне рабочего времени следует избегать работы, чтобы полноценно восстанавливаться и быть более эффективным в рабочие часы.

Тайм-менеджмент
Использование техник тайм-менеджмента, таких как метод Pomodoro и блокирование времени, помогает поддерживать продуктивность и находить время для личных дел.

🤝 Командная работа и делегирование
Сотрудничество с командой и делегирование задач помогают избегать перегрузок. Умение работать в команде позволяет аналитикам не брать на себя лишнюю ответственность, что способствует сохранению баланса.

🏋️ Забота о себе
IT-специалистам очень важно уделять время спорту и хобби. Регулярные занятия спортом и время, проведённое с близкими, помогают расслабляться и сохранять мотивацию для работы.

📚 Постоянное развитие
Профессиональное развитие и обучение позволяют системным аналитикам совершенствовать свои навыки, что помогает быстрее и эффективнее выполнять задачи.

💡 Заключение
Аналитики, которые находят баланс между работой и личной жизнью, делают это благодаря планированию, тайм-менеджменту и грамотному распределению задач. Эти навыки позволяют им быть успешными не только в карьере, но и в личной жизни.
👍2💯1
🤣8😁2
Метод Pomodoro: Как повысить продуктивность без стресса?

Метод Pomodoro — это популярная техника тайм-менеджмента, которая помогает повысить концентрацию и продуктивность. Принцип прост: работа делится на интервалы по 25 минут (называемых "помидорами"), разделённых короткими перерывами. После четырёх "помидоров" следует длинный перерыв.

📌 Как это работает?
1. Выберите задачу, на которой хотите сосредоточиться.
2. Установите таймер на 25 минут и работайте над задачей, пока таймер не прозвонит.
3. Сделайте короткий перерыв (5 минут), чтобы отдохнуть.
4. Повторите цикл ещё три раза, после чего сделайте длинный перерыв (15-30 минут).

🎯 Почему это эффективно?
Метод Pomodoro помогает избежать выгорания, разделяя работу на управляемые отрезки времени. Это повышает концентрацию и позволяет лучше контролировать свою продуктивность.

🚀 Совет: Попробуйте этот метод на следующей задаче и ощутите, как вы можете сделать больше с меньшими затратами энергии!
4🔥2
🤣5🔥1
Продолжение темы: Внутренние атрибуты качества — Проверяемость

🔍 Проверяемость (Verifiability) — важный атрибут программного обеспечения, также известный как тестируемость. Этот атрибут указывает на легкость, с которой можно проверить, что программные компоненты или интегрированный продукт соответствуют заявленным функциям системы.

Проверяемость и тестируемость:
💨 Как быстро разработчики и тестировщики могут подтвердить, что система реализована правильно?
💻 Конфигурация среды разработки должна быть идентичной конфигурации среды тестирования, чтобы избежать невоспроизводимости дефектов, выявляемых в тесте.

Вопросы:
Как можно подтвердить, что определенные вычисления дают ожидаемые результаты?
Есть ли какие-то части системы, не обеспечивающие детерминированных результатов, из-за чего сложно определить, правильно ли они работают?
Возможно ли создать набор тестовых данных, которые с высокой вероятностью позволят выявить какие-либо ошибки в требованиях или их реализации?
Какие стандартные отчеты или другие результаты можно использовать для проверки того, что система возвращает правильные результаты?

Примеры:
🔧 У тестировщика должна быть возможность конфигурировать, какие результаты будут записываться во время тестирования.
🔧 У разработчика должна быть возможность настраивать вычислительный модуль на отображение промежуточных результатов любой заданной группы алгоритмов для целей отладки.

💡 Проверяемость играет ключевую роль в обеспечении качества программного обеспечения, помогая эффективно выявлять и устранять дефекты.

🚀Следите за обновлениями! В следующем посте мы разберём ключевые аспекты модификации программного обеспечения.

#REQUIREMENTS
🔥4
Продолжение темы: Внутренние атрибуты качества ПО — модификации (modifiability) 🛠

Что это?
Возможность модификации показывает, насколько легко можно разобраться в дизайне и коде программного обеспечения, вносить изменения и расширять его. Это важный показатель, который влияет на гибкость и адаптируемость системы.

Примеры:

👨‍💻 Опытный программист, занимающийся техническим обслуживанием ПО, должен уметь обновлять существующие отчеты в соответствии с изменениями в законодательстве, затратив на разработку не более 10 рабочих часов.

📚 Вложенность вызываемых функций не должна превышать двух уровней.

🖨 Конструкция принтера должна позволять сертифицированному ремонтнику заменить модуль сканера не более чем за 10 минут.

🚨 Принтер должен отображать сообщение об ошибке, если новые картриджи были вставлены не в те гнезда.

Вопросы для анализа:

📝 Какой тип данных или контента вы хотите иметь возможность модифицировать?
(например, текст, изображения, видеоматериалы и т.д.)

🔄 Какие конкретные изменения вы хотите иметь возможность вносить в данные?
(например, редактирование, удаление, добавление новых элементов)

Кто будет ответственным за модификацию данных?
(например, администраторы, конечные пользователи, сторонние разработчики)

🔐 Какие уровни доступа к модификации данных вы планируете внедрить?
(например, разные роли пользователей с различными правами)

📱 Какой интерфейс или инструменты вы предпочли бы использовать для модификации данных?
(например, веб-интерфейс, мобильное приложение, API)

Как часто предполагается вносить изменения в данные?
(например, ежедневно, еженедельно, по мере необходимости)

📜 Как вы планируете отслеживать изменения и историю модификаций?
(например, ведение журнала изменений, версия данных)

Есть ли требования к валидации данных перед их модификацией?
(например, проверка формата, обязательные поля)

⚠️ Как вы хотите обрабатывать конфликты при одновременной модификации данных несколькими пользователями?
(например, блокировка записи, уведомления о конфликте)

🕹 Нужна ли возможность отката изменений или восстановления предыдущих версий данных?
(например, функция "отмены" или "восстановления")

🚀Следите за обновлениями! Мы подготовили ещё больше полезной информации о том, как эффективно модифицировать и адаптировать ПО!

#TESTING
👍4
🔍 Напоминаем о внешних атрибутах качества ПО 🌟

Внешние атрибуты качества описывают характеристики, которые наблюдаются при выполнении программного обеспечения.

Удобство установки (Installability) 💻
Показывает, насколько просто пользователю выполнить установку, переустановку или обновление ПО. Это важно для сокращения времени и затрат на установку, минимизации ошибок и снижения уровня квалификации, необходимого для выполнения этих операций.

Основные операции, которые охватывает удобство установки:
Начальная установка
🔄 Восстановление после неполной или некорректной установки
🔁 Переустановка той же версии
🚀 Установка новой версии
🔙 Возврат к предыдущей версии
Установка дополнительных компонентов и обновлений
Удаление ПО

Примеры:
🛠 Необученный пользователь должен суметь выполнить начальную установку приложения в среднем за 10 минут.

🛠 При установке обновленной версии приложения должна сохраняться вся настройка пользовательских параметров профиля, а также преобразовываться в формат данных новой версии, если это требуется.

🛠 Программа установки должна проверять правильность загруженного установочного пакета до начала процесса установки.

🛠 Для установки этого ПО на сервере требуются административные полномочия.

Вопросы для анализа:
Какие установочные операции должны выполняться без нарушения пользовательского сеанса?
Какие установочные операции потребуют перезагрузки приложения, компьютера или устройства?
Что должно приложение выполнить после удачной или неудачной установки?
Какие операции должны выполняться для подтверждения правильности установки?
Нужна ли пользователю возможность устанавливать, удалять, переустанавливать или исправлять только избранные части приложения? Если да, то какие?
Какие другие приложения нужно остановить перед выполнением установки?
Какие права, разрешения и привилегии нужны установщику?
Как должна система вести себя в случае незавершенной установки, например, по причине отключения питания или прерывания пользователем?

🚀 Следите за обновлениями! В следующих постах разберем другие важные атрибуты качества ПО.

#TESTING
👍4🔥1
⚙️ Как работает HTTPS и зачем он нужен?

HTTPS (HyperText Transfer Protocol Secure) — это безопасная версия HTTP, обеспечивающая защиту данных, передаваемых между вашим браузером и веб-сервером. Большинство сайтов используют HTTPS для защиты данных пользователей от перехвата и атак.

🔐 Шифрование данных
Когда вы посещаете сайт с HTTPS, между вашим браузером и сервером устанавливается защищённое соединение с использованием протоколов SSL/TLS. Эти протоколы создают уникальный сеансовый ключ для шифрования данных, таких как логины, пароли и номера карт, что делает их недоступными для злоумышленников. Данные шифруются симметричным ключом, обмен которым происходит через асимметричное шифрование.

Аутентификация и сертификаты
SSL/TLS сертификаты подтверждают подлинность сайта. Браузер проверяет, что сертификат выдан доверенным центром сертификации и соответствует домену. Это предотвращает атаки, где злоумышленники могут подделывать сайт и перехватывать ваши данные.

📊 Защита целостности данных
HTTPS также защищает данные от изменения во время передачи, используя механизмы целостности, такие как MAC (Message Authentication Code), чтобы убедиться, что данные не были изменены.

🛡Противодействие перехвату данных
В общественных местах подключение к Wi-Fi может быть незащищённым, и злоумышленники могут попытаться перехватить ваши данные. HTTPS гарантирует, что вся передаваемая информация надёжно защищена и хакерам не удастся получить к ней доступ. Даже если данные перехвачены, их расшифровка практически невозможна.

HTTPS — важнейший инструмент для обеспечения безопасности в интернете, защищающий ваши данные от перехвата и сохраняющий их целостность. В следующий раз, когда увидите значок замка в адресной строке, можете быть уверены: ваше соединение в безопасности! 🔐

#SECURITY
👍6
Когда пытаешься хоть как-то монетизировать своё приложение.
🤣10😁4
📦 Контейнеризация и оркестрация: что это и зачем нужно?

🔍 Что такое контейнеризация?
Контейнеризация — это технология, которая позволяет упаковать приложение со всеми его зависимостями в единый контейнер. Это включает в себя библиотеки, конфигурационные файлы и всё необходимое для его работы. Контейнеры изолированы друг от друга и от операционной системы хоста, что делает их универсальными для запуска на любом сервере. Это похоже на упакованную коробку, которую можно переместить в любое место без необходимости заново собирать её содержимое. 📦

⚙️ Что такое оркестрация?
Контейнеризация хорошо справляется с упаковкой приложений, но что делать, если у вас сотни или даже тысячи таких контейнеров? Здесь на помощь приходит оркестрация. Оркестрация автоматизирует развертывание, управление и масштабирование контейнеров, распределяя их по серверам, следит за их состоянием и восстанавливает упавшие контейнеры. 🛠 Самым популярным инструментом оркестрации является Kubernetes.

Как это работает?
К примеру, Kubernetes распределяет контейнеры по доступным ресурсам, масштабирует их по мере необходимости, управляет обновлениями и восстанавливает контейнеры в случае сбоя. Это похоже на дирижёра, который следит за тем, чтобы весь оркестр (контейнеры) играл слаженно. 🎻

🚀 Зачем это нужно?

📈 Упрощение развертывания и масштабирования: Контейнеры делают приложение независимым от среды выполнения, что значительно упрощает его развертывание и масштабирование.

🌐 Гибкость и мобильность: Контейнеры легко перемещаются между серверами и облаками, что дает большую гибкость в выборе инфраструктуры.

Высокая доступность и отказоустойчивость: Оркестрация обеспечивает автоматическое управление контейнерами, минимизируя простои и поддерживая высокий уровень доступности приложений.

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

#DEVOPS
👍3🔥31
UML Диаграммы: Ключ к успешному проектированию ПО

🔍 Что такое UML?
UML (Unified Modeling Language) — это универсальный язык моделирования, который используется для визуализации, спецификации, проектирования и документирования компонентов программного обеспечения. Это мощный инструмент, который помогает командам разработчиков и аналитиков создавать точные и понятные модели будущих систем.

Основные виды UML диаграмм:

📚 Диаграмма классов (Class Diagram)
Показывает классы, их атрибуты, методы и связи между ними. Это основа для моделирования статической структуры системы.

📊 Диаграмма последовательности (Sequence Diagram)
Отображает взаимодействие объектов во времени, показывая, как отправляются сообщения и выполняются действия в рамках одной операции.

📝 Диаграмма прецедентов (Use Case Diagram)
Описывает функциональность системы с точки зрения пользователя, показывая, какие задачи может выполнить пользователь с помощью системы.

🔄 Диаграмма деятельности (Activity Diagram)
Моделирует поток работ или операций, демонстрируя последовательность действий и условий, которые их запускают.

🔧 Диаграмма состояний (State Machine Diagram)
Показывает возможные состояния объекта и переходы между ними в ответ на события.

🚀 Почему UML диаграммы важны?
Они позволяют эффективно описывать сложные системы, повышают понимание между командами и способствуют более качественному планированию и разработке программного обеспечения. Диаграммы UML помогают выявить потенциальные проблемы на ранних этапах проектирования, что позволяет сэкономить время и ресурсы в дальнейшем.

💡 Пример использования UML:
Когда команда работает над большим проектом, UML диаграммы помогают структурировать и документировать ключевые компоненты системы, описывая взаимодействие между ними. Это особенно полезно в распределенных командах, где нужно обеспечить единое видение проекта.

🚀 Следите за нашими обновлениями, чтобы узнать больше о методах и инструментах системного анализа!

#UML
👍6🔥41
This media is not supported in your browser
VIEW IN TELEGRAM
Опасно! Не повторять на собесах.
😁4😱2👍1👀1
🚀 Обзор BPMN движка Camunda

Camunda — это мощный BPMN движок, который активно используется для моделирования и автоматизации бизнес-процессов. В отличие от других решений, Camunda предоставляет гибкость и масштабируемость, что делает его отличным выбором как для небольших компаний, так и для крупных корпораций.

🔍 Что такое Camunda?
Camunda — это платформа для управления бизнес-процессами, которая поддерживает стандарты BPMN (Business Process Model and Notation), CMMN (Case Management Model and Notation) и DMN (Decision Model and Notation). Она помогает организациям автоматизировать и оптимизировать свои бизнес-процессы, обеспечивая их прозрачность и контроль.

Ключевые особенности Camunda:

📊 Моделирование процессов: Camunda поддерживает моделирование процессов на основе BPMN 2.0, что позволяет описывать бизнес-процессы в графическом формате.
🤖 Автоматизация: Возможность интеграции с различными системами и приложениями, что позволяет автоматически запускать и управлять процессами.
📈 Мониторинг и анализ: Встроенные инструменты для мониторинга выполнения процессов в реальном времени, а также для анализа производительности.
🛠 Гибкость: Возможность кастомизации и расширения движка для удовлетворения уникальных потребностей бизнеса.

Технические детали:

🔧 Архитектура: Camunda представляет собой легковесный движок, который можно внедрить в существующую ИТ-инфраструктуру. Он поддерживает работу как с SQL, так и с NoSQL базами данных.
🔗 Интеграция: Camunda легко интегрируется с такими технологиями, как Spring Boot, Java EE, и другими популярными фреймворками.
📡 Масштабируемость: Платформа поддерживает распределенную архитектуру, что позволяет масштабировать процессы в зависимости от нагрузки.

🌟 Почему стоит выбрать Camunda?
Camunda позволяет бизнесу автоматизировать сложные процессы, снижая издержки и увеличивая эффективность. Благодаря поддержке стандартов BPMN и гибким возможностям интеграции, Camunda подходит для компаний разных размеров и отраслей.

👉 Следите за нашими постами — скоро мы разберём реальные кейсы использования Camunda!

#BPMN
👍2🔥2
🔍 Тестирование в микросервисах: как избежать хаоса? 🚀

Микросервисная архитектура предлагает гибкость и масштабируемость, но добавляет сложности в тестировании. Чтобы избежать хаоса и обеспечить качественное тестирование, важно учитывать несколько ключевых аспектов:

🛠 Контейнеризация для изоляции
Изолируйте каждый микросервис в контейнере (например, Docker), что позволяет тестировать его независимо от других компонентов системы. Это помогает избежать конфликтов и обеспечивает стабильные результаты тестов. Инструмент: Docker.

🤖 Автоматизация тестирования
Внедрите автоматизированное тестирование на всех уровнях, включая юнит-тесты, интеграционные тесты и тесты производительности. Это помогает быстро обнаруживать ошибки и сокращает время на регрессию. Инструменты: Jenkins, GitLab CI.

🔄 Оркестрация и управление зависимостями
Учтите взаимосвязи микросервисов. Используйте оркестрацию (например, Kubernetes) для управления зависимостями и симуляции работы в тестовой среде, что позволяет точно моделировать производственную среду и избегать сюрпризов. Инструмент: Kubernetes.

📊 Мониторинг и логирование
Включите мониторинг и централизованное логирование в процесс тестирования. Это помогает оперативно выявлять и устранять проблемы, а также предоставляет данные для улучшения тестовых сценариев. Инструменты: ELK Stack (Elasticsearch, Logstash, Kibana), Prometheus.

🔌 Тестирование API
Проверьте все API-интерфейсы, через которые микросервисы взаимодействуют. Включите валидацию данных, проверку безопасности и нагрузочное тестирование, чтобы гарантировать стабильность под нагрузкой. Инструмент: Postman, JMeter.

📜 Контрактное тестирование
Проверьте взаимодействие микросервисов с помощью контрактного тестирования, чтобы убедиться, что интеграция проходит без ошибок. Это уменьшает риск несоответствий при развертывании. Инструмент: Pact.

🚀 Следите за публикациями, чтобы не пропустить следующий пост о масштабировании микросервисов и повышении производительности!

#TESTING
🤔1
🔍 Что такое Use Case?

Use Case (сценарий использования) — это описание того, как пользователь взаимодействует с системой для достижения определённой цели. Проще говоря, это шаги, которые выполняет пользователь, чтобы выполнить какую-то задачу, например, создать аккаунт, оформить заказ или найти информацию.

🛠 Зачем нужны Use Cases?

- Понимание пользователя: Use Cases помогают разработчикам понять, как пользователи взаимодействуют с системой. Это важно для создания удобных и понятных интерфейсов.
- Определение требований: Они служат основой для определения функциональных требований системы. Проще говоря, Use Cases описывают, что система должна делать.
- Тестирование: Use Cases используются для тестирования системы. Тестировщики проверяют, работает ли система так, как описано в сценариях использования.

📋 Как выглядит Use Case?

Use Case состоит из:
- Акторов — это те, кто взаимодействует с системой (например, пользователи или другие системы).
- Цели — что хочет достичь актор.
- Шагов — последовательность действий, которые выполняются для достижения цели.

Пример:
1. Актор: Пользователь интернет-магазина
2. Цель: Оформить заказ
3. Шаги:
- Пользователь добавляет товар в корзину 🛒
- Пользователь переходит в корзину и нажимает "Оформить заказ" 📝
- Пользователь вводит данные для доставки 🚚
- Пользователь подтверждает заказ 💳

🌟Вывод
Use Case — это простой и понятный способ описания того, как пользователи взаимодействуют с системой. Он помогает понять потребности пользователей, определить функциональные требования и протестировать систему.

📌 Следите за нашими постами, где мы рассмотрим другие важные элементы разработки ПО!

#REQUIREMENTS
👍41🔥1