Признаки, что Вам нужен рефакторинга



§ Ваш программный продукт работает, но внесение новой функциональности иногда затягивается на недели;

§ В определенных местах Ваш код работает совершенно не так, как Вы того ожидали;

§ Вы часто ошибаетесь в сроках реализации поставленной задачи;

§ Вам приходится вносить однотипные изменения в разных местах.

Методы рефакторинга

§ Инкапсуляция поля (Encapsulate Field);

§ Выделение класса (Extract Class);

§ Выделение интерфейса (Extract Interface);

§ Выделение локальной переменной (Extract Local Variable);

§ Выделение метода (Extract Method);

§ Генерализация типа (Generalize Type);

§ Встраивание (Inline);

§ Введение фабрики (Introduce Factory);

§ Введение параметра (Introduce Parameter);

§ Подъём поля/метода (Pull Up);

§ Спуск поля/метода (Push Down);

§ Замена условного оператора полиморфизмом (Replace Conditional with Polymorphism);

§ и так далее;

 

 

ОРГАНИЗАЦИЯ РАБОТЫ В КОЛЛЕКТИВЕ РАЗРАБОТЧИКОВ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

Технологии коллективной разработки

Все множество разработок в зависимости от количества участников и типов взаимоотношений между ними может быть сведено к триаде разработок, приведенной на рис. 3.21.

Авторская разработка

Люблю одиночество, даже когда я один. Ж. Ренар

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

Этот принцип был достаточно широко распространен в 70-80-е годы XX века. Сейчас он применяется редко.

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

Иногда авторская разработка может выигрывать по производительности в тридцать и более раз у коллективной разработки, что достигается за счет:

· исключения межличностных коммуникаций, связанных с необходимостью порождения и изучения большого количества технологической документации;

· исключения работ по разбиению проекта на составляющие, по распределению их между исполнителями, по координации деятельности исполнителей и контролю за их работой.

Объем программного продукта, выполненного методом авторской разработки, в 5-20 раз меньше по сравнению с индустриальными аналогами.

Авторская разработка предполагает достижение профессионального успеха, известности и славы в одиночку. Такое вполне реально, следует только правильно выбрать профессиональную "нишу", область ведения разработки.

Коллективная разработка

Собрать стадо из баранов легко, трудно собрать стадо из кошек.
С. П. Капица

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

О первых опытах коллективных разработок

Известно, что первые коллективные разработки программ велись примерно так. Начальник выполнял разделение большого проекта на меньшие части и передавал далее по иерархии. Через некоторое время, теперь уже снизу вверх, шла сборка программы из написанных фрагментов. Собрать работающий программный продукт удавалось не всегда.

Технические командные роли

Равноправные соисполнители

Бригада равноправных соисполнителей обычно состоит из специалистов, занимающихся примерно подобными задачами в рамках одного проекта. Естественно, специализаций в рамках одной бригады может быть несколько:

· инженеры-разработчики (специалисты по инженерии программирования и программисты);

· технические писатели;

· инженеры тестирования;

· инженеры качества;

· специалисты по сопровождению продукта;

· специалисты по продажам продукта.

Тип работы определяет содержание и природу выполняемой работы. Приведем список типов работ и областей специализации на основе классификации Конгер [Conger 1994].

· Разработка приложений.

o Программист.

o Специалист по инженерии программирования.

o Специалист по инженерии знаний.

· Работа с приложениями.

o Специалист по приложениям.

o Администратор данных.

o Администратор базы данных.

· Техническая поддержка.

o Системный администратор.

o Сетевой администратор.

o Администратор коммуникаций,

· Обеспечение качества продукта.

o Технический писатель.

o Инженер тестирования.

o Инженер качества.

· Маркетинг.

o Специалист по сопровождению продукта.

o Специалист по продажам продукта.

· Системное интегрирование.

o Системный интегратор.

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


Дата добавления: 2021-03-18; просмотров: 181; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!