Слайд 1Принципы обеспечения показателей качества программного продукта
Слайд 2Качество программного продукта определяется по нескольким критериям
Качественный программный продукт должен
отвечать функциональным и нефункциональным требованиям, в соответствии с которыми он создавался, иметь ценность для бизнеса, отвечать ожиданиям пользователей
Слайд 3Качество программного продукта определяется по нескольким критериям
В жизненном цикле управления
приложениями качество должно отслеживаться на всех этапах жизненного цикла ПО.
Оно начинает формироваться с определения необходимых требований. При задании требований необходимо указывать желаемую функциональность и способы проверки её достижения.
Слайд 4Качество программного продукта определяется по нескольким критериям
Качественный программный продукт должен
обладать высоким потребительским качеством, независимо от области применения: внутреннее использование разработчиком, бизнес, наука и образование, медицина, коммерческие продажи, социальная сфера, развлечения, веб и др.
Для пользователя программный продукт должен удовлетворять определенному уровню его потребностей.
Слайд 5Важным аспектом создания качественного ПО является:
обеспечение нефункциональных требований, таких как удобство
в эксплуатации, надежность, производительность, защищенность, удобство сопровождения.
Надежность ПО определяет способность без сбоев выполнять заданные функции в заданных условиях и в течение заданного отрезка времени.
Производительность характеризуется временем выполнения заданных транзакций или длительных операций.
Слайд 6Важным аспектом создания качественного ПО является:
Защищенность определяет степень безопасности системы от
повреждений, утраты, несанкционированного доступа и преступной деятельности.
Удобство сопровождения определяет легкость, с которой обслуживается продукт в плане простоты исправления дефектов, внесения корректив для соответствия новым требованиям, управления измененной средой.
Слайд 7Управление жизненным циклом программного продукта помогает разработчикам целенаправленно добиваться создания качественного
ПО, избегать потерь времени на переделку, повторное проектирования и перепрограммирование ПО.
Слайд 8Тестирование программного обеспечения
Тестирование программного продукта позволяет на протяжении всего жизненного цикла
ПО гарантировать, что программные проекты отвечают заданным параметрам качества.
Главная цель тестирования - определить отклонения в реализации функциональных требований, обнаружить ошибки в выполнении программ и исправить их как можно раньше в процессе выполнения проекта.
Слайд 9На протяжении всего жизненного цикла разработки ПО применяются различные типы тестирования
для гарантии того, что промежуточные версии отвечают заданным показателям качества.
При этом применяются автоматические и ручные тесты.
Слайд 10Модульное тестирование
- предназначено для проверки правильности функционирования методов классов ПО.
Модульные
тесты пишутся и исполняются разработчиками в процессе написания кода.
Модульное тестирование применяется как для проверки качества кода приложения, так и для проверки объектов баз данных.
Слайд 11Исследовательское тестирование
предназначено для тестирования, при котором тестировщик не имеет заранее определенных
тестовых сценариев и пытается интуитивно исследовать возможности программного продукта и обнаружить и зафиксировать неизвестные ошибки.
Слайд 12Интеграционное тестирование
используется для проверки корректности совместной работы компонентов программного продукта.
Слайд 13Функциональное тестирование
предполагает проверку конкретных требований к ПО и проводится после добавление
к системе новых функций.
Слайд 14Нагрузочное тестирование
предназначено для проверки работоспособности программного продукта при предельной входной нагрузке.
Слайд 15Регрессионное тестирование
применяется при внесении изменений в программное обеспечение с целью проверки
корректности работы компонентов системы, которые потенциально могут взаимодействовать с измененным компонентом.
Слайд 16Комплексное тестирование
предназначено для тестирования функциональных и нефункциональных требований всей системы программного
продукта.
Слайд 17Приемочное тестирование
представляет собой функциональные испытания, которые должны подтвердить то, что программный
продукт соответствует требованиям и ожиданиям пользователей и заказчиков.
Приемочные тесты пишутся бизнес-аналитиками, специалистами по контролю качества и тестировщиками.
Слайд 18Рефакторинг
Качество кода программного продукта во многом определяется тем, насколько трудно или
легко вносить изменения в код, а также тем насколько доступен код для понимания.
Созданное программное приложение может выполнять требуемые функции, но иметь проблемы с внесением изменений или пониманием созданного кода.
В этом случае такое ПО нельзя назвать качественным, так как на этапе его сопровождения могут возникнуть проблемы с его модификацией при изменении пользовательских требований.
Слайд 19Для улучшения качества кода программных приложений применяют рефакторинг.
По определению Фаулера
М. рефакторинг определяется как "процесс изменения программной системы таким образом, что её внешнее поведение не изменяется, а внутренняя структура улучшается".
Следовательно, в процессе проектирования для создания высококачественного программного продукта необходимо не только обеспечить выполнение функциональных требований, но и нефункциональных, в частности, удобства сопровождения, что предполагает возможность и простоту внесения изменений в код, а также возможность легкого понимания созданного кода.
Слайд 20Некачественный дизайн кода определяется по ряду признаков:
жесткость - характеристика программы, затрудняющая
внесение изменений в код;
хрупкость - свойство программы повреждаться во многих местах при внесении единственного изменения;
косность характеризуется тем, что код содержит части, которые могли бы оказаться полезными в других системах, но усилия и риски, сопряженные с попыткой отделить эти части кода от оригинальной системы, слишком велики;
ненужная сложность характеризуется тем, что программа содержит элементы, которые не используются в текущий момент;
ненужные повторения, которые состоят в повторяющихся фрагментах кода в программе;
непрозрачность, которая характеризует трудность кода для понимания.
Слайд 21Для создания качественного дизайна кода целесообразно применять некоторые принципы и паттерны
проектирования ПО.
Принцип единственной обязанности определяет, что у класса должна быть только одна причина для изменения. Из этого принципа следует, что классу целесообразно поручать только одну обязанность.
Принцип открытости/закрытости определяет, что программные сущности (классы, модули, функции) должны быть открыты для расширения, но закрыты для модификации.
Принцип подстановки Лисков определяет, что должна быть возможность вместо базового класса подставить любой его подтип.
Слайд 22Принцип инверсии зависимостей определяет два положения:
модули верхнего уровня не должны зависеть
от модулей нижнего уровня. И те и другие должны зависеть от абстракций;
абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.
Принцип разделения интерфейсов определяет, что клиенты должны знать только об абстрактных интерфейсах, обладающих свойством сцепленности.
Слайд 23Паттерны проектирования предлагают универсальные, проверенные практикой решения. Среди общего списка паттернов
следует выделить те, которые целесообразно применять при гибкой разработке программного обеспечения. Это паттерны Команда, Стратегия, Фасад, Посредник, Одиночка, Фабрика, Компоновщик, Наблюдатель, Абстрактный сервер/адаптер/шлюз, Заместитель и Шлюз, Посетитель и Состояние.
Использование паттернов при разработке позволяет создавать программное обеспечение, которое легко модифицировать и сопровождать.
Слайд 24Следует отметить, что для проведения рефакторинга необходимо иметь надежные тесты, которые
обеспечивают контроль соблюдения функциональных требований при улучшении дизайна кода программного обеспечения.
Слайд 25Итог
Качество программного продукта определяется по нескольким критериям и качественный программный продукт
должен отвечать функциональным и нефункциональным требованиям. В жизненном цикле приложения качество должно отслеживаться на всех его этапах.
Тестирование программного продукта позволяет на протяжении всего жизненного цикла ПО гарантировать, что программные проекты отвечают заданным параметрам качества.
На протяжении всего жизненного цикла разработки ПО применяются различные типы тестирования.
Слайд 26Вопросы для самоконтроля
Какими характеристиками должен обладать качественный программный продукт?
Какие нефункциональные требования
определяют качество программного продукта?
Какая роль тестирования в обеспечении качества программного продукта?
Какие типы тестов используют для проверки качества программного продукта?
Для чего применяется регрессионное тестирование?
Для чего применяют рефакторинг кода?
Приведите признаки некачественного кода.