RU

Принципы функционирования

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

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

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

В настоящее время самые распространенные операционные системы Windows и macOS уже обеспечены встроенным браузером, помимо этого доступны для скачивания и установки бесплатные продукты таких компаний как Mozilla, Google, Yandex. Передача данных между сервером и клиентом осуществляется через интернет посредством установки безопасного (зашифрованного соединения).

Таким образом мы можем создать распределенную в пространстве информационную систему, для работы в которой достаточно лишь подключить компьютер пользователя к интернету и не требуется устанавливать никакое дополнительное (в случае с операционными системами Windows и macOS) программное обеспечение.


Проектирование

При разработке сложных информационных систем, в компаниях, предлагающих услуги по разработке программного обеспечения, помимо чисто технических, на первый план выходят проблемы, связанные с трудностью межличностной коммуникации между сотрудниками компании Заказчика и разработчиками. Иногда кажется, что они разговаривают на разных языках! Конечно, в хорошей компании-разработчике всегда есть бизнес-аналитики, которые смогут разобраться в тонкостях бизнеса клиента, но и после этого нужно окончательно убедиться, что они поняли клиента правильно. И это очень актуальная проблема. Недопонимание на этапе разработки технического задания может вызвать серьезные сложности в работе с уже созданной системой, привести к финансовым и репутационным потерям.

Для наглядной визуализации существующих и измененных бизнес-процессов, а также моделирования структуры данных компании Заказчика нашей компанией применяется методология и программный продукт ARIS (Architecture of Integrated Information Systems) позволяющая описать и визуализировать бизнес-процессы предприятия, структуру данных с помощью специальных диаграмм (нотаций) и унифицированного объектно-ориентированного языка моделирования UML. Использование ARIS при проектировании информационных систем существенно ускоряет и упрощает разработку, позволяя легко моделировать и документировать автоматизируемую область, предоставляя визуальную интерпретацию процессов и структуры данных, что помогает клиенту и разработчикам хорошо понимать друг друга.

Как результат – грамотно написанное и полное техническое задание (или техническое задание на итерацию в случае применения «гибкой» методологии разработки), необходимое для однозначного понимания функциональности бизнес-приложения как программистами, так и Заказчиком системы.


Программирование

Как мы уже писали ранее в «Принципах функционирования», клиент-серверные системы состоят из серверной (непосредственно аппаратной части и программного кода, выполняющегося на сервере) и клиентской (персональный компьютер пользователя системы с установленным на нем веб-обозревателем) части. Также на сервере (серверах) находится база данных системы, в которой осуществляется централизованное хранение информации. Соответственно, разработку программного обеспечения системы можно также разделить на программирование выполняемой на сервере части системы (back-end) и части, выполняемой на клиенте (front-end). Также к программированию серверной части системы можно отнести формирование структуры базы данных системы, в которой будут хранится данные.

В качестве основного языка программирования наших систем мы используем отлично зарекомендовавший себя для веб-разработки язык PHP, а в качестве базы данных - популярную реляционную базу данных MySQL (поддержку и разработку осуществляет корпорация Oracle), обладающую высокой емкостью, производительностью и, что немаловажно для стоимости системы, распространяемой на основании лицензии на свободное программное обеспечение (GNU General Public License), т.е. бесплатно.

Код клиентской части системы пишется с помощью следующего стека технологий:

  • язык гипертекстовой разметки HTML,
  • язык описания внешнего вида документа CSS
  • язык сценариев JavaScript, необходимый для расширения интерактивных возможностей клиентской части системы.

Все языки программирования и программные платформы, используемые нами при разработке программного обеспечения, также распространяются на условиях свободного программного обеспечения (бесплатно). Помимо использования мощных и современных языков программирования существенно ускорить скорость разработки позволяют используемые нами фреймворки (framework) – программные платформы, облегчающее разработку и объединение разных компонентов большого программного проекта, позволяющие быстро реализовать требуемую функциональность, не создавая повторно одни и те же элементы, которые есть в каждой системе, с «чистого листа».

Используя эти программные продукты, а также и свои наработки, мы как из кирпичиков (или паззлов, что отражено в названии нашей компании) можем быстро и качественно построить программный продукт, который необходим нашему Заказчику.


Дизайн

Само понятие дизайна в случае разработки информационной системы гораздо более широкое, чем, например, при разработке веб-сайта. Если в случае сайта под дизайном понимают внешний вид страниц, то для информационной системы имеет ключевое значение удобство пользования системой, ее навигацией, правильная последовательность действий при выполнении стандартных операций, а так же насколько интерфейс системы «интуитивно понятен» пользователю, т.е. всё то, что сейчас принято называть юзабилити (usability).

Таким образом под дизайном информационной системы мы подразумеваем, как дизайн интерфейса пользователя (UI дизайн), так и насколько пользователю удобно работать с системой в целом, его впечатление от системы (user experience – UX).

Как показала практика, при разработке программ на заказ, недооценка UX фактора может привести к нежеланию пользователей работать в системе, а следовательно вызвать проблемы с её успешным внедрением. Чтобы избежать этих рисков, еще на этапе проектирования мы моделируем последовательность действий пользователя в системе и проектируем (с отрисовкой схем) пользовательский интерфейс (интерфейсы) и ключевые формы ввода-вывода информации. После разработки прототипа, в рамках отдельного этапа разработки, наши специалисты создают окончательный дизайн информационной системы.

В процессе бета-тестирования и внедрения, для анализа удобства пользования системой, мы применяем, как технические (например - оценка правильных/неправильных кликов пользователей при совершении действия), так и гуманитарные (опрос, анкетирование пользователей) методы для внесения корректировок в UX компоненту разрабатываемой информационной системы.


Безопасность

Безопасность данных и отказоустойчивость – одно из наиболее уязвимых мест клиент-серверных систем, использующих интернет как среду передачи данных. Мы уделяем большое внимание обеспечению безопасности при разработке наших интернет приложений (автоматизированных систем). В обязательном порядке мы используем следующие методы:

  • Передача данных осуществляется с применением безопасного протокола HTTPS (протокол HTTP с шифрованием данных);
  • Хранение паролей пользователей в БД осуществляется в зашифрованном виде (исключает возможность хищения пароля пользователя);
  • Применение комплекса мер, исключающих доступ к площадке хранения файлов сайта, базе данных и веб-серверу неавторизованных пользователей (как удаленно, так и непосредственно);
  • Исключение уязвимостей программных продуктов при создании системы (безопасный код), обязательное тестирование систем автоматизации предприятия с помощью анализаторов уязвимостей известных производителей;
^ ^