Предпосылки 2
Достаточно один раз написать качественную программу/библиотеку для решения задачи и позволить использовать её без ограничений, чтобы зарабатывание денег, в данной сфере, из продажи воздуха превратилась в реальный продукт, а развитие продолжалось в связи с реальными нуждами, но не с целью привлечь дополнительную аудиторию новыми возможностями.
Предпосылки
На сегодняшний день существует множество программ чья функциональность во многом схожа. Так происходит потому, что потребности людей парой превышают заложенные в программу возможности. В результате на свет появляется новая программа, которая на 80% повторяет поведение первой. Другая проблема заключается в том, что порой нет возможности использовать исходный код программ аналогичного назначения и это вынуждает писать код, который был написан уже много раз.
Было бы удобней создавать программы путем объединения различных компонентов в рамках оболочки. Что из себя представляет компонент? Компонент является динамической библиотекой и делится на интерфейсную, управляющую и логическую части. Интерфейсная часть - это входная точка для подключения компонента к оболочке, т.е. интерфейс определяет какие оболочки (платформы) могут использовать данный компонент. Управляющая часть определяет способ работы компонента или то каким образом заставить его сделать необходимые действия. Логическая часть определяет возможности компонента.
Очень часто программистам приходится писать код, который тысячи раз был написан другими, но они не могут им воспользоваться, т.к. он представлен в непригодном для повторного использования виде.
Взаимодействие компонентов между собой осуществляется через объекты.
Компонент - функциональность.
Для управления компонентом его необходимо запрограммировать на скрипт-языке.
Документирование проекта
Зачем нужна документация?
Процесс создания документации позволяет лучше разобраться в деталях реализуемого проекта.
Документация должна существовать для того, чтобы давать ответы на интересующие вопросы.
Документация не может объективно отобразить на каком этапе разработки находится проект. Эта задача возлагается на соответствующую систему (todo).
Документация должна освободить меня от необходимости постоянно хранить в голове всю возможную информацию по проекту.
Зачем мне документация?
В каком виде должна быть представлена документация и зачем она нужна? Сначала определимся с целью, иначе все описания какой должна она должна быть становятся бессмысленными, т.к. не приближают меня к цели. Целью документации является описание системы для её дальнейшего изучения другими пользователями. В процессе разработки документация должна помогать видеть на каком этапе я остановился и что ещё нужно сделать.
Существуют определенные стандарты на оформление документации, которые описывают структуры документа и предполагаемое содержание. Мой подход немного отличается, т.к. я хочу превратить процесс разработки документации в процесс разработки, когда куски кода генерируются автоматически исходя из документации.
Руководством к действию является тикет с заданием, пока задание не описывает, что необходимо сделать нелизя приступать к работе. Наличие тикетов позволяет отследить какие изменения были сделаны над проектом. На сколько детально должен быть описан тикет и как это сделать если часть информации будет доступна только в процессе выполнения? Перед тем как создать новый тикет ситуация должна изучаться и на основании имеющихся данных формулируется задача, если в процессе выполнения появляются трудности, то проводится дополнительное изучение и формируется новый зависимый тикет.