Что такое проект, процесс, методологии разработки софта, требования, тестирование, разница между QA и QC?


1. Что такое проект?


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


2. Что такое процесс?


Для проектов определены 5 основных этапов процесса. Это инициирование проекта > планирование > выполнение > контроль и мониторинг > и закрытие проекта. Очень хорошо и наглядно процесс показан на этой диаграмме:







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

Если описывать процесс коротко, то это - серия действий для достижения определенного результата:
  1. Инициирование проекта - это описание продукта, целей проекта, назначение менеджера проекта. 
  2. Планирование - это задокументированный проектный план, который обновляется и дополняется по мере развития проекта. Это очень важный этап так как каждый проект уникален и “you only get one chance to get it right”. 
  3. Выполнение - это реализация задач, описанных в плане проекта. 
  4. Контроль - это постоянный мониторинг прогресса и сравнение с планом, если необходимо, то это внесение корректировок в процесс. Он включает в себя контроль прогресса, репортинг, возможное изменение задач проекта, контроль качества и улучшений продукта, контроль времени и затрат, контроль рисков. 
  5. Закрытие проекта - это задокументированное принятие заказчиком результатов проекта 
Также нужно понимать, что процесс обычно является интегративным, т.е. действие (или бездействие) на одной стадии обычно затрагивает другие. Результатом может быть то, что какое-либо изменение в рамках проекта скорее всего приведет к увеличению стоимости или изменению первоначальных эстимейтов по срокам выполнения или скажется на качестве продукта. Поэтому все этапы процесса требуют качественного и активного управления.

3. Какие есть методологии разработки софта?


Существует много методологий разработки программного обеспечения, но самые известные - это Waterfall и Agile. Это два основных подхода, которые взяты за основу. Если коротко, то Waterfall считается классическим подходом разработки программного обеспечения и его отличительные черты - это последовательность и структурированность. Проект разбивается на этапы с четкой целью и временными рамками и последующий этап не начинается пока не закончится предыдущий.

Самая популярная методология сейчас - это Agile или методология итеративного подхода, когда продукт разрабатывается циклами от 1 до 4 недель. Множество других методологий (Scrum, Extreme Programming, Feature Driven Development, Dynamic System Development Model и тд) - это просто разновидности Agile методологии, но тем не менее каждый подход имеет отличительные черты, которые могут идеально подойти для специфического проекта.

Agile методология отличается от Waterfall тем, что в приоритете взаимодействие в команде вместо формальности, работающее программное обеспечение вместо идеальной документации, сотрудничество вместо официальных переговоров и самое главное преимущество - это своевременное реагирование на изменения вместо слепому следованию плану.

4. Что такое требования и тестирование?


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

Тестирование - это процесс исследования, анализа и оценки разрабатываемого и готового продукта, чтобы удостовериться что он соответствует требованиям заказчика. Если продукт не соответствует требованиям заказчика, тогда работа тестировщика - донести информацию о несоответствии или неправильной работе в доступной и удобной форме. Для этого используются специально разработанные bug tracking инструменты - Jira, Mantis и тд. Сначала читаются требования > пишется тест план > потом тестируется продукт > создаются “баги” > потом регрес багов > и так по кругу пока продукт не станет отвечать требованиям заказчика.

5. Существует ли разница между QA и QC? Если да, то в чем? 


QA (Quality Assurance) и QC (Quality Control) - связаны между собой, но являются разными концепциями. Задача QC состоит в том, чтобы оценить, проанализировать готовый работающий продукт и отвечает ли он требованиям заказчика. Задача QA состоит в том, чтобы следить за тем, чтобы в процессе разработки создавался такой продукт, который будет соответствовать требованиям заказчика.


И QA (Quality Assurance) и QC (Quality Control) очень важны для того, чтобы создать успешный продукт, отвечающий всем требованиям. Все зависит от проекта, и функцию QA/QC могут выполнять только тестировщики внутри компании, или QA/QC тестировщики внутри компании и дополнительно QC со стороны заказчика, иногда сочетание внутреннего QA/QC и дополнительно внешнего QA/QC.



Comments

Popular posts from this blog

What Self-Awareness Really Is (and How to Cultivate It)

Most Popular and Influential Programming Languages of 2018

Как я сдавал ISTQB Advanced Level

5 Best Python Frameworks for WebView Testing

Собеседование "по другую сторону": опыт поиска Junior QA Engineer