Инженерия программного обеспечения
-
Оценка и модели зрелости процессов разработки программного обеспечения
Оценка процессов разработки ПО: Модель CMM и её интеграция CMMI. Уровни зрелости, оптимизация, повышение качества и эффективности разработки.
-
Быстрые решения и обходные пути.
Клaдж (kludge) – это быстрое, но неэлегантное решение проблемы, обходной путь в IT, инженерии и других областях. Неэффективно, сложно в поддержке.
-
Принцип KISS: Простота в дизайне и не только
Принцип KISS в дизайне: "Keep it simple, stupid!" – простота и эффективность разработки. История возникновения и применение в инженерии и проектировании.
-
Устаревшие компьютерные системы и приложения
Устаревшие системы: что это такое? 💻 Определение, характеристики и проблемы поддержки старого кода и технологий в IT. Обновление и замена legacy систем.
-
Мартин Фаулер: Пионер разработки программного обеспечения
Мартин Фаулер: известный американский разработчик ПО, автор книги "Рефакторинг" и архитектурного паттерна Presentation Model. Биография и вклад в IT.
-
Парное программирование: техника совместной разработки программного обеспечения
Парное программирование: техника разработки ПО, где два программиста работают вместе за одним компьютером. Повышает качество кода и снижает ошибки.
-
Документация к программному обеспечению: типы и важность требований
Документация к ПО: что это такое и зачем нужна? Объясняем функции, типы (требования) и важность документации в разработке программного обеспечения.
-
Спагетти-код, равиоли-код и лазанья-код: проблемы структуры программного кода.
Спагетти-код: что это такое? Неструктурированный, сложный в поддержке исходный код, причины возникновения и как избежать "лапши" в программах.
-
Статический анализ программного кода: методы и уровни
Статический анализ программ: исследование кода без запуска. Автоматизированные инструменты, повышение качества ПО, оценка и понимание программного обеспечения.
-
Свод знаний в области разработки программного обеспечения (SWEBOK)
SWEBOK: Полное руководство по инженерному делу в области ПО. Стандарт ISO/IEC, охватывающее знания, навыки и лучшие практики разработки. Бесплатный доступ!
-
Мифический человеко-месяц: Эссе о разработке программного обеспечения
Миф о человеко-месяце: классика софт-инженерии (1975). Закон Брукса, эффект второй системы, прототипирование. Управление проектами, IBM OS/360.
-
Каскадная модель разработки программного обеспечения
Каскадная модель разработки: последовательные этапы (концепция, анализ, дизайн, тестирование). Классический подход в SDLC, возникший в строительстве и производстве.
-
Ошибки в программном обеспечении: от сбоев до катастроф
Ошибка в программном обеспечении: что это такое, причины и последствия. От мелких недочетов до серьезных сбоев, приводящих к катастрофам.
-
Черновой вариант предложения: метод "чучело" в бизнесе и разработке.
Предложение "чучело" – это черновой вариант для обсуждения недостатков и поиска лучших решений в бизнесе и инженерии. Стимулирует мозговой штурм!
-
Закон Линуса: Обнаружение ошибок и сила открытого исходного кода.
Закон Линуса: "Достаточно глаз – и все баги поверхностны". Эффективность открытого ПО и ревью кода для поиска ошибок и уязвимостей. (158 characters)
-
Разрастание функциональности: причины и контроль
Разрастание функционала: что это такое? Узнайте о причинах, последствиях "утечки функций" в проектах и продуктах. Избегайте удорожания и провала!
-
Спиральная модель разработки программного обеспечения: риски и характеристики.
Спиральная модель разработки ПО: риско-ориентированный подход, объединяющий элементы Waterfall, инкрементной разработки и прототипирования. Обзор модели Боэма.
-
Бизнес-логика в программном обеспечении
Бизнес-логика в ПО: правила обработки данных, определяющие функциональность. Отличие от UI/инфраструктуры. Важность и изменчивость бизнес-логики.
-
Ведущий программист: обязанности и роль в разработке программного обеспечения.
Ведущий программист: обязанности, роль в команде разработки ПО, техническое руководство и менторство. Отличие от архитектора ПО. Ключевые навыки.
-
Итеративно-инкрементная разработка программного обеспечения
Итеративная и инкрементная разработка: методология, объединяющая итерационный дизайн и поэтапное создание. Применение в разработке ПО с 1985 года.
-
Шаблоны проектирования в разработке программного обеспечения
Паттерны проектирования в разработке ПО: повторно используемые решения для типовых задач. Ускоряют разработку, повышают качество кода, избегая изобретения велосипеда.
-
Метрики программного обеспечения: определение и применение
Метрики ПО: стандарты измерения качества, производительности и сложности программного обеспечения. Объективные данные для планирования и оптимизации разработки.
-
Портирование программного обеспечения: адаптация к новым средам
Портирование ПО: адаптация программного обеспечения к новым платформам, ОС и CPU. Узнайте, что такое переносимость и как снизить затраты на разработку!
-
Процесс планирования программных решений
Проектирование ПО: планирование архитектуры и компонентов до кодирования. Этапы, цели и документация разработки программного обеспечения. 🚀💻
-
Рациональный унифицированный процесс разработки программного обеспечения
Рациональный унифицированный процесс (RUP): гибкий фреймворк разработки ПО от IBM. Итеративный подход, 4 фазы, адаптация под нужды проекта.
-
Антипаттерны: Распространенные неэффективные решения проблем
Антипаттерны: распространенные, но неэффективные решения проблем в разработке ПО, управлении проектами и бизнесе. История и примеры.
-
Программирование методом копирования и вставки: недостатки и допустимые случаи
Программирование "копипастой": что это, почему это плохо и когда допустимо. Повторяющийся код, недостатки, примеры и альтернативы. Оптимизация кода.
-
Принцип разделения ответственности в программировании
Разделение ответственности в программировании: принцип создания модульных программ с четко определенными интерфейсами. Улучшает структуру и поддержку кода.
-
Быстрая разработка программного обеспечения: концепции и подходы
Быстрая разработка ПО (RAD): адаптивный подход, прототипирование вместо планирования. Инструменты RAD для UI-ориентированных приложений. Эффективная разработка!
-
Строки кода как метрика размера программного обеспечения
SLOC (строки кода) – метрика для измерения размера программы. Оценивает трудозатраты, продуктивность и поддерживаемость ПО. История и применение.
-
Нет серебряной пули: Сущность и случайность в разработке программного обеспечения.
Нет "серебряной пули" в разработке ПО: анализ статьи Фреда Брукса о сложности, продуктивности и ограничениях роста в инженерии программного обеспечения.
-
Авионика: Безопасность и надежность встраиваемого программного обеспечения
Авионика: разработка безопасного и надежного встраиваемого ПО с юридическими требованиями. Процесс сертифицирован, на 15% дороже, но эффективнее.
-
Разрастание и замедление программного обеспечения
Программный "раздутый код": почему софт замедляется и требует больше ресурсов? Причины, признаки и влияние на производительность компьютера. Оптимизация ПО.
-
Системные требования программного обеспечения
Системные требования ПО: минимум и рекомендуемые параметры для эффективной работы. Узнайте, как растущие требования влияют на апгрейд компьютеров.
-
Модель оценки стоимости программного обеспечения COCOMO
Модель COCOMO: оценка стоимости разработки ПО. Основана на регрессионном анализе 63/163 проектов, позволяет прогнозировать затраты, время и ресурсы.
-
Небольшое дело программирования: ирония и реальность разработки
SMOP в разработке ПО: ироничное обозначение кажущихся простыми задач, требующих больших усилий. О недооценке сложности и "играх" в программировании.
-
Хаотичная модель разработки программного обеспечения: теория и стратегия.
Хаосная модель разработки ПО: объединяет управление проектами и решение технических задач. Создана L.B.S. Raccoon как альтернатива Waterfall и Spiral.
-
Проектирование с учётом возможных ошибок и рисков
Защитный дизайн: предотвращение ошибок и неправильного использования устройств. Планирование на этапе проектирования для минимизации рисков и последствий.
-
Экспертная оценка программного обеспечения: Процесс инспекции
Проверка кода и документации: обзор, выявление дефектов, инспекции по Фэгану. Повышение качества ПО с помощью опытных рецензентов.
-
"Круфт": компьютерный жаргон для ненужных элементов и устаревшего кода.
Круфт: что это такое? Объяснение компьютерного термина, означающего ненужные, устаревшие элементы в ПО. История происхождения от MIT, значение и примеры.
-
Анализ требований в инженерии систем и программного обеспечения
Анализ требований в инженерии: определение, документирование и управление потребностями для успешных проектов. JRD сессии, бизнес-анализ, системный дизайн.
-
Комплексное руководство по созданию программного обеспечения
Code Complete: книга Стива Макконнелла о разработке ПО (1993). Техники кодирования, отладки, тестирования и планирования. Повышение продуктивности!
-
Философия и принципы гибкой разработки программного обеспечения
Agile-разработка: гибкий подход к созданию ПО, ценящий взаимодействие, работающий софт и адаптацию к изменениям. История и принципы Agile.
-
Пограничные случаи в разработке и тестировании
Редкие случаи (edge cases) в разработке: проблемы на граничных параметрах, вызванные нетипичным поведением, сложностью систем и ограничениями ресурсов. Тестирование важно!
-
Методология разработки программного обеспечения Jackson System Development (JSD)
JSD: методология разработки ПО, разработанная Jackson и Cameron в 80-х. Линейный подход к жизненному циклу системы, начиная с общих требований.
-
Верификация и валидация в разработке программного обеспечения
Проверка и валидация (V&V) в разработке ПО: обеспечение соответствия требованиям, качества и целей. Контроль качества, тестирование, инжиниринг ПО.
-
Синтаксические методы в разработке программного обеспечения
Синтаксические методы в разработке ПО: обнаружение и предотвращение ошибок на уровне структуры кода. Альтернатива формальным методам – проще и дешевле.
-
Специализированные знания в конкретной области
Доменные знания: экспертные знания в конкретной области. Важны для специалистов, особенно в IT (разработка ПО). Получение от экспертов предметной области.
-
Разработка программного обеспечения в существующей инфраструктуре.
Разработка в условиях существующих систем (brownfield): внедрение нового ПО в работающую среду. Особенности, преимущества и отличия от "чистого" проекта.
-
История и развитие программной инженерии
История разработки ПО: от возникновения в 60-х до современных принципов качества, лучших практик и управления проектами. Создание надежного и эффективного софта.
-
Аспектно-ориентированное программирование и модульность проблем
Аспекты в программировании: что это такое и зачем нужны? Разделение задач, модульность, Aspect-Oriented Programming (AOP) – повышение качества кода.
-
Модификация программного обеспечения после выпуска
Поддержка ПО: модификация после поставки, аутсорсинг, причины низкой квалификации и сложности сопровождения. Важно для разработки и SEO.
-
Аспектно-ориентированное программирование: сквозные задачи и проблемы их реализации.
Аспектно-ориентированное программирование: что такое сквозные задачи? Избегайте дублирования кода и запутанных зависимостей. Разработка, архитектура ПО.
-
Прагматичный программист: От ремесленника к мастеру
Прагматичный программист: советы от экспертов по разработке ПО. Книга Эндрю Ханта и Дэвида Томаса – для начинающих и опытных разработчиков. Обновленное издание 2019!
-
Инженерное проектирование требований: определение и управление
Инжиниринг требований: определение, документирование и поддержка требований в разработке систем и ПО. История, этапы и важность RE в инженерии.
-
Спецификация программных требований: разработка и лучшие практики
Разработка ПО: SRS – спецификация требований к программному обеспечению. Описывает функции, взаимодействие с пользователем и снижает риски переработки.
-
Цикломатическая сложность программного обеспечения
Цикломатическая сложность: метрика для оценки сложности программного кода. Разработана МакКейбом в 1976 году, использует графы потока управления.
-
Повторное использование кода в разработке программного обеспечения.
Повторное использование кода в разработке ПО: принципы, методы (библиотеки, фреймворки), преимущества и недостатки. Снижение технического долга.
-
Прототипирование программного обеспечения: методы и преимущества
Прототипирование ПО: создание неполных версий приложений для сбора обратной связи и проверки соответствия требованиям. Экономия времени и ресурсов!
-
Инспекция Фэгана: Обнаружение дефектов в документации и программном коде.
Фаган инспекция: обнаружение дефектов в документации (код, спецификации) на этапах разработки ПО. Групповой анализ, критерии входа/выхода.
-
Персональный процесс разработки программного обеспечения (PSP) для повышения качества кода.
Улучшение качества кода с PSP: личный процесс разработки ПО для отслеживания, планирования и повышения эффективности. Анализ дефектов и времени разработки.
-
Инженерия веб-приложений: методологии, инструменты и проблемы разработки.
Веб-приложения: разработка, usability, производительность, безопасность. Обзор проблем и современных подходов к созданию надежных и масштабируемых решений.
-
V-образная модель разработки программного обеспечения
V-модель разработки ПО: графическое представление жизненного цикла, этапы и результаты. Валидация систем, управление проектами, стандарты разработки.
-
Расширяемость программных систем: возможности и усилия
Расширяемость ПО: принцип проектирования для будущего роста. Легкое добавление/изменение функций без нарушения работы системы. Минимизация изменений кода.
-
Итеративный дизайн: методология циклического прототипирования и улучшения
Итеративный дизайн: методология разработки через прототипирование, тестирование и анализ. Постоянное улучшение качества и функциональности продукта.
-
Внедрение программного обеспечения: моделирование процессов и выбор стратегии
Внедрение программного обеспечения: методология, моделирование бизнес-процессов (ERP как пример). Успешная интеграция ПО, учет организационных и человеческих факторов.
-
Принцип Питера в разработке программного обеспечения: как проекты умирают из-за сложности.
Принцип программного Питера: как избежать гибели сложного проекта. Симптомы, причины и способы предотвращения чрезмерной сложности в разработке ПО.
-
Программирование в масштабе: от малого к большому.
Программирование в масштабе: различие между проектированием больших систем и написанием кода. Обзор концепций DeRemer & Kron, сравнение с подходами Брукса и Ousterhout.
-
Применение принципов бережливого производства в разработке программного обеспечения
Бережливое производство в разработке ПО: принципы, инструменты и практики, адаптированные из Toyota Production System. Книга Поппендиков – основа Lean Software Development.
-
Разработка программного обеспечения на основе управляемых функциями (FDD)
Разработка ПО: Feature Driven Development (FDD) – гибкий Agile-метод для быстрой поставки работающего софта. Итеративный процесс, ориентированный на функции.
-
Функциональное проектирование: принципы, преимущества и применение.
Функциональный дизайн: упрощение разработки ПО и 3D-моделей. Модульность, единственная ответственность, низкая связанность – для лёгкой модификации и экономии.
-
Ковбойское кодирование: хаотичная разработка программного обеспечения.
Ковбойское кодирование в разработке ПО: автономность программистов, отсутствие координации и контроля. Риски и причины возникновения. Эффективность и недостатки.
-
Декомпозиция в информатике: принципы и подходы
Декомпозиция в программировании: разбиение сложных систем на простые части для облегчения разработки, понимания и поддержки. Модульность, ООП и др. подходы.
-
Software package metrics
-
Закон Конвея: связь между организационной структурой и архитектурой систем
Закон Конвея: как организационная структура влияет на архитектуру систем. Связь между коммуникацией в команде и дизайном ПО. Улучшайте разработку!
-
Интенциональное программирование: кодирование намерений в программном обеспечении.
Ин intentional programming – парадигма программирования, кодирующая намерения разработчика. Упрощает разработку, повышает модульность и повторное использование кода.
-
Архитектор систем: роль, обязанности и требования
Системный архитектор: определение, задачи и роль в IT. Разработка архитектуры ПО и оборудования, взаимодействие компонентов, будущее расширение системы.
-
Software craftsmanship
-
Система C3: История разработки зарплатного программного обеспечения Chrysler
C3 от Chrysler: история разработки системы расчета зарплаты на Smalltalk и GemStone. Важный проект в истории экстремального программирования (XP).
-
Сложность программного обеспечения: типы, влияние и измерение.
Сложность программного обеспечения: различие между "сложным" и "запутанным". Экспоненциальный рост взаимодействий усложняет понимание больших систем. SEO-оптимизация.
-
Orthogonal defect classification
-
Оценка и измерение нефункциональных требований с использованием SNAP
Нефункциональные требования (NFR): фреймворк для структурирования. Анализ начинается с softgoals – общих целей (юзабилити, производительность, безопасность).
-
Software factory
-
Нефункциональные требования в системной инженерии
Нефункциональные требования в системной инженерии: что это, чем отличаются от функциональных, роль в архитектуре системы. Оптимизация и качество системы.
-
Software visualization
-
Обеспечение качества и безопасности программного обеспечения
Обеспечение качества ПО: надёжность, безопасность и тестирование на всех этапах разработки. Соответствие стандартам CERT SCS для защиты от уязвимостей.
-
Большое проектирование заранее: недостатки и альтернативы.
BDUF: что это такое? Подробно о подходе "большого проектирования заранее" в разработке ПО, его недостатках и альтернативах в Agile.
-
Принцип DRY: Не повторяйся в разработке программного обеспечения
Принцип DRY в разработке ПО: избегайте повторений кода и данных! Уменьшите избыточность, используйте абстракции для гибкости и простоты поддержки.
-
Управление цифровыми продуктами
Управление цифровыми продуктами: разработка, запуск и поддержка софта для максимизации прибыли. Ключевые аспекты, жизненный цикл и анализ рынка.
-
Профессия: продакт-менеджер – стратегия и развитие продукта.
Продуктовый менеджер: кто это и чем занимается? Разработка стратегии, управление функционалом и командами для создания успешных продуктов. Ключевая роль в бизнесе!
-
Модель "Вход-Процесс-Выход": Обзор и Применение
Модель "вход-процесс-выход" (IPO) – основа системного анализа и разработки ПО. Описывает структуру обработки информации, производства и программ.
-
Экстремальное программирование: практики и планирование разработки
Экстремальное программирование (XP): гибкая методология разработки ПО. 12 практик, парное программирование, лучшие практики инженерии. Agile разработка.
-
Программное обеспечение для алгоритмического управления проектами разработки ПО
Программное обеспечение SEER для управления проектами: оценка ресурсов разработки, анализ рисков на основе модели Softcost (1966-1980). Автоматизация оценки ПО.
-
Проблемно-ориентированное собеседование при приеме на работу в IT
Технические собеседования в IT: оценка навыков программирования, алгоритмов и решения задач. Подготовка к кодинг-интервью, как в Microsoft.
-
Методология исследований в области разработки программного обеспечения.
Экспериментальная разработка ПО: методы, исследования, эксперименты и сбор данных для создания теорий. Рекомендации по повышению эффективности исследований.
-
Модель некомпетентности: Пародия на CMMI в разработке ПО
Модель незрелости возможностей (CIMM) – пародия на CMM, описывающая уровни ниже 1-го уровня. Контраст зрелости процессов в разработке ПО. 🚀
-
Управление проектами разработки программного обеспечения: коммуникации и разрешение конфликтов
Управление проектами разработки ПО: планирование, реализация, контроль. Бизнес-ориентированные процессы для эффективного управления разработкой программного обеспечения.
-
Автоматизированное изучение и обнаружение приложений (АИОП)
Автоматический анализ приложений (ADU): обнаружение метаданных, бизнес-правил и связей с реестром. Экономит время разработчиков и снижает затраты на анализ изменений.
-
Эмерджентный дизайн: от образования к разработке программного обеспечения
Эмерджентный дизайн в образовании: теория системных изменений, адаптация к технологиям через учет локальной культуры и опыт Таиланда.
-
Закон тривиальности: внимание к незначительному и простому
Закон тривиальности: почему организации тратят время на мелочи? Разбор эффекта "велосипедного сарая" в управлении и разработке ПО. Важные проекты игнорируются.