Главная Случайная страница


Полезное:

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


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Цифровые системы





Тенденции и принципы проектирования сложных систем.

Учебное пособие

 

Оглавление

Введение. 4

1 Ключевые приемы разработки сложных систем.. 9

1.1 Разделение труда, кооперация предприятий. 9

1.2 Промежуточный продукт, расширение рынка, усложнение продукта. 11

1.3 Декомпозиция сложных систем. 13

1.4 Агрегирование. 14

1.5 Проблемы стыковки подсистем. Инфраструктура системы.. 16

1.6 Системы с открытой архитектурой. 20

1.7 Общесистемные ресурсы.. 25

1.8 Многоуровневые структуры.. 26

1.9 Основная проблема проектирования. 27

2 Цифровые системы.. 31

2.1 Программные технологии. 34

2.2 Низкоуровневое программирование. 35

2.3 Языки высокого уровня. 37

2.4 Объектно-ориентированные языки. 38

2.5 Графические языки, CASE-технологии. 40

2.6 Идиомы. Паттерны проектирования. 42

2.7 Роль архитектуры.. 45

2.8 Каркасы, фреймворки. 48

2.9 Рефакторинг. 51

2.10 Проблема увязки конкурирующих технологий. 51

2.11 Увязка языков программирования. Декомпозиция программ на исполнимые модули. 53

2.12 Многозадачность. 55

2.13 Сетевые ОС.. 57

2.14 Удаленный вызов процедур. 57

2.15 Программное обеспечение промежуточного слоя. 59

2.16 Кроссплатформенность. 62

2.17 Виртуальная машина. 64

2.18 Технологии Java. 67

2.19.NET Framework. 69

2.20 Протокол SOAP. 71

2.21 Веб-службы.. 75

2.22 Сервис-ориентированные архитектуры.. 76

2.23 Серебряная пуля. 79

3 Организация процесса разработки программного обеспечения. 82

3.1 Эволюция процессов разработки программного обеспечения. 82

3.2 Автоматизация разработки. 88

3.3 Когда базар строит собор. 91

3.4 Какая организация процесса разработки лучше. 98

4 Примеры организации систем.. 100

4.1 Эволюция информационных систем предприятия. 100

4.2 Интеграция систем. 108

4.3 Монолитные системы.. 109

4.4 Сервис-ориентированные системы реального времени. 111

4.5 Интернет. 120

4.6 Всемирная паутина. 123

4.7 Причины успеха Интернета. 125

Выводы.. 127

Литература. 129

 

Введение

Относительно недавно человечество вступило в качественно новый этап технического развития. Этот этап характеризуется появлением и стремительным развитием систем глобального масштаба, охватывающих весь Земной шар. Подобные системы сложны настолько, что традиционные методы и представления не позволяют человеческому мозгу воспринимать их во всей полноте. Для проектирования систем такого масштаба нужны новые технологии. Эти технологии пока только формируются, бурно и хаотично, но в них уже можно проследить ключевые принципы, которые становятся общепринятой нормой проектирования. При внимательном рассмотрении оказывается, что большинство принципов проектирования известны достаточно давно, однако с усложнением систем их значимость возрастает многократно. Следование этим принципам, особенно в сочетании с современным инструментарием, приносит удивительно эффективные результаты не только в масштабных системах, но и в сравнительно небольших.

Цель данного пособия – продемонстрировать ключевые принципы и тенденции проектирования сложных систем на показательных примерах из реальной жизни; сформировать общее понимание и терминологию проблемной области. Пособие направлено на то, чтобы помочь студентам и начинающим разработчикам максимально перенять накопленный человечеством передовой опыт проектирования.

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

Каждый может согласиться с поговоркой: «Одна голова хорошо, а две – лучше». Еще больше потенциальных возможностей у коллектива из десятков и сотен разработчиков. А если разработчиков миллион? В таком случае возможен качественно новый результат, своего рода синергия усилий большого числа квалифицированных участников разработки.

Данный феномен давно осознан мировым сообществом и воспринимается, как сам собой разумеющийся факт. Проблемы возникают в другом. А именно, где найти квалифицированных разработчиков? Как эффективно наладить их совместную работу? Где взять средства для оплаты их труда?

В современном мире найдены эффективные инструменты решения перечисленных проблем. Эти инструменты постоянно совершенствуются. Примером могут быть такие транснациональные компании, как Microsoft, Google, Intel, IBM, Apple, Boeing, Airbus и пр. Количество сотрудников каждой такой компании составляет десятки, а то и сотни тысяч. Филиалы расположены в десятках стран мира. Изучение их деятельности позволяет бесплатно перенять драгоценный опыт коллективной разработки и управления большими проектами.

Грамотное использование современных технологий позволяет добиться небывалой производительности разработок. Существуют примеры, когда удачная организация коллективного труда позволяет небольшой группе разработчиков-координаторов конкурировать с мировыми гигантами. Одним из таких примеров является ОС Linux. Этот проект, начатый Линусом Торвальдсом в 1991 г, вскоре завоевал лидирующие позиции в таких сегментах рынка, как суперкомпьютеры, серверы, встраиваемые, мобильные системы и пр. В свое время он был одним из основных конкурентов ОС Windows корпорации Microsoft. Значимость коллективного труда для успеха ОС Linux выражается одним из т.н. законов Линуса: «при достаточном количестве глаз ошибки выплывают на поверхность» (англ. «given enough eyeballs, all bugs are shallow»).

ОС Linux является лишь одним из примеров успешного использования коллективного труда, а не панацеей на все случаи. Из каждого проекта, даже неудачного, при внимательном анализе можно извлечь полезные выводы. По этой причине в пособии рассматривается множество показательных примеров, как удачных, так и не очень.

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

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

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

2. Использование опыта предшествующих поколений. Проекты редко рождаются на пустом месте. Практически всегда имеются прототипы, наработки, технологии, методики, документация и пр., знакомство с которыми позволяет перенять опыт. Часто предшествующие наработки используются непосредственно в виде отдельных модулей или подсистем в новом продукте или, наоборот, в продукте-предшественнике меняются (модифицируются) некоторые из модулей. В современном мире невозможно говорить о конкурентоспособности проекта, если он не обладает преемственностью. Для тех фирм, которые не умеют накапливать знания и каждый новый проект начинают «с нуля» используется показательный термин «организационное слабоумие» [6].

3. Опыт сторонних разработчиков заимствуется при закупке комплектующих для разрабатываемого изделия. Зачастую выгоднее купить готовый компонент у производителя, чем разрабатывать его своими силами. При этом можно не только сэкономить ресурсы, но и выиграть в качестве (производитель специализируется на данных компонентах).

4. Приобретать можно не только готовые комплектующие, но и инструментарий для разработок. Сюда относятся как физические устройства, так и технологии, модели, программное обеспечение и пр. В инструментах воплощен опыт их разработчиков.

5. Автоматизация разработки (различного рода САПР) – еще один пример использования опыта сторонних разработчиков, которые вложили свои знания в автоматы. Особая привлекательность автоматов в снижении человеческого фактора, субъективных решений и ошибок.

6. Бесплатно можно перенимать опыт через службы технической поддержки, на интернет-форумах разработчиков, конференциях и пр. Очень полезно знакомство с т. н. открытыми проектами, например, проектами с открытым исходным кодом программ. Существует множество сравнительно недорогих и информативных обучающих курсов. Широко распространена практика привлечения консалтинговых компаний и т.д.

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

Оказывается, что эффективность коллективного труда в значительной мере определяется не только взаимодействием между разработчиками, но и внутренней организацией проектируемой технической системы, ее архитектурой. Чем больше и сложнее система, тем большее значение имеет ее архитектура. Этим и другим подобным вопросам в пособии уделяется значительное внимание.

Date: 2015-09-24; view: 381; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.007 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию