В каком направлении движутся исследования программной архитектуры и их практические результаты? Мы не более проницательны, чем многие другие, что, впрочем, совершенно не означает, что мы воздержимся от прогнозов. Помимо расширения возможностей методик проектирования, развития инструментов жизненного цикла в сторону упрочения позиций архитектурной информации, а также усложнения стандартных блоков компонентов, мы возьмем на себя смелость предположить направление дальнейшего развития архитектуры в целом.
Когда Фреда Брукса однажды спросили, почему его книга «Мифический человеко-месяц» стала хрестоматийной, он ответил в том духе, что книга на самом деле не о компьютерах, а о людях. С программной инженерией — то же самое. Дэйв Парнас очень удачно сформулировал различие между программированием и программной инженерией. По его мнению, для продуктов, которые разрабатывает один человек в единственной версии, программирования вполне достаточно. Однако если вы предполагаете, что с продуктом будут работать сторонние пользователи (или хотя бы хотите впоследствии дать ему самостоятельную оценку), без программной инженерии не обойтись. Те же слова можно сказать и про архитектуру Если бы наши заботы ограничивались вычислением правильного ответа, хватило бы банальной монолитной архитектуры. Архитектура нужна для удовлетворения потребностей тех людей, которые будут работать с проектируемой системой, — она обеспечивает достаточную производительность, позволяет укладываться в рамки бюджета, достигать желаемых выгод, консолидировать коллектив разработчиков, упрощать задачи специалистов по сопровождению и, наконец, растолковывать суть системы заинтересованным лицам.
Учитывая все эти обстоятельства, мы сделаем прогноз, в котором уверены на все сто. Позиции архитектуры будут сохраняться до тех пор, пока в проектировании и разработке программных средств участвуют живые люди.
ПРОГРАММНАЯ АРХИТЕКТУРА В ОБРАЗОВАНИИ
В этой главе мы обсудили техническую будущность программной архитектуры и изложили наши соображения по поводу ее дальнейшего развития. Но есть и другой вопрос — какое место займет изучение архитектуры в будущих образовательных программах в области программной инженерии? Наблюдательный читатель, вероятно, заметил, что в написании этой книги участвовали три члена семейства Бассов. Я получил степень бакалавра математики в 1964 году, Таня стала бакалавром компьютерных наук в 1991-м, а Мэтт — в 2000-м. Из моего опыта и опыта членов моей семьи можно сделать некоторые выводы.
К моменту получения диплома я видел компьютер один раз в жизни (нас водили на экскурсию лишь затем, чтобы его увидеть). Я абсолютно ничего не смыслил в программировании и принципах работы компьютеров. Естественно, меня сразу взяли на работу программистом. Мир тогда был совсем другим.
Знания, которыми нас пичкают в школе, быстро устаревают, и если мы собираемся заниматься своим делом профессионально на протяжении тридцати или даже сорока лет и при этом хотим оставаться на передовой, необходимо постоянно учиться.
Таня, получив диплом, уже знала несколько языков программирования, в том числе С; курс по С++ в ее время еще не читался, равно как и курсы по основам объектно-ориентированной технологии. Когда выпускником стал Мэтт, он тоже успел изучить несколько языков программирования, но уже других — в частности, С++ и Java. Кроме того, он имел представление об объектно-ориентированном проектировании.
Итак, за девять лет в учебный план вошли объектно-ориентированные языки и соответствующие методики. Мэтт не изучал архитектуру, однако к моменту его выпуска курсы по программной архитектуре успели войти в норму на старших курсах и начали появляться на младших.
Получив образование, Мэтт освоил значительно больше элементов абстракции и проектирования, чем Таня, и эта тенденция, конечно, будет продолжаться. Таким образом, по моему мнению, к 2010 году курсы программной архитектуры на младших курсах станут совершенно обычным явлением, а в некоторых университетах на этом уровне будет предусмотрено сразу несколько дисциплин. Выпускников-специалистов в области программной архитектуры будет уже в достатке.
Мы надеемся на то, что материал, изложенный в этой книге, в 2010 году будет читаться в университетах, и на то, что наш курс программной архитектуры не будет единственным.
-LJB
AAS
(Advanced Automation System) Комплексная система автоматизации — наименование запланированных мероприятий по сплошной реконструкции американской системы управления воздушным движением
ABC
(Architecture Business Cycle) Архитектурно-экономический цикл
(Common Operating System Environment) Общее операционное окружение
COTS
(Commercial Off-the-Shelf) Коммерческий коробочный продукт - обозначение программного обеспечения и компонентов, представленных на рынке в готовом виде
CPU
(Central Processing Unit) Центральный процессор
CSC
(Computer Software Components) Компоненты компьютерных программ
CSCI
(Computer Software Configuration Item) Элемент конфигурации компьютерных программ — компонент программного обеспечения
CSCW
(Computer Supported Cooperative Work) Совместная работа на базе ЭВМ
C3
(Command, Control, and Communications) Командование, управление и связь
DAWG
(Data Access Working Group) Рабочая группа по доступу к данным
DBMS
(Database Management Systems) Система управления базами данных
DMZ
(Demilitarized Zone) Демилитаризованная зона
DSRGM
(Decision Support and Report Generation Manager) Диспетчер принятия решений и составления отчетов
ECS
(Earth Core System) Центральная информационная система наблюдения за поверхностью Земли
EDARC
(Enhanced Direct Access Radar Channel) Расширенный радиолокационный канал прямого доступа в составе системы ISSS
EFC
(EDARC Format Conversion) Программа преобразования форматов EDARC — приложение в составе элемента управления выводом данных на экран
EIS
(EDARC Interface Software) Интерфейсная программа EDARC — приложение в составе элемента «Общие системные службы»
EJB
(EnterpriseJavaBeans) Система корпоративных JavaBeans, архитектурная спецификация Enterprise JavaBeans
EOS
(Earth Observing System) Система наблюдения за поверхностью Земли
EOSDIS
(Earth Observing System Data System Information System) Информационная система наблюдения за поверхностью Земли
ESI
(External System Interface) Внешний системный интерфейс
(Federal Aviation Administration) Федеральное авиационное агентство США, заказчик системы ISSS
FAR
(Federal Acquisition Regulations) Федеральные правила приобретений
FG
(Functional Group) Функциональная группа — приложение, которое в составе системы ISSS не проявляет отказоустойчивость (то есть не является операционным блоком)
FIFO
(First-In/First-Out) Первым пришел — первым обслужен
(Inertial Measurement System) Инерциальная система измерений
IP
(Internet Protocol) Интернет-протокол
ISO
(International Organization for Standardization) Международная организация по стандартизации
ISSS
(Initial Sector Suite System) Основная система контроля секторов — система, которая, согласно первоначальным планам, должна была устанавливаться во всех транзитных центрах управления воздушным движением; соответствующий конкретный пример рассматривается в главе 6
ISV
(Independent Software Vendor) Независимый поставщик программного обеспечения
IT
(Information Technology) Информационная технология
JDBC
(Java Database Connectivity) Java-интерфейс связи с базами данных
JMS
(Java Messaging Service) Служба сообщений Java
JNDI
(Java Naming and Directory Interfасе) Java-интерфейс именования и каталогов
(Primary Address Space) Основное адресное пространство — копия приложения, которое фактически исполняет все функции ISSS; см. также SAS
PCTE
(Portable Common Tools Environment) Переносимые универсальные инструменты
PDF
(Portable Document Format) Формат портативных документов
PICS
(Platform for Internet Content Selection) Платформа отбора информации в Интернете
PMS
(Prepare Messages) Подготовка сообщении — приложение в составе элемента «Общие системные службы» системы ISSS
RCS
(Revision Control Svstem) Система управления пересмотром проектных решении
RISC
(Reduced Instruction Set Chip) Микросхема с сокращенным набором команд
RMI
(Remote Method Invocation) Удаленный вызов методов
ROOM
(Real-Time Object-Oriented Modeling) Объектно-ориентированное моделирование в реальном времени
RPC
(Remote Procedure Call) Удаленный вызов процедуры
RUP
(Rational Unified Process) Рациональный унифицированный процесс
SAAM
(Software Architecture Analysis Method) Метод анализа программной архитектуры
SAR
(System Analysis And Recording) Анализ и регистрация операций системы — функция системы ISSS, а также приложение в рамках функций записи, анализа и воспроизведения
SAS
(Standby (Secondary) Address Space) Резервное (вторичное) адресное пространство — резервная копия приложения в системе ISSS, заменяющее PAS в случае его отказа
SCR
(Software Cost Reduction) Проект по снижению издержек производства программного обеспечения систем ВМС США
SEI
(Software Engineering Institute) Институт программной инженерии
SIMD
(Single Instruction, Multiple Data) Архитектура с одним потоком команд и множеством потоков данных
SLOC
(Source Lines of Code)...строк исходного кода
SMMM
(System Monitor And Mode Management) Программа системного мониторинга и управления режимами
SQL
(Structured Query Language) Язык структурированных запросов
(Technical Architecture for Information Management) Техническая архитектура управления информацией
TARGET
(Theater-Level Analysis, Replanning and Graphical Execution Toolbox) Инструментальный комплекс анализа операций на театре военных действий, оперативного планирования и графического оформления
TCA
(Terminal Control Area) Узловой диспетчерский район
TCP
(Transmission Control Protocol) Протокол управления передачей
TCP/IP
(Transmission Control Protocol/Internet Protocol) Протокол управления передачей/Интернет-протокол
UDDI
(Universal Description, Discovery, and Integration) Универсальная система предметного описания и интеграции
UI
(User Interface) Пользовательский интерфейс
UML
(Unified Modeling Language) Унифицированный язык моделирования
(eXtensible Markup Language) Расширяемый язык разметки
[1] Модуль банка данных демонстрирует пример использования архитектурного образца классной доски (ем. главу 5 «Реализация качества»).
[2] Источник: приводится но изданию (Clements 02а) (адаитирошшпая версия).
[3] Эта упрощенная методика довольно часто применяется в ходе мозгового штурма.
[4] На анализ первого сценария всегда уходит больше всего времени — в некоторых случаях в три раза больше, чем в среднем.
[5] Джей Асунди (Jai Asundi) занимается преподавательской работой в Техасском университете (Даллас).
[6] И рамках данного конкретного примера мы покажем только сокращенный набор сценарной.
[7] Апиа Лиу (Anna Liu) — старший научный сотрудник и группе по программной архитектуре и технологиям (Software Architecture and Technologies Group) при научно-промышленной исследовательской организации Содружества Наций (Commonwealth Scientific Industrial Research Organization, CS1RO) (Сидней, Австралия) и одновременно адъюнкт-профессор Сиднейского университета.
[8] Все перечисленные специалисты работают в корпорации Inmedius (Питтсбург, США).
[9] Бизнес-делегат выступает в роли фасада компонента — он обнаруживает его и предоставляет его функции остальным элементам приложения. Таким образом, бизнес-делегат должен знать, как обнаружить компонент, как к нему обратиться и как скрыть соответствующие детали от остального приложения. К примеру, если компонент реализован в виде EJB, бизнес-делегат выполняет предусмотренные Java-интерфейсом именования и каталогов Gava Naming Directory Interface, JNDI) операции поиска и тем самым сужает удаленный (remote) интерфейс EJB. При этом факт реализации данного компонента в виде EJB скрывается. Приложение не отвечает за управление жизненным циклом компонента — эту функцию выполняют KoiiTetinepuJ2EE. С другой стороны, в связи с делегированием перед приложением стоит задача выбора коммонента(ов). Кроме того, в приложении присутствует логика, регулирующая взаимодействие и взаимоотношения между компонентами. Она очевидным образом принадлежит приложению. При условии следования этому правилу реализация компонентов упрощается, а их взаимозависимость уменьшается.
[10] Роберт С. Сикорд (Robert С. Seacord) — старший научный сотрудник Института программной инженерии; Мэтью Басс (Matthew Bass) — младший научный сотрудник того же учреждения.
Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет
studopedia.su - Студопедия (2013 - 2025) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав!Последнее добавление