Книга: Программное обеспечение и его разработка
Взгляд сверху вниз
Взгляд сверху вниз
Если бы я руководил более или менее крупной компанией, я стремился бы к тому, чтобы платежные ведомости печатались в срок, а при резервировании билетов на самолеты не возникало никаких ошибок. Предположим, что ведомость подготавливается недостаточно эффективно или ее подготовка затягивается. Придется мне самому исследовать возникшую проблему. Я буду изучать дела уровень за уровнем. Начну я с человека, отвечающего за ведомости, и попрошу его описать мне систему сверху вниз. Он может разбить систему на пять компонент: 1) процедуры; 2) люди; 3) вычислительные машины/системы; 4) входные данные и 5) распределение. На этой стадии у меня возникает возможность более глубоко ознакомиться с любой из этих пяти компонент. Поскольку нас интересует вычислительная сторона дела, я попрошу описать мне следующий уровень разбиения именно области вычислений. Это разбиение приведено на рис 6.2.
Можно заметить, что отдельные элементы второго уровня сложнейшим образом переплетаются между собой. Выбор покупаемых нами дисплеев (аппаратура) и то, что мы собираемся на них высвечивать, очень сильно влияет на 1) процедуры и 2) людей, а возможно, и на 4) входные данные и 5) распределение. Помните, существует только одна система — Вселенная, все остальные системы имеют прорехи! Теперь перейдем к третьему уровню (рис. 6.3). Пока мы отбросим подсистемы 1, 2, 4 и 5, в реальной же ситуации этого сделать нельзя (описывать эти подсистемы нам не позволяет размер книги). Все нами сказанное остается верным и при переходе на уровень 4 (см. также рис. 6.3).
На четвертом уровне, как и на всех других, мы можем произвольно выбирать дальнейшее разбиение системы. На этом уровне мы можем составить дополнительные системы классификации, для примера мы остановимся на схеме уровня 5 (рис. 6.4).
Нам нужно выяснить, почему платежные чеки оказываются неправильными, для этого нужно изучить программы, работающие в фазе использования. Два оставшихся раздела программного обеспечения будут нами исследоваться только в том случае, если проблемы фазы использования приведут нас назад к одному, а то и к обоим этим разделам. Перейдем к уровню 6 (рис. 6.5). Здесь мы показываем обе ветви, указывая в скобках авторов программ.
Ограниченный объем книги опять не позволяет нам привести полный список всех выполняемых отдельных программ. Мы могли бы и должны были бы продолжить составление диаграммы уровня 7, на которой надо показать модули всех программ, но опять-таки на это не хватает места. Матричная диаграмма в табл. 6.1 показывает, какого рода подробности нам необходимы. Теперь, если выяснится, что все проблемы относятся к области «чистой выплаты», мы начнем изучать и тестировать модули, влияющие на чистую выплату.
Таблица 6.1. Программы, выполняемые для печати платежных ведомостей
Программа | Размер | Автор |
---|---|---|
Программа выписки чеков | 8402 Стп[34] | Джонсон А. Д., отдел 4 |
Печать квитанций | 462 Стп | Шварц М. Д., отдел 5 |
Программа | 892 Стп | Дэниэлс Р. М., отдел 11 |
Удержания из заработной платы | 44 °Стп | Абадан Д. Р., отдел 442 |
Расчет даты | 414 Стп | Уитерс М. Р., уволился |
Отчет по налогам штата | 317 Стп | Джонсон А. Д., отдел 4 |
Расчет профсоюзных взносов | 219 Стп | Трэверс Д., отдел 41 |
Печать профсоюзных взносов | 44 Стп | Трэверс Д., отдел 41 |
Мы достигли достаточно точного и подробного видения проблемы. Ограничимся рассмотрением уровня 6, поскольку он более удобен для записи и чтения, хотя на практике лучше работать с более подробным уровнем 7. Мы хотим отметить все, что выполняется во время использования. Нам нужно для этого перечислить все программы, их размеры и их авторов. Результаты сведены в табл. 6.1.
Теперь для приведения такой системы в порядок, для ее доводки нам нужны люди (системные аналитики и программисты), которые понимают, что должна делать каждая программа, как эти программы взаимодействуют между собой, каким образом все выполняемые машиной программы должны составить единую систему.
Мы не ждем, что А. Д. Джонсон, автор программы выписки чеков, будет понимать, каким образом СУБД выполняет возложенные на нее обязанности. Мы можем лишь требовать от него, чтобы он знал, что может делать СУБД, как обратиться к ней с требованием выполнить работу, как проверить, что работа выполнена.
То же самое относится и ко всем другим программам. Небольшая группа старших аналитиков должна иметь возможность просмотреть все данные и с помощью авторов и поставщиков программы найти ошибку или ошибки. Ошибка может находиться в этой подсистеме на шестом уровне, но может быть и в любой другой подсистеме процедур, людей и т. д. Конечно, ошибка может быть и в способе взаимодействия какой-нибудь подсистемы с одной или несколькими другими.
Все это сложно, очень сложно, но совершенно необходимо. За несколько часов мы можем «сделать» такую ведомость, что потом ее не удастся привести в нормальное состояние и за целую неделю, даже после стократного увеличения числа людей, занятых этой работой. Мы можем это же проделать и с системой управления авиалиниями, и с другими работами.
Зачем наряду с программными системами собственного производства мы используем еще и покупные? Такой подход повышает эффективность, он более экономичен, к тому же продаются уже готовые к использованию программы.
- Системы, подсистемы и программное обеспечение
- Общесистемная незамкнутость
- Взгляд сверху вниз
- Различные подсистемы обработки данных в одной системе
- Отделение программного обеспечения от аппаратуры
- Перегрузка аппаратной подсистемы, которую можно принять за неполадку с программным обеспечением
- Стоимость и график разработки предсказать невозможно
- «Эффект заброшенных функций» при разработке больших программ
- Планирование развития
- Занятость
- Эволюционный подход к разработке больших систем
- Задачи руководства программным обеспечением проекта
- Результаты процесса разработки
- План разработки или проекта
- Производительность труда и оценки
- Производительность труда при разработке программного обеспечения
- База данных по производительности труда
- Определения терминов «строка программы» и «человеко-месяц»
- Два значения термина «строка программы»
- Категории программного обеспечения
- Определение человеко-месяца
- Изменчивость
- Вопросник по производительности труда
- Ошибки при подсчете СТП
- Форма отчетности по строкам программ
- Некоторые результаты сбора статистики
- Оценка
- Оценка размеров программы
- Факторы, определяющие трудность разработки
- Функциональные факторы
- Как проводить оценки
- Предположения при проведении оценок
- Организация усилий по разработке программного обеспечения
- Ключевые моменты больших проектов
- Надзор над разработкой
- Управление
- Экономия усилий
- Управление конфигурацией
- Автоматизированная матрица модулей/функций
- Ключ к успеху — руководитель разработки
- Выбор руководителя разработкой программного обеспечения
- Технический опыт
- Карьера разработчика программного обеспечения
- Пять стадий развития всех новых проектов
- Печальная участь первопроходцев
- Будет ли удовлетворен настоящий пользователь?
- Прослушивания
- Прослушивания очень важны
- Что необходимо выносить на прослушивания — и когда?
- Что такое «прослушивание»?
- Кто должен участвовать в прослушиваниях?
- В чем вред прослушивании?
- Отчеты на прослушиваниях — делайте их устно
- Первый выход на прослушивание или в группу инвентаризации
- Кадры и инструментарий
- Купить или сделать
- Разрабатывать самим или заказывать на стороне
- Как заказывать разработку программного обеспечения
- Вид заключаемого контракта
- Что делать, когда все идет прахом
- Поиски замены для руководителя
- Неуправляемый гигант
- Стандарты программного обеспечения
- Ничто не дается бесплатно — средства на стандартизацию тратятся с первых же шагов
- Склонность к фантазированию
- Сопротивление нововведениям
- Изменения дорого обходятся с самого начала
- Разработка или продолжающаяся разработка как наиболее дорогостоящая фаза
- Одна причина оптимистических оценок
- Научные исследования в программном обеспечении
- Отсутствие методов представления программ
- Разрабатывать программы так же, как и аппаратуру?
- Сходство между аппаратурой и программным обеспечением
- Направленность взгляда
- Вид сверху
- Firebird 2.0 - взгляд в будущее
- Команды и формирование культуры по инициативе сверху
- Как расположить Панель задач сбоку или сверху?
- Преимущество собственного взгляда на происходящее
- Взгляд на класс как на тип
- Общий взгляд на архитектуру UNIX
- Внизу обработки нижних половин
- Дистрибуторский бизнес: взгляд изнутри
- Глава 6 Файловая система NTFS — взгляд изнутри
- Взгляд бизнесмена