Компания Net Extensions использует структурированный подход к разработке программного обеспечения
Структурированный (системный) подход предполагает создание эффективной логической цепочки, начиная с четкого описания проблемы, на которое нужно направить основные усилия и конкретной формулировки решения. Основное правило структурированного решения проблем состоит в том, чтобы сосредоточить внимание на действительно важных вопросах.
Техническое задание и архитектура
Практически любой проект начинается с формализации требований и согласовании функционала. Помимо самого технического задания, особенно при проектировании сложных SaaS систем необходимо инвестировать время и ресурсы в детальнуб разработку функционала будущей системы. В первую очередь это позволит снизить риск:
- Инвестиции в ненужный продукт не только ресурсов клиента, но и своих собственных
- Разное понимание целей и задач проекта
- Несоблюдение сроков реализации проекта
- Превышен бюджет разработки
- Изменение концепции продукта
- Смена команды разработки или ключевых ее участников
- Смена команды заказчика
- Проблема тестирования продукта
- Проблема приемки продукта заказчиком
Основные технологии разработки
Операционная система CentOS - бесплатный в распространении дистрибутив Linux, основанный на коммерческом Red Hat Enterprise Linux компании Red Hat и совместимый с ним. CentOS отличается повышенной стабильностью, может работать, как на компьютерах с 64-битной архитектурой, так и 32-битной.
Git - бесплатная система контроля версий, набор консольных утилит, которые отслеживают и фиксируют изменения в файлах (чаще всего речь идет об исходном коде программ, но можно использовать его для любых файлов). С помощью Git можно откатиться на более старую версию вашего проекта, сравнивать, анализировать, сливать изменения и многое другое. Git незаменим для организации процесса разработки программного обеспечения в команде, когда над оним и тем же файлом могут работать несколько человек.
Apache Tiles - это бесплатный шаблонизатор с открытым исходным кодом, созданный исключительно на основе шаблона проектирования Composite. Составной шаблон проектирования - это тип структурного шаблона, который объединяет объекты в древовидные структуры для представления иерархий всей части, и этот шаблон обрабатывает отдельные объекты и композицию объектов равномерно. Другими словами, в Tiles страница создается путем сборки композиции подвидов, называемых Tiles.
Apache Tomcat - это контейнер, который позволяет вам использовать интернет приложения такие, как Java сервлеты и JSP (серверные страницы Java). Реализует спецификацию сервлетов и спецификацию JavaServer Pages (JSP) и JavaServer Faces (JSF). Написан на языке Java. Tomcat используется в качестве самостоятельного веб-сервера, в качестве сервера контента в сочетании с веб-сервером Apache HTTP Server, а также в качестве контейнера сервлетов в серверах приложений JBoss и GlassFish.
Redmine - открытое серверное веб-приложение для управления проектами и задачами (в том числе для отслеживания ошибок). Redmine написан на Ruby и представляет собой приложение на основе широко известного веб-фреймворка Ruby on Rails. Распространяется согласно GNU General Public License.
Java EE или Java Enterprise Edition представляет платформу для создания корпоративных приложений на языке Java. Прежде всего это сфера веб-приложений и веб-сервисов.Java EE состоит из набора API и среды выполнения. Java EE является промышленной технологией и в основном используется в высокопроизводительных проектах, в которых необходима надежность, масштабируемость, гибкость.
Spring Framework (или коротко Spring) - универсальный фреймворк с открытым исходным кодом для Java-платформы. Spring обеспечивает решения многих задач, с которыми сталкиваются Java-разработчики и организации, которые хотят создать информационную систему, основанную на платформе Java. Считается, что Spring реализует модель разработки, основанную на лучших стандартах индустрии, и делает её доступной во многих областях Java.
Vert.x - инструментарий разработки программного обеспечения с открытым исходным кодом, реактивной разработки от разработчиков Eclipse. Реактивное программирование - это парадигма программирования, связанная с асинхронными потоками, которые реагируют на любые изменения или события.Аналогично, Vert.x использует шину событий для связи с различными частями приложения и асинхронно передает события обработчикам, когда они доступны.
Java Database Connectivity - стандартный API для независимого соединения языка программирования Java с различными базами данных. Если говорить в целом, то JDBC – это библиотека, которая обеспечивает целый набор интерфейсов для доступа к различным БД.
JPA (Java Persistence API) это спецификация Java EE и Java SE, описывающая систему управления сохранением java объектов в таблицы реляционных баз данных в удобном виде. Сама Java не содержит реализации JPA, однако есть существует много реализаций данной спецификации от разных компаний (открытых и нет). Это не единственный способ сохранения java объектов в базы данных (ORM систем), но один из самых популярных в Java мире.
Hibernate одна из самых популярных открытых реализаций последней версии спецификации (JPA 2.1). Даже скорее самая популярная, почти стандарт де-факто. То есть JPA только описывает правила и API, а Hibernate реализует эти описания, впрочем у Hibernate (как и у многих других реализаций JPA) есть дополнительные возможности, не описанные в JPA (и не переносимые на другие реализации JPA).
Java Server Pages (JSP) - технология, которая позволяет создавать динамические веб-страницы. Изначально JSP (вместе с сервлетами) на заре развития Java EE являлись доминирующим подходом к веб-разработке на языке Java. И хотя в настоящее время они уступило свое место другой технологии - JSF, тем не менее JSP продолжают широко использоваться. По сути Java Server Page или JSP представляет собой html-код с вкраплениями кода Java.
FreeMarker - механизм шаблонов: библиотека Java для генерации текстового вывода (HTML-страницы, xml, файлы конфигурации, исходный код и.т.д.
PostgreSQL - это свободно распространяемая объектно-реляционная система управления базами данных (ORDBMS), наиболее развитая из открытых СУБД в мире и являющаяся реальной альтернативой коммерческим базам данных. Производительность PostgreSQL основывается на использовании индексов, интеллектуальном планировщике запросов, тонкой системы блокировок, системе управления буферами памяти и кэширования, превосходной масштабируемости при конкурентной работе.
PostGIS - это программное обеспечение с открытым исходным кодом, которое, в качестве внешнего расширения, добавляет поддержку географических объектов в реляционную базу данных PostgreSQL. Это позволяет выполнять запросы о местоположения с помощью SQL.
"Голос интеллекта тих, но он не устает повторять - и слушатели находятся."
З. Фрейд