Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Кулямин В.В. Технологии программирования. Компонентный подход.pdf
Скачиваний:
388
Добавлен:
02.05.2014
Размер:
3.79 Mб
Скачать

Технологии программирования. Компонентный подход

В. В. Кулямин

Технологии программирования. Компонентный подход

В. В. Кулямин

Аннотация курса

Курс посвящен технологическим проблемам разработки крупномасштабных программных систем и методам решения этих проблем. В нем рассказывается о современных способах организации разработки таких систем на основе компонентных технологий на примере Web-приложений с использованием технологий Java и .NET, а также дается введение в эти технологии. Читатели получат хорошее представление о методах разработки сложного программного обеспечения, об использовании современных подходов к промышленной разработке программ и о способах построения качественных и гибких программ в условиях жестких ограничений на проекты разработки. Читатели также познакомятся с элементами технологий создания распределенных приложений на платформах J2EE и .NET.

Содержание

 

Содержание..............................................................................................................................................

1

Список рисунков..................................................................................................................................

4

Список таблиц......................................................................................................................................

6

Предисловие.............................................................................................................................................

7

Лекция 1. Проблемы разработки сложных программных систем......................................................

9

Программы «большие» и «маленькие» .............................................................................................

9

Принципы работы со сложными системами...................................................................................

14

Литература к Лекции 1......................................................................................................................

20

Лекция 2. Жизненный цикл и процессы разработки ПО...................................................................

21

Понятие жизненного цикла ПО........................................................................................................

21

Стандарты жизненного цикла ..........................................................................................................

23

Группа стандартов ISO..................................................................................................................

23

Группа стандартов IEEE ...............................................................................................................

26

Группа стандартов CMM, разработанных SEI............................................................................

26

Модели жизненного цикла................................................................................................................

30

Литература к Лекции 2......................................................................................................................

33

Лекция 3. Унифицированный процесс разработки и экстремальное программирование..............

35

«Тяжелые» и «легкие» процессы разработки.................................................................................

35

Унифицированный процесс Rational ...............................................................................................

35

Экстремальное программирование..................................................................................................

44

Литература к Лекции 3......................................................................................................................

47

Лекция 4. Анализ предметной области и требования к ПО..............................................................

48

Анализ предметной области.............................................................................................................

48

Выделение и анализ требований......................................................................................................

53

Варианты использования..................................................................................................................

56

Литература к Лекции 4......................................................................................................................

59

Лекция 5. Качество ПО и методы его контроля.................................................................................

60

Качество программного обеспечения..............................................................................................

60

Методы контроля качества...............................................................................................................

66

Тестирование..................................................................................................................................

67

Проверка на моделях.....................................................................................................................

70

Ошибки в программах.......................................................................................................................

71

Литература к Лекции 5......................................................................................................................

73

Лекция 6. Архитектура программного обеспечения..........................................................................

75

Анализ области решений..................................................................................................................

75

Архитектура программного обеспечения........................................................................................

75

Разработка и оценка архитектуры на основе сценариев................................................................

79

1

UML. Виды диаграмм UML..............................................................................................................

83

Статические диаграммы................................................................................................................

83

Динамические диаграммы............................................................................................................

87

Литература к Лекции 6......................................................................................................................

90

Лекция 7. Образцы проектирования....................................................................................................

91

Образцы человеческой деятельности ..............................................................................................

91

Образцы анализа................................................................................................................................

94

Архитектурные стили........................................................................................................................

96

Каналы и фильтры.........................................................................................................................

99

Многоуровневая система............................................................................................................

102

Литература к Лекции 7....................................................................................................................

106

Лекция 8. Образцы проектирования (продолжение)........................................................................

107

Данные–представление–обработка............................................................................................

107

Образцы проектирования................................................................................................................

111

Подписчик....................................................................................................................................

111

Идиомы.............................................................................................................................................

113

Шаблонный метод.......................................................................................................................

113

Образцы организации и образцы процессов.................................................................................

115

Инспекция программ по Фагану................................................................................................

116

Литература к Лекции 8....................................................................................................................

118

Лекция 9. Принципы создания удобного пользовательского интерфейса.....................................

119

Удобство использования программного обеспечения.................................................................

119

Психологические и физиологические факторы............................................................................

121

Человеку свойственно ошибаться..............................................................................................

121

Скоростные показатели деятельности человека.......................................................................

122

Внимание человека......................................................................................................................

124

Понятность...................................................................................................................................

125

Память человека...........................................................................................................................

126

Разные категории пользователей...............................................................................................

127

Факторы удобства использования и принципы создания удобного ПО....................................

127

Методы разработки удобного программного обеспечения.........................................................

130

Контроль удобства программного обеспечения...........................................................................

134

Литература к Лекции 9....................................................................................................................

136

Лекция 10. Основные конструкции языков Java и C#......................................................................

138

Платформы Java и .NET ..................................................................................................................

138

Лексика.............................................................................................................................................

140

Общая структура программы .........................................................................................................

143

Базовые типы и операции над ними ..............................................................................................

147

Логический тип............................................................................................................................

147

Целочисленные типы...................................................................................................................

148

Типы чисел с плавающей точкой...............................................................................................

150

Инструкции и выражения...............................................................................................................

151

Выражения....................................................................................................................................

151

Инструкции ..................................................................................................................................

155

Пользовательские типы...................................................................................................................

163

Литература к Лекции 10..................................................................................................................

172

Лекция 11. Основные конструкции языков Java и C# (продолжение) ...........................................

174

Наследование ...............................................................................................................................

174

Элементы типов...........................................................................................................................

176

Шаблонные типы и операции.....................................................................................................

191

Дополнительные элементы описания операций.......................................................................

194

Описание метаданных.................................................................................................................

196

Средства создания многопоточных программ..............................................................................

198

Библиотеки.......................................................................................................................................

201

2

Литература к Лекции 11..................................................................................................................

209

Лекция 12. Компонентные технологии и разработка распределенного ПО..................................

210

Основные понятия компонентных технологий............................................................................

210

Общие принципы построения распределенных систем...............................................................

214

Синхронное и асинхронное взаимодействие................................................................................

218

Транзакции.......................................................................................................................................

222

Литература к Лекции 12..................................................................................................................

224

Лекция 13. Компонентные технологии разработки Web-приложений..........................................

226

Web-приложения..............................................................................................................................

226

Расширяемый язык разметки XML................................................................................................

227

Платформа Java 2 Enterprise Edition...............................................................................................

228

Связь..............................................................................................................................................

230

Именование..................................................................................................................................

233

Процессы и синхронизация........................................................................................................

235

Целостность..................................................................................................................................

235

Отказоустойчивость....................................................................................................................

236

Защита...........................................................................................................................................

236

Работа с XML ...............................................................................................................................

237

Платформа .NET ..............................................................................................................................

238

Связь..............................................................................................................................................

238

Именование..................................................................................................................................

241

Процессы и синхронизация........................................................................................................

241

Целостность..................................................................................................................................

241

Отказоустойчивость....................................................................................................................

242

Защита...........................................................................................................................................

242

Работа с XML ...............................................................................................................................

242

Литература к Лекции 13..................................................................................................................

243

Лекция 14. Разработка различных уровней Web-приложений в J2EE и .NET ..............................

244

Общая архитектура Web-приложений...........................................................................................

244

Уровень бизнес-логики и модели данных в J2EE.........................................................................

245

Компоненты данных и сеансовые компоненты........................................................................

246

Компоненты, управляемые сообщениями.................................................................................

252

Дескрипторы развертывания компонентов EJB .......................................................................

253

Уровень модели данных в .NET.....................................................................................................

257

Протокол HTTP................................................................................................................................

258

Уровень пользовательского интерфейса в J2EE...........................................................................

260

Сервлеты.......................................................................................................................................

261

Серверные страницы Java ...........................................................................................................

262

Уровень пользовательского интерфейса в .NET ..........................................................................

267

Литература к Лекции 14..................................................................................................................

269

Лекция 15. Развитие компонентных технологий..............................................................................

270

Развитие технологий J2EE ..............................................................................................................

270

Jakarta Struts..................................................................................................................................

271

Java Server Faces...........................................................................................................................

273

Управление данными приложения. Hibernate...........................................................................

273

Java Data Objects ..........................................................................................................................

276

Enterprise Java Beans 3.0 ..............................................................................................................

276

Среда Spring .................................................................................................................................

276

Ajax................................................................................................................................................

278

Web-службы.....................................................................................................................................

279

Описание интерфейса Web-служб.............................................................................................

280

Связь..............................................................................................................................................

281

Именование..................................................................................................................................

281

Процессы......................................................................................................................................

282

3

Синхронизация и целостность....................................................................................................

282

Отказоустойчивость....................................................................................................................

282

Защита...........................................................................................................................................

283

Литература к Лекции 15..................................................................................................................

283

Лекция 16. Управление разработкой ПО...........................................................................................

285

Задачи управления проектами........................................................................................................

285

Окружение проекта..........................................................................................................................

288

Структура организации-исполнителя проекта..........................................................................

288

Организационная культура.........................................................................................................

289

Заинтересованные в проекте лица .............................................................................................

290

Виды деятельности, входящие в управление проектом...............................................................

291

Управление содержанием проекта и качеством.......................................................................

293

Метрики ПО.................................................................................................................................

294

Управление ресурсами................................................................................................................

298

Специфика управления персоналом..........................................................................................

301

Управление рисками....................................................................................................................

308

Управление коммуникациями и информационным обеспечением........................................

310

Литература к Лекции 16..................................................................................................................

313

Список рисунков

 

Рисунок 1. Схема зависимостей между лекциями. ..................................................................................

8

Рисунок 2. Стандарты, описывающие структуру жизненного цикла ПО............................................

29

Рисунок 3. Последовательность разработки согласно «классической» каскадной модели...............

31

Рисунок 4. Ход разработки, предлагаемый в статье [13].......................................................................

31

Рисунок 5. Возможный ход работ по итеративной модели...................................................................

32

Рисунок 6. Изображение хода работ по спиральной модели согласно [15].........................................

33

Рисунок 7. Пример хода работ на фазе начала проекта.........................................................................

36

Рисунок 8. Пример хода работ на фазе проектирования. ......................................................................

37

Рисунок 9. Пример хода работ на фазе построения. ..............................................................................

37

Рисунок 10. Пример хода работ на фазе внедрения. ..............................................................................

38

Рисунок 11. Основные артефакты проекта по RUP и потоки данных между ними............................

39

Рисунок 12. Пример варианта использования и действующих лиц. ....................................................

40

Рисунок 13. Пример модели анализа для одного варианта использования.........................................

40

Рисунок 14. Распределение работ между различными дисциплинами в проекте по RUP.................

43

Рисунок 15. Схема потока работ в XP. ....................................................................................................

45

Рисунок 16. Схема деятельности компании в нотации Йордана-ДеМарко. ........................................

50

Рисунок 17. Схема деятельности компании в нотации Гэйна-Сарсона. ..............................................

51

Рисунок 18. Детализация процесса "Управление персоналом". ...........................................................

52

Рисунок 19. Модель сущностей и связей. ...............................................................................................

52

Рисунок 20. Соотношение между проблемами, потребностями, функциями и требованиями. ........

54

Рисунок 21. Набросок диаграммы вариантов использования для Интернет-магазина. .....................

57

Рисунок 22. Доработанная диаграмма вариантов использования для Интернет-магазина................

58

Рисунок 23. Основные аспекты качества ПО по ISO 9126....................................................................

61

Рисунок 24. Характеристики и атрибуты качества ПО по ISO 9126....................................................

63

Рисунок 25. Схема процесса тестирования. ............................................................................................

68

Рисунок 26. Схема процесса проверки свойств ПО на моделях...........................................................

70

Рисунок 27. Примерная архитектура авиасимулятора...........................................................................

77

Рисунок 28. Пример работы индексатора текста....................................................................................

81

Рисунок 29. Архитектура индексатора в стиле каналов и фильтров....................................................

81

Рисунок 30. Архитектура индексатора в стиле репозитория. ...............................................................

82

Рисунок 31. Диаграмма классов. ..............................................................................................................

84

Рисунок 32. Диаграмма объектов.............................................................................................................

85

Рисунок 33. Диаграмма компонентов......................................................................................................

86

4

Рисунок 34. Диаграмма развертывания...................................................................................................

86

Рисунок 35. Диаграмма активности.........................................................................................................

87

Рисунок 36. Пример диаграммы сценария открытия счета...................................................................

88

Рисунок 37. Диаграмма взаимодействия, соответствующая диаграмме сценария на Рис. 36. ..........

88

Рисунок 38. Пример диаграммы состояний, моделирующей сайт Интернет-магазина. ....................

89

Рисунок 39. Структура классов-участников образца адаптер...............................................................

92

Рисунок 40. Класс для представления величин, имеющих разные единицы измерения....................

94

Рисунок 41. Представление возможных преобразований между единицами измерений. .................

95

Рисунок 42. Представление составных единиц измерений...................................................................

95

Рисунок 43. Набор классов для представления результатов измерений..............................................

95

Рисунок 44. Набор классов для представления результатов как измерений, так и наблюдений. .....

96

Рисунок 45. Пример структуры классов для образца каналы и фильтры. .........................................

100

Рисунок 46. Сценарий работы проталкивающего фильтра. ................................................................

100

Рисунок 47. Сценарий работы вытягивающего фильтра.....................................................................

100

Рисунок 48. Сценарий работы буферизующего и синхронизующего канала....................................

101

Рисунок 49. Пример структуры многоуровневой системы.. ...............................................................

103

Рисунок 50. Составной сценарий пересылки сообщения по сети. .....................................................

104

Рисунок 51. Структура классов модели, представления и обработчика............................................

108

Рисунок 52. Сценарий обработки действия пользователя...................................................................

108

Рисунок 53. Сценарий инициализации системы...................................................................................

109

Рисунок 54. Структура классов подписчиков и издателя....................................................................

111

Рисунок 55. Сценарий оповещения об изменениях по схеме вытягивания.......................................

112

Рисунок 56. Сценарий работы шаблонного метода. ............................................................................

114

Рисунок 57. Что это? Лень или ошибка программиста? ......................................................................

121

Рисунок 58. Почему 11,3 — неправильное число?...............................................................................

122

Рисунок 59. Добираться до меню в MacOS несколько удобнее, чем в Windows ..............................

123

Рисунок 60. Антинаглядность. "Кнопка" Next не нажимается. ..........................................................

126

Рисунок 61. Модель ролей пользователей банкомата..........................................................................

131

Рисунок 62. Пример модели содержимого контекста взаимодействия..............................................

132

Рисунок 63. Часть карты навигации редактора Microsoft Word..........................................................

133

Рисунок 64. Взаимосвязи и распределение деятельностей во времени. ............................................

134

Рисунок 65. Основные элементы компонентного программного обеспечения. ...............................

213

Рисунок 66. Синхронное взаимодействие.............................................................................................

218

Рисунок 67. Схема разработки компонентов, взаимодействующих с помощью RPC......................

219

Рисунок 68. Схема реализации удаленного вызова процедуры..........................................................

220

Рисунок 69. Асинхронное взаимодействие...........................................................................................

221

Рисунок 70. Реализация асинхронного взаимодействия при помощи очередей сообщений...........

222

Рисунок 71. Схема реализации поддержки распределенных транзакций..........................................

223

Рисунок 72. Типовая архитектура J2EE приложения...........................................................................

230

Рисунок 73. Типовая архитектура Web-приложения на основе .NET................................................

238

Рисунок 74. Общая схема архитектуры Web-приложений J2EE и .NET. ..........................................

244

Рисунок 75. Жизненный цикл EJB компонента данных......................................................................

248

Рисунок 76. Жизненный цикл сеансового компонента с состоянием. ...............................................

248

Рисунок 77. Жизненный цикл сеансового компонента без состояния...............................................

249

Рисунок 78. Пример схемы БД...............................................................................................................

249

Рисунок 79. Общая схема архитектуры Web-приложений на основе Struts......................................

272

Рисунок 80. Реляционное представление данных о книгах и авторах. ..............................................

274

Рисунок 81. Схема архитектуры приложений на основе Web-служб. ...............................................

279

Рисунок 82. Взаимоотношения между заинтересованными лицами проекта. ..................................

291

Рисунок 83. Пример структуры работ проекта, построенной на основе декомпозиции задач........

293

Рисунок 84. Пример структуры работ проекта, построенной на основе результатов. .....................

294

Рисунок 85. Схема системы при оценке ее сложности в функциональных точках. .........................

295

Рисунок 86. Пример сетевой диаграммы проекта. ...............................................................................

298

Рисунок 87. PERT-диаграмма для рассматриваемого примера проекта. ...........................................

299

5

Рисунок 88. Диаграмма Ганта для рассматриваемого примера проекта............................................

300

Рисунок 89. График рассматриваемого проекта, построенный с учетом доступных ресурсов.......

300

Рисунок 90. Производительность новых сотрудников в проекте.......................................................

302

Рисунок 91. Иерархия человеческих потребностей. ............................................................................

303

Рисунок 92. Развитие подчиненного в координатах способности и желания. ..................................

305

Рисунок 93. Выбор стратегии проведения переговоров. .....................................................................

313

Список таблиц

 

Таблица 1. Процессы жизненного цикла ПО по ISO 12207. .................................................................

23

Таблица 2. Процессы жизненного цикла систем по ISO 15288. ...........................................................

24

Таблица 3. Процессы жизненного цикла ПО и систем по ISO 15504. .................................................

25

Таблица 4. Количество ключевых практик в разных областях процесса по CMM версии 1.1..........

28

Таблица 5. Схема Захмана. Приведены примеры моделей для отдельных клеток.............................

49

Таблица 6. Итоги оценки двух вариантов архитектуры индексатора. .................................................

83

Таблица 7. Некоторые архитектурные стили..........................................................................................

98

Таблица 8. Первичные и вторичные документы на разных этапах разработки. ...............................

117

Таблица 9. Описание обычного и сущностного вариантов использования.......................................

132

Таблица 10. Приоритет и ассоциативность операторов. .....................................................................

152

Таблица 11. Представления специальных символов в XML...............................................................

228

Таблица 12. Некоторые коды статуса ответа HTTP и их объяснение. ...............................................

259

Таблица 13. Работы проекта, сетевая диаграмма которого показан на Рис. 86.................................

299

6