Разработка ПО

Пять ключей к обмену знаниями в проектах

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

Чертова дюжина проблем программной инженерии

За последние несколько десятилетий программная инженерия превратилась в дисциплину со множеством направлений: тестирование, программирование, проектирование, архитектура, поддержка, измерения и эволюция. Появляются все новые публикации и конференции, однако о них быстро забывают, а программная инженерия продолжает самостийно развиваться вне традиций — в какой-то мере это и ремесло, и искусство, и логика.

Scrum: гибкое управление разработкой

В большинстве случаев программирование — сложный, слабо определенный процесс, требующий от разработчиков творческого подхода. Различные agile-технологии позволяют организовать процесс постепенного приближения к цели проекта путем проведения циклов испытаний с корректировкой последующих, основанных на анализе результатов предыдущих. Scrum — одна из первых методологий циклического наращивания функциональности и корректировки хода проекта на основе анализа обратной связи от пользователей. Методология Scrum устанавливает правила управления процессом разработки и позволяет использовать уже существующие практики кодирования, корректируя требования или внося тактические изменения. Использование этой методологии дает возможность выявлять и устранять отклонения от желаемого результата на более ранних этапах разработки программного продукта.

Метрики управления портфелем программных продуктов

Производители коммерческого программного обеспечения, такие, как Microsoft, IBM, и Oracle, вынуждены держать большие портфели программных продуктов, включающие операционные системы, межплатформенное, прикладное и встроенное ПО. Многие предприятия (банки, университеты, больницы) также создают свои собственные приложения и управляют ими. Руководство всех этих организаций сталкивается с важной проблемой: как одновременно управлять инвестициями, доходами, качеством и соответствовать ожиданиям клиентов в условиях пухлых портфелей программных продуктов?

Wiki в коллективной разработке требований

Исследования показали, что в проектах с высокой степенью неопределенности участие всех заинтересованных лиц повышает качество разработки требований. Развитие средств коммуникации и процессов принятия решений следует осуществлять с учетом этих различий.

Разработка программного обеспечения в небольшой организации

Как небольшой группе воспользоваться методами разработки программного обеспечения, характерными для крупных компаний? Малые группы определенно нуждаются в таких методах, но часто лишены богатства инфраструктуры и эффектов масштаба, присущих большим организациям. В малом коллективе обычно нет ни отдельной группы контроля качества, ни специального парка компьютеров для тестирования, а зачастую даже своего системного администратора. Основательное введение в эти проблемы содержится в отчете Института программной инженерии [1], посвященном совершенствованию рабочих процессов в малочисленных коллективах.

Разработчики переходят на динамические языки

Программисты предпочитают избавиться от излишне сложных и устаревших методик и стремятся использовать подходы, позволяющие упростить и ускорить разработку. Как следствие, многие из них все чаще отдают предпочтение динамическим языкам программирования, таким как JavaScript, Perl, Python и Ruby. Эксперты по программному обеспечению так и не пришли к единому определению динамического языка, однако, по существу, такой язык позволяет создавать программы, способные менять свой код и логические структуры во время исполнения, добавляя при этом различные типы, имена модулей, классы и функции. Зачастую эти языки являются интерпретируемыми и, как правило, проверяют типы во время исполнения.

Модели зрелости процесса тестирования ПО

Сегодня много говорится о качестве программного обеспечения и информационных систем, проводятся исследования, демонстрирующие зависимость качества и эффективности автоматизируемых бизнес-процессов. Качество программного обеспечения из абстрактного и неосязаемого понятия преобразуется в комплексную метрику оценки программного решения, проекта его внедрения, процесса создания и уровня использования информационных систем в целом. От чего же зависит качество программ и как можно на него влиять?

Достижение качества открытого программного обеспечения

В последнее время сообществом Open Source публикуются серьезные исследования, посвященные качеству программ. Анализ этих работ подсказывает, как добиться высокого качества открытого программного обеспечения, опираясь на эмпирические данные, а не на исторически сложившиеся, но, как правило, необоснованные суждения.

Управление требованиями на базе стандартов

Процесс управления требованиями традиционно считается одним из ключевых при создании автоматизированных систем. Наибольшие риски проектов связаны с высокой изменчивостью требований и ошибками в их определении. Методика, основанная на международных и отечественных стандартах в области управления жизненным циклом автоматизированных систем, направлена на снижение таких рисков. Проблемы при выполнении проектов создания автоматизированных систем могут возникать из-за неформального сбора информации, предполагаемой функциональности, ошибочных или несогласованных нефункциональных требований к системе, а также нерегламентированной процедуры их изменения.

Программирование без стека вызовов

Большинство вычислительных систем построено по схеме «команда - контроль исполнения»: один метод вызывает другой и дает ему инструкции по выполнению каких-либо действий или получению нужной информации. В реальном мире часто бывает по-другому.

SE2004: рекомендации по обучению специальности «Программная инженерия»

Во всем мире университеты разрабатывают для своих студентов курсы по программной инженерии, которые дополняют существующие программы по информатике и компьютерной инженерии. Чтобы сформулировать принципы составления эффективного учебного плана, IEEE Computer Society и ACM разработали в рамках более масштабного проекта Computing Curriculum набор рекомендаций Software Engineering 2004 (SE2004). SE2004 — один из нескольких документов, совместно подготовленных IEEE и ACM для вычислительных дисциплин, к которым помимо программной инженерии также относятся информатика, компьютерная инженерия, информационные системы и информационные технологии.

Адаптивная декомпозиция ресурсов в системах реального времени

Согласно закону Мура, сложность компьютерных микросхем удваивается каждые 18 месяцев, а сложность программного обеспечения растет еще быстрее. Это побуждает разработчиков компьютерных систем к поиску технологий, способных самостоятельно адаптироваться к изменению окружающей среды. Одна из таких технологий, адаптивная декомпозиция ресурсов, представляющая собой расширение операционной системы реального времени на уровне ядра, позволяет создавать безопасные группы из нескольких приложений и потоков, максимально эффективно используя ресурсы процессора. Как правило, множество подсистем, процессов и потоков, составляющих современную встраиваемую систему, разрабатываются параллельно друг другу.

Первые шаги к решению проблемы верификации программ

Исследователи в области программной инженерии объединяются для создания технологии верификации, которая заметно увеличит производительность и надежность разработки, интеграции и обслуживания программного обеспечения. «Мы гарантируем, что наше программное обеспечение в течение 90 дней со дня получения будет выполнять свои основные функции в соответствии с сопроводительными материалами, несмотря на возможные ошибки в программах и процедуре установки» — так выглядит типичная гарантия на программные продукты, которая совершенно бесполезна.

Управление документацией в проектах разработки ПО

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

Что диск грядущий нам готовит?

По прогнозам, в 2010 году средняя емкость жесткого диска на ПК составит 1,7 Гбайт, а к 2020-му она возрастет до 85 Тбайт, что позволит записать 22 млн. песен, или 86 млн. цифровых фотографий, или 21,5 тыс. фильмов.

Спецификации интероперабельности Web-сервисов

Предлагаемая концептуальная платформа позволяет анализировать проблемы интероперабельности Web-сервисов. Она обеспечивает контекст для изучения существующих стандартов и спецификаций, а также выявления новых возможностей автоматизации. Web-сервисы становятся предпочтительной технологией реализации сервис-ориентированных архитектур (Service-Oriented Architecture, SOA). Они упрощают взаимодействие и, следовательно, интеграцию приложений.

Управление Web-сервисами

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

Сервисы, идентичность и стандарты

Развитие распределенных сервис-ориентированных архитектур порождает новые проблемы — идентификации субъектов информационного обмена и стандартизации этого процесса. По мере развития компьютерных сетей они становятся реальной информационно-инфраструктурной основой бизнеса. Конвергенция бизнеса с сетевыми

Открытая система поддержки разработки

Быстрый рост рынка заказной разработки программного обеспечения дает шанс отечественным компаниям занять на нем достойное место. Однако для этого России требуется достаточное число разработчиков, способных выпускать качественные продукты. Один

Тренды рынка BI в 2024 году

Пользователи BI стали требовательнее при выборе российского решения – базовой функциональности уже недостаточно. Подробнее в обзоре.