Не только одна главная функция
Не только одна главная функция
При эволюции системы то, что вначале воспринималось как ее главная функция, с течением времени может стать менее важным.
Рассмотрим типичную систему расчета зарплаты. При формулировке начальных требований заказчик мог представить лишь то, что следует из ее названия: систему для генерации чеков на зарплату по соответствующим данным. Его представление системы, явное или неявное, могло оказаться версией следующей схемы, возможно, чуть более амбициозное:
Рис. 5.3. Структура простой системы расчета зарплаты
Эта система получает некоторые входные данные (такие как часы работы служащего и некоторую информацию о нем) и производит некоторые выходные данные (чеки и т. п.). Это простая функциональная спецификация, в строгом смысле слова "функциональный". Она определяет программу как механизм для выполнения одной функции - платить зарплату служащим. Функциональный метод проектирования сверху вниз предназначен как раз для таких строго очерченных проблем, когда задание состоит в вычислении одной функции - "вершины" конструируемой системы.
Предположим, однако, что разработка нашей платежной системы благополучно завершена и программа выполняет всю необходимую работу. Скорее всего, на этом разработка не прекратится. Хорошие системы имеют противную привычку возбуждать в своих пользователях множество идей о других вещах, которые они могут делать. Как разработчику системы вам было сказано вначале, что все, что вы должны сделать - это сгенерировать чеки и пару вспомогательных выходных данных. Но затем просьбы о расширениях начинают попадать на ваш стол одна за другой: "Может ли программа собирать некоторую дополнительную статистику?" "Я говорил вам, что в следующем квартале мы собираемся начать платить некоторым служащим ежемесячно, а некоторым - дважды в месяц, не так ли?" "И, между прочим, мне нужен ежемесячный суммарный отчет для администрации и еще один ежеквартальный для акционеров". "Бухгалтерам требуется отдельный отчет для начисления налогов". "Кстати, правильно ли вы храните информацию о зарплате? Очень хотелось бы предоставить персоналу интерактивный доступ к ней. Не понимаю, почему трудно добавить такую функцию?"
Этот феномен - желание добавить непредусмотренные заранее функции к успешным системам - встречается во всех прикладных областях. Программа для ядерной физики, которая вначале просто применяла некоторый алгоритм для выдачи таблицы чисел по пакетному входу, со временем непременно будет расширена. Она должна будет обрабатывать графический вход, выдавать графический выход и сохранять в базе данных полученные результаты. Компилятор, предназначенный только для трансляции корректных исходных текстов в объектные коды, будет через некоторое время существенно расширен, чтобы красиво распечатывать программы, а также служить верификатором синтаксиса, статическим анализатором и даже - программным окружением.
Процесс изменений происходит непрерывно. Новая система все еще является во многих отношениях "той же", что и старая: все еще платежной системой, программой для ядерной физики, компилятором. Но исходная "главная функция", которая вначале выглядела самой важной, часто становится просто одной из функций системы, а иногда и совсем исчезает, становясь ненужной.
Если при анализе и проектировании используется метод декомпозиции, основанный на функции, то структура системы будет вытекать из исходного понимания разработчиками главной функции системы. При этом добавление всякой новой функции, даже если оно кажется заказчику простым, может разрушить всю структуру системы. Поэтому очень важно найти в качестве критерия декомпозиции свойства менее изменчивые, чем главная функция системы.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Одна голова или много?
Одна голова или много? Bell была права по крайней мере в одном: Hush-A-Phone отнюдь не пользовался бешеным спросом, и вряд ли можно было сказать, что он набирает популярность. Чтобы понять такую резкую реакцию AT&T и не считать ее невротической, нам нужно увидеть за скромным
7.2.2. Главная страница
7.2.2. Главная страница Главная страница сервиса доступна по адресу http://maps.yandex.ru/. Информации на этой странице немного — список доступных карт и поле для поиска информации на карте. Щелчок на названии карты или региона переводит на страницу, где можно будет работать с
Самая главная тайна
Самая главная тайна Сейчас я открою вам самую главную тайну. Как быстро нарастить группу в Facebook? Чем больше людей посетит вашу Welcome Page, тем быстрее вы наберете необходимое число друзей. Всё.Выше я уже приводил цифры конверсии, повторю их еще раз. В среднем в мире один
Юзабилити: главная страница интернет-магазина
Юзабилити: главная страница интернет-магазина На главной странице основные потери происходят, во-первых, из-за случайной аудитории, и во-вторых, из-за отталкивающего дизайна и непроработанной
Главная страница сайта
Главная страница сайта Главная страница сайта имеет самый высокий показатель отказов. Ее покидают 40–60 % посетителей, так как именно главная страница появляется в поиске по самым широким запросам, которые могут вводить представители разной целевой аудитории.Если
Вкладка Главная
Вкладка Главная Небольшое вступление. На экране у нас уютно расположился текст сказки про маленький компьютер (см. рис. 1.8). Допустим, что-то нам в нем не нравится, и мы хотим это что-то изменить. Вы наверняка умеете пользоваться клавишами Backspace и Delete, но они удаляют символы
Вкладка Главная
Вкладка Главная Начнем с вкладки Главная (рис. 3.8).Буфер обмена. Здесь для вас не будет никаких неожиданностей: команды Вырезать, Копировать, Вставить (работают горячие клавиши Ctrl+X, Ctrl+C, Ctrl+V) и кнопка вызова панели буфера обмена на 24 элемента. Как и в Word, вы можете запомнить 24
Урок № 97. Главная книга
Урок № 97. Главная книга Главная книга – это один из основных документов бухгалтерской отчетности, который содержит информацию о корреспонденции каждого счета со всеми другими счетами, а также о сальдо по каждому счету.Чтобы сформировать Главную книгу, выполните
5. Один объект — одна задача
5. Один объект — одна задача РезюмеКонцентрируйтесь одновременно только на одной проблеме. Каждый объект (переменная, класс, функция, пространство имен, модуль, библиотека) должны решать одну точно поставленную задачу. С ростом объектов, естественно, увеличивается
4.3. Группа Шрифт вкладки Главная
4.3. Группа Шрифт вкладки Главная Изменять параметры шрифта можно, используя не только вкладку Шрифт одноименного окна. Во многих случаях гораздо удобнее пользоваться инструментами группы Шрифт вкладки Главная на ленте (рис. 4.7). Рис. 4.7. Группа Шрифт вкладки ГлавнаяС
Вы и я – одна команда
Вы и я – одна команда Публикации разработчиков новых технологий предназначены для очень требовательной аудитории (я должен знать это не понаслышке – ведь я один из них). Построение программных решений для любой платформы требует чрезвычайной детализации и учета
Одна база данных или много?
Одна база данных или много? Один сервер Firebird- за исключением локального встроенного сервера под Windows - может управлять множеством баз данных через свою собственную физическую файловую систему. Для больших предприятий не является необычным использование нескольких баз
3.4. Главная диспетчерская процедура.
3.4. Главная диспетчерская процедура. Она называется OnDispatch и объявлена какOnDispatch proc near, pDeviceObject:PDEVICE_OBJECT, pIrp:PIRPЗдесь нам важен указатель на структуру с данными запроса pIrp. Данная структура довольно сложна. Вы можете найти её объявление в файле usewdm.inc.Но нам понадобятся лишь
Главная загрузочная запись и таблица разделов
Главная загрузочная запись и таблица разделов В первом секторе на любом жестком диске находятся код простой программы (загрузчика) и последовательность информационных полей (таблица разделов). Вместе программа и поля называются главной загрузочной записью (Master Boot Record –
Ещё одна «ничего не стоящая» информация
Ещё одна «ничего не стоящая» информация Помимо номера расчётного центра и внутренних номеров, какая еще, по-видимому, бесполезная информация может быть чрезвычайно ценной для вашего врага?Телефонный звонок Питера Абеля«Привет», сказал человек на другом конце линии.