Когда приложения масштабируются

На первой фирме, на которой я работал, мы занимались автоматизацией бюджетных учебных учреждений. В их учёте есть такой нюанс, что они как правило финансируются и из бюджета и за счёт студентов-контрактников. И разделение это очень значимое: строго регламентировано за что с какого источника платить можно. Казалось бы третьего источника денег быть не может. Но наш руководитель заставлял нас писать систему так чтобы она работала нормально и пятью источниками финансирования. Это усложняло и без того запутанные участки кода, увеличивало время работы программы, но когда спустя 3 года министерство финансов прислало деньги и заставило их учитывать отдельно, оказалось что делалось это не зря. Нам не пришлось ломать код, все изменения достаточно было сделать через интерфейс программы. Особенно ценно эта возможность выглядела на фоне тех сжатых сроков, которые стояли между приказом министерства финансов и временем внедрения.
Однако, на моей памяти это единственный пример, когда заранее предполагалась гибкость программы. Почему-то чаще я сталкиваюсь с жёсткой заточкой программы под конкретную ситуацию. Поменялась ситуация? Позовите программиста опять.
Массовость – одно из свойств алгоритма, заключающееся что алгоритм должен решать класс задач, различающимися только исходными данными. Это означает, что если Вы пишете программу, складывающую числа, то конечно не надо добавлять функцию умножения в неё. Но будьте добры, дайте пользователю указывать оба числа, а не только одно. И Ваша программа будет верхом совершенства, если она даст возможность сложить больше двух чисел за один шаг. Если Вы сразу не предусмотрите наиболее вероятные расширения функциональности, то потом у Вас может не хватить времени на их реализацию.

Опубликовано в Дизайн. Комментарии (2) »

2 коммент. на “Когда приложения масштабируются”

  1. Дорожко Олег пишет:

    >>И Ваша программа будет верхом совершенства, если она даст возможность сложить больше двух чисел за один шаг.

    Рискну предложить свой вариант.

    Интерфейс пусть у такой программы будет рассчитан на два числа. Но пусть в нем будет волшебная кнопка; Добавить

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

    Ну и модули эти конечно хранить в интернете, рейтинговать по полезности и юзабельности.

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

  2. Евгений пишет:

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


Ответить