WINE/Разработчику/Методика — различия между версиями
(→II этап) |
|||
(не показаны 4 промежуточные версии этого же участника) | |||
Строка 1: | Строка 1: | ||
− | [[Category: | + | [[Category:Разработчику]] |
{{MovedFromWikiEterSoftRu|WINE/Разработчику/Методика}} | {{MovedFromWikiEterSoftRu|WINE/Разработчику/Методика}} | ||
Строка 37: | Строка 37: | ||
==== III этап ==== | ==== III этап ==== | ||
− | + | * Осуществлять поддержку и оперативное исправление замечаний | |
− | + | ||
− | + | ||
− | + | ||
=== Работа с проблемой === | === Работа с проблемой === | ||
− | + | # Создать описание в багзилле | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
# Найти причину проблемы | # Найти причину проблемы | ||
− | |||
# Создать контрольные тесты | # Создать контрольные тесты | ||
− | |||
# Выставить предложения по исправлению | # Выставить предложения по исправлению | ||
− | |||
# Реализовать исправления после их утверждения | # Реализовать исправления после их утверждения | ||
− | |||
# При этом необходимо максимально использовать и дополнять имеющиеся тесты. | # При этом необходимо максимально использовать и дополнять имеющиеся тесты. | ||
− | |||
− | |||
=== Тестирование === | === Тестирование === | ||
− | |||
− | |||
− | |||
# План тестирования | # План тестирования | ||
− | |||
# Логи тестирования | # Логи тестирования | ||
− | |||
# Сводная таблица результатов. | # Сводная таблица результатов. | ||
− | |||
− | |||
=== Примерный план работы по каждой задаче === | === Примерный план работы по каждой задаче === | ||
− | |||
− | |||
Должно быть сформулировано прохождение каждой проблемы от появления до решения. | Должно быть сформулировано прохождение каждой проблемы от появления до решения. | ||
− | |||
− | |||
# Формулирование видения проблемы извне (внешне, с точки зрения пользователя) - какой диалог как себя не так ведёт. | # Формулирование видения проблемы извне (внешне, с точки зрения пользователя) - какой диалог как себя не так ведёт. | ||
− | |||
# Анализ кода с целью получения общего представления и определения проблемных мест | # Анализ кода с целью получения общего представления и определения проблемных мест | ||
− | |||
# Создание описание функции на англ., включая поведение в сложных ситуациях (для начала можно на русском). При этом описать входы и выходы (что передаётся и возвращается, в каких ситуациях). По сути, это техн. задание ТЗ) - но чтобы было с чем сверяться. При этом изучить и систематизировать имеющийся в сети материал. | # Создание описание функции на англ., включая поведение в сложных ситуациях (для начала можно на русском). При этом описать входы и выходы (что передаётся и возвращается, в каких ситуациях). По сути, это техн. задание ТЗ) - но чтобы было с чем сверяться. При этом изучить и систематизировать имеющийся в сети материал. | ||
− | |||
# Cоздание программы для тестирования в различных режимах, в большинстве случаев это оформляется как программа, воспроизводящая проблему - небольшой код, который неверно работает в WINE. Программа должна компилироваться средствами winegcc. | # Cоздание программы для тестирования в различных режимах, в большинстве случаев это оформляется как программа, воспроизводящая проблему - небольшой код, который неверно работает в WINE. Программа должна компилироваться средствами winegcc. | ||
− | |||
# Определиться, что не работает, что работает не так; сформулировать что надо сделать | # Определиться, что не работает, что работает не так; сформулировать что надо сделать | ||
− | |||
# Согласно имеющейся информации написать автоматический тест (каталог tests), если это возможно. Тест должен выполняться на Windows семейства NT начиная с NT4 | # Согласно имеющейся информации написать автоматический тест (каталог tests), если это возможно. Тест должен выполняться на Windows семейства NT начиная с NT4 | ||
− | |||
# Составить план работ с оценкой трудоёмкости и сроков (дата начала и завершения) | # Составить план работ с оценкой трудоёмкости и сроков (дата начала и завершения) | ||
− | |||
# Приступить к выполнению, корректируя п. 3-5 | # Приступить к выполнению, корректируя п. 3-5 | ||
− | |||
− | |||
=== Как вносить исправления === | === Как вносить исправления === |
Текущая версия на 17:40, 28 ноября 2015
Содержание
[убрать]Методика разработки
Необходимые знания
- Умение читать и писать на техн. английском.
- Основы работы с patch, diff, git.
- Представление о WinAPI.
- Использование поисковых систем.
- Умение тестировать и писать тестовые программы.
- Базовые представления об удобстве использования GUI.
Общий подход к работе над адаптацией к программе
I этап
- Установить программу
- Записать наблюдаемые визуальные дефекты и проблемы с функциональностью
- Локализовать проблемное место
- Запросить исходники проблемной части, которые помогут написать код, воспроизводящий ситуацию
- Оценить трудоёмкость работы по исправлению в человекоднях
II этап
- Выполнить необходимые доработки согласно плану
- Провести полное тестирование результата
- Проверять отсутствие регрессии на каждом новом шаге развития WINE (раз в неделю)
III этап
- Осуществлять поддержку и оперативное исправление замечаний
Работа с проблемой
- Создать описание в багзилле
- Найти причину проблемы
- Создать контрольные тесты
- Выставить предложения по исправлению
- Реализовать исправления после их утверждения
- При этом необходимо максимально использовать и дополнять имеющиеся тесты.
Тестирование
- План тестирования
- Логи тестирования
- Сводная таблица результатов.
Примерный план работы по каждой задаче
Должно быть сформулировано прохождение каждой проблемы от появления до решения.
- Формулирование видения проблемы извне (внешне, с точки зрения пользователя) - какой диалог как себя не так ведёт.
- Анализ кода с целью получения общего представления и определения проблемных мест
- Создание описание функции на англ., включая поведение в сложных ситуациях (для начала можно на русском). При этом описать входы и выходы (что передаётся и возвращается, в каких ситуациях). По сути, это техн. задание ТЗ) - но чтобы было с чем сверяться. При этом изучить и систематизировать имеющийся в сети материал.
- Cоздание программы для тестирования в различных режимах, в большинстве случаев это оформляется как программа, воспроизводящая проблему - небольшой код, который неверно работает в WINE. Программа должна компилироваться средствами winegcc.
- Определиться, что не работает, что работает не так; сформулировать что надо сделать
- Согласно имеющейся информации написать автоматический тест (каталог tests), если это возможно. Тест должен выполняться на Windows семейства NT начиная с NT4
- Составить план работ с оценкой трудоёмкости и сроков (дата начала и завершения)
- Приступить к выполнению, корректируя п. 3-5
Как вносить исправления
По всем пунктам, где требуется решить проблему,
- сначала желательно воспроизвести ситуацию отдельной программой или тестом для wine;
- потом - либо написать хак (не совсем корректный патч, который делает что проблема убирается, но не факт, что это правильное решение и годится для других);
- либо внести полные исправления в функцию, с комментариями к ней.
Все сделанные патчи должны отправляться в Eterwine patches maillist с указанием веток, к которым следует применить исправление.
Если получено корректное исправление и для него написан тест для wine, то патч вместе с тестом можно отправить в рассылку wine-patches@ апстрима.
Тесты для функций
Тесты для функций пишутся следующим образом:
1. Вызывается функция
2. Сверяется результат её выполнения (возвращаемое значение) с эталоном
3. Сообщается результат сравнения.
В тестах для WINE для сообщения о прохождении теста используется функция ok.
Функция ok (int bool, char* format, ...)
Выводит сообщение об ошибке, с указанием номера строки, а также
текст, содержащийся в строке format, если bool не истина (bool == 0).
Параметр format и последующие аргументы интерпретируются так же, как параметры функции
printf