Как создать ИС, чтобы тебя не проклинал коллега?

Размер: px
Начинать показ со страницы:

Download "Как создать ИС, чтобы тебя не проклинал коллега?"

Транскрипт

1 Как создать ИС, чтобы тебя не проклинал коллега? Программистам об ИТ, семинар 3/6 Санкт-Петербург Декабрь, 2009 Сергей Кузнецов Руководитель Технологического отдела Рексофт 1

2 «Программистам об ИТ»: Цель Осознание Понимание 2

3 «Программистам об ИТ»: Цель Software Architecture Jedi Master Системный архитектор Ведущий разработчик Разработчик Программист 3

4 В предыдущих сериях 4

5 «Программистам об ИТ»: Семинары Архитектуры ИС Микроархитектура/макроархитектура ИС Как создать ИС, чтобы тебя не проклинал админ заказчика? Как создать ИС, чтобы тебя не проклинал пользователь? Помни о security 5

6 Базовые функции ИС Приложение Пользовательский интерфейс Бизнес логика Управление данными Пользовательский интерфейс - все, что связано с взаимодействием с пользователем: нажатие кнопок, движение мыши, отрисовка изображение, вывод результатов поиска и т.д. Бизнес логика - правила, алгоритмы реакции приложения на действия пользователя или на внутренние события, правила обработки данных Управление данными - хранение, выборка, модификация и удаление данных, связанных с решаемой приложением прикладной задачей 6

7 Трехуровневый «клиент-сервер» Серверная часть Сервер приложений Сервер баз данных Клиент Пользовательский интерфейс Бизнес логика Управление данными 7

8 Все вместе "Тупой" терминал Локальные задачи Пользовательский интерфейс Бизнес логика Хранение данных Lotus Notes Файл-сервер 8

9 Сложность. А в чем собственно проблема? Мы можем одновременно удерживать в голове ограниченное количество сущностей. «Закон восприятия»: 7 ± 2 «Векторы памяти»: 4 ± 1 9

10 Сложность. Как бороться? Декомпозиция - разделять на компоненты Абстракция - вводим уровни реализации Инкапсуляция - скрываем реализацию и ненужные детали И т. д. 10

11 Определения Степень связанности (coupling) это мера, определяющая насколько жестко один элемент связан с другими элементами, либо каким количеством данных о других элементах он обладает. Не существует абсолютной меры для определения слишком высокой степени связывания. Важно лишь понимать степень связанности объектов на текущий момент и не упустить тот момент, когда дальнейшее повышение степени связанности может привести к возникновению проблем. Шаблон проектирования «Слабое связывание [ Low Coupling ]», ooad.asf.ru 11

12 Асинхронное взаимодействие Компонент 1 Очередь Компонент 2 Положить сообщение Запросто Что новенького? А вот оно Спасибо Не за что 12

13 Слои приложения Система Presentation Layer BLL DAL addorder() updateorderstate() cancelorder() getordersbymonth() getobjectsbyid() getobjectsby...() load() save() Database SELECT INSERT UPDATE DELETE 13

14 Интеграция ИС ИС 1 Пользовательский интерфейс Бизнес логика Управление данными ИС 2 Пользовательский интерфейс Бизнес логика Управление данными 14

15 Ключевые моменты Пользовательский интерфейс бизнес логика управление данными Клиенты/серверы разные нужны/важны Сложность вызов для индустрии разработки ПО Декомпозиция, абстрагирование, инкапсуляция + здравый смысл = средства контроля сложности Не все надо писать самим. Можно заниматься интеграцией Чтобы принять правильное решение, надо видеть всю «картинку» 15

16 «Программистам об ИТ»: Семинары Архитектуры ИС Микроархитектура/макроархитектура ИС Как создать ИС, чтобы тебя не проклинал админ заказчика? Как создать ИС, чтобы тебя не проклинал пользователь? Помни о security 16

17 Вы говорите «оторвать бы этим девелоперам» «ну кто так строит!?» «перепишу-ка я все с нуля» «этот код выносит мне мозг, где вы такую травку берете?» 17

18 Или Вы хвастаетесь: «Я там такого наворотил, что кроме меня там никто разобраться не может!» Вы чувствуете себя незаменимым, потому что по каждому вопросу бегут к Вам за разъяснениями. 18

19 Или все-таки «да, тут все просто» «чтобы это сделать, надо внести изменение только в одно место» «добавить поле пять минут» «да, тут есть, чему поучиться» 19

20 Содержание Learnability, Maintainability Об оформлении кода Документирование вне кода Об искусстве декомпозиции 20

21 Содержание Learnability, Maintainability Об оформлении кода Документирование вне кода Об искусстве декомпозиции 21

22 Ключевые характеристики кода Learnability (Изучаемость) Насколько сложно понять, как это работает? Maintainability (Сопровождаемость) Насколько сложно внести изменения? Learnability необходимое, но недостаточное условие для Maintainability 22

23 <script language="javascript" src="jquery.js"></script> <script language="javascript"> function validate( address){ var pattern = if(pattern.test( address)) $("# msg").html("ok"); else $("# msg").html("nok"); } </script> <input type="text" name=" " onkeyup="validate(this.value);"/> <span id=" msg"></span> 23

24 <script language="javascript" src="jquery.js"></script> <script language="javascript"> // Validates address function validate( address){ if(is ( address)) showalert(true); else showalert(false); } // validation function is ( address){ var pattern = return pattern.test( address); } // Shows validation results function showalert(ok){ if(ok) $("# msg").html('ok'); else $("# msg").html('nok'); } </script> <input type="text" name=" " onkeyup="validate(this.value);"/> <span id=" msg"></span> 24

25 Содержание Learnability, Maintainability Об оформлении кода Документирование вне кода Об искусстве декомпозиции 25

26 Комментарии должны Служить принципам Learnability и Maintainability Должны объяснять, что и зачем хочет сделать разработчик Быть предельно лаконичными, но достаточными // Во избежание проблем при обновлении // переводим базу в single user mode 26

27 Комментарии НЕ должны Писаться ради самих комментариев Объяснять то, что можно сказать самим кодом Содержать нецензурных выражений // А этот код я комментировать не буду, // пусть психиатр разбирается // Лочим базу по самые нидерланды 27

28 Комментарии. Сильные утверждения «Если для понимания программы требуются комментарии значит, она плохо написана» «Сложный код следует не комментировать, а переписывать» (Code Complete, Steve McConnel) «Вообще говоря, следует минимизировать количество комментариев, создавая самодокументируемый код с подходящими названиями и ясной логической структурой» (Java Programming Style Guidelines) 28

29 <script language="javascript" src="jquery.js"></script> <script language="javascript"> // Validates address function validate( address){ if(is ( address)) showalert(true); else showalert(false); } // validation function is ( address){ var pattern = return pattern.test( address); } // Shows validation results function showalert(ok){ if(ok) $("# msg").html('ok'); else $("# msg").html('nok'); } </script> <input type="text" name=" " onkeyup="validate(this.value);"/> <span id=" msg"></span> 29

30 <script language="javascript" src="jquery.js"></script> <script language="javascript"> function validate( address){ if(is ( address)) showalert(true); else showalert(false); } function is ( address){ var pattern = return pattern.test( address); } function showalert(ok){ if(ok) $("# msg").html('ok'); else $("# msg").html('nok'); } </script> <input type="text" name=" " onkeyup="validate(this.value);"/> <span id=" msg"></span> 30

31 Style Guidelines exporthtmlsource(); // NOT: exporthtmlsource(); opendvdplayer(); // NOT: opendvdplayer(); if (isdone) docleanup(); // NOT: if (isdone) docleanup(); for (i = 0; i < 10; i++) { // NOT: for(i=0;i<10;i++){ 31

32 <script language="javascript" src="jquery.js"></script> <script language="javascript"> function validate( address){ if(is ( address)) showalert(true); else showalert(false); } function is ( address){ var pattern = return pattern.test( address); } function showalert(ok){ if(ok) $("# msg").html('ok'); else $("# msg").html('nok'); } </script> <input type="text" name=" " onkeyup="validate(this.value);"/> <span id=" msg"></span> 32

33 <script language="javascript" src="jquery.js"></script> <script language="javascript"> function validate( address){ if(is ( address)) showalert(true); else showalert(false); } function is ( address){ var pattern = return pattern.test( address); } function showalert(ok){ if(ok) $("# msg").html('ok'); else $("# msg").html('nok'); } </script> <input type="text" name=" " onkeyup="validate(this.value);"/> <span id=" msg"></span> 33

34 Формальные метрики кода Source lines of code (SLOC) Сomment density Cyclomatic complexity (or conditional complexity) Lack of Cohesion of Methods (LCOM) Tight and Loose Class Cohesion (TCC and LCC) etc. 34

35 Держать оформление кода под контролем Checkstyle (Java), FxCop (.NET) и т.д. анализ кода Continuous Integration автоматизация анализа Code Review организационные меры 35

36 Содержание Learnability, Maintainability Об оформлении кода Документирование вне кода Об искусстве декомпозиции 36

37 Что выпадает? Общая микро- и макроархитектуры Протоколы взаимодействия компонент Принципы разработки системы или «как решать типовые задачи?» Принципы дальнейшего развития системы И т.д. 37

38 Как восполнить пробелы? Старый добрый MS Word (System Description) UML-диаграммы Проектные WiKi Model Driven Development (MDD) и Model Driven Architecture (MDA) (в теории) 38

39 Но это все только про Learnablity. А что же с Maintainability? 39

40 Содержание Learnability, Maintainability Об оформлении кода Документирование вне кода Об искусстве декомпозиции 40

41 Maintainability = хорошая декомпозиция Хорошая декомпозиция - это: Хорошо продуманные и стабилизированные внутренние и внешние API Эффективное выделение повторно используемых частей Low Coupling (Слабое связывание) + High Cohesion (Cильное зацепление) Разумный(!) эволюционный потенциал системы 41

42 Определения Coupling (Связанность) это мера, определяющая насколько жестко один элемент связан с другими элементами, либо каким количеством данных о других элементах он обладает. Cohesion (Зацепление) это мера связанности и сфокусированности функциональных обязанностей класса (элемента). Фундаментальное правило декомпозиции: Low Coupling (Слабая связанность) + High Cohesion (Сильное зацепление) 42

43 Low Cohesion 43

44 High Cohesion 44

45 Low Coupling + High Cohesion 45

46 Неразумный эволюционный потенциал Чем это чревато? Переусложнение системы в текущих требованиях Требования могут пойти в другую сторону и изменения будут дорого стоить 46

47 Чем грозит эволюция? Потихоньку меняются функциональные требования Мелкие изменения не дают оснований для пересмотра концепции На мелкие изменения жалко тратить много сил Но их много и они меняют систему до неузнаваемости Новые функции становится вносить все сложнее Система уже не так эффективна, менее стройна и сложнее в понимании Пришла пора вносить структурные изменения (рефакторинг) или потерпеть еще годик и переписать систему заново 47

48 Рефакторинг «Рефакторинг процесс изменения внутренней структуры программы, не затрагивающий еѐ внешнего поведения и имеющий целью облегчить понимание еѐ работы» (М. Фаулер) Тянет за собой Unit Testing (Модульное тестирование) Является базовой техникой в гибких методологиях разработки ПО Хорошо поддерживается современными средами разработки 48

49 Резюме Чтобы не проклинал коллега, надо: Помнить про Learnabillty и Maintainability То есть стараться писать так, чтобы коллеге было просто понять, как это работает и просто внести изменения Что, в свою очередь, означает следовать Style Guidelines и постоянно совершенствовать свои навыки декомпозиции Стараться видеть всю «картинку» 49

50 Литература 50

51 На следующем семинаре Как создать ИС, чтобы тебя не проклинал админ заказчика? Manageability Maintainability Reliability Monitorability Scalability И т. д. 51

52 Вопросы... 52

53 Спасибо за внимание! Сергей Кузнецов Руководитель Технологического отдела Рексофт job.reksoft.ru/training 53

Как создать ИС, чтобы тебя не проклинал админ заказчика?

Как создать ИС, чтобы тебя не проклинал админ заказчика? Как создать ИС, чтобы тебя не проклинал админ заказчика? Программистам об ИТ, семинар 4/6 Санкт-Петербург Март, 2010 Сергей Кузнецов Руководитель Технологического отдела Рексофт www.reksoft.ru 1 «Программистам

Подробнее

Программная инженерия

Программная инженерия Программная инженерия Процесс программной инженерии (Software Engineering Process) Глава базируется на IEEE Guide to the Software Engineering Body of Knowledge (1) - SWEBOK, 2004. Содержит перевод описания

Подробнее

Содержание Введение 4 1.Надежное программное средство как продукт технологии программирования. 5 1.1. Программа как формализованное описание процесса

Содержание Введение 4 1.Надежное программное средство как продукт технологии программирования. 5 1.1. Программа как формализованное описание процесса Содержание Введение 4 1.Надежное программное средство как продукт технологии программирования. 5 1.1. Программа как формализованное описание процесса обработки данных. 5 1.2. Понятие правильной программы.

Подробнее

Лекция 9. Моделирование бизнеспроцессов.

Лекция 9. Моделирование бизнеспроцессов. Лекция 9. Моделирование бизнеспроцессов. Введение. Основные понятия... 2 Развитие моделирования бизнес-процессов... 4 Основные принципы моделирования бизнес-процессов... 10 1 Введение. Основные понятия

Подробнее

К сожалению, на благодарности нам выделили всего лишь страничку. Поэтому я постараюсь представить всех наших активистов в фактах.

К сожалению, на благодарности нам выделили всего лишь страничку. Поэтому я постараюсь представить всех наших активистов в фактах. Yes, we did! Scrum и XP: заметки с передовой Чтобы прочитать эту книгу вам понадобится всего лишь два-три часа. Чтобы её перевести участникам сообщества Agile Ukraine потребовалось 4 месяца. Поверьте,

Подробнее

Интеграция верификации в интерактивный процесс разработки программ с явным выделением состояний

Интеграция верификации в интерактивный процесс разработки программ с явным выделением состояний Санкт-Петербургский государственный университет информационных технологий, механики и оптики Кафедра «Компьютерные технологии» А. А. Борисенко Интеграция верификации в интерактивный процесс разработки

Подробнее

Как стать ИТ архитектором?

Как стать ИТ архитектором? Андрей Коротков Как стать ИТ архитектором? 9 чит кодов для ИТ профессионалов www.itarchitect.ru 2011 Введение «Плох тот солдат, который не мечтает стать генералом!» А.Ф. Погосский Если вас заинтересовала

Подробнее

ИНЖЕНЕРНАЯ ДЕЯТЕЛЬНОСТЬ С КОНСТРУКТИВНОЙ ТОЧКИ ЗРЕНИЯ ENGINEERING ACTIVITY FROM THE CONSTRUCTIVE VIEWPOINT

ИНЖЕНЕРНАЯ ДЕЯТЕЛЬНОСТЬ С КОНСТРУКТИВНОЙ ТОЧКИ ЗРЕНИЯ ENGINEERING ACTIVITY FROM THE CONSTRUCTIVE VIEWPOINT 13 УДК 51.74 ИНЖЕНЕРНАЯ ДЕЯТЕЛЬНОСТЬ С КОНСТРУКТИВНОЙ ТОЧКИ ЗРЕНИЯ Владимир Алексеевич Кутергин, доктор технических наук, профессор, Институт прикладной механики Уральского отделения Российской Академии

Подробнее

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

Технологии программирования. Компонентный подход Технологии программирования. Компонентный подход В. В. Кулямин Лекция 2. Жизненный цикл и процессы разработки ПО Аннотация Вводятся понятия жизненного цикла ПО и технологических процессов разработки ПО.

Подробнее

Архитектура и работа с данными «1C:Предприятия 8.2»

Архитектура и работа с данными «1C:Предприятия 8.2» М. Г. Радченко Е. Ю.Хрусталева Архитектура и работа с данными «1C:Предприятия 8.2» Москва 2011 УДК 658.012.011.56:004.42 ББК 65.29 Р15 Р15 Радченко М. Г. Архитектура и работа с данными «1С:Предприятия

Подробнее

Информационная система как объект защиты

Информационная система как объект защиты Глава 2 Информационная система как объект защиты В этой главе: Что такое информационная система ИС всякие нужны, ИС всякие важны Разработка и производство информационных систем Структура ИС и принципы

Подробнее

Е.В. Касьянова АДАПТИВНАЯ СИСТЕМА ПОДДЕРЖКИ ДИСТАНЦИОННОГО ОБУЧЕНИЯ ПРОГРАММИРОВАНИЮ

Е.В. Касьянова АДАПТИВНАЯ СИСТЕМА ПОДДЕРЖКИ ДИСТАНЦИОННОГО ОБУЧЕНИЯ ПРОГРАММИРОВАНИЮ Е.В. Касьянова АДАПТИВНАЯ СИСТЕМА ПОДДЕРЖКИ ДИСТАНЦИОННОГО ОБУЧЕНИЯ ПРОГРАММИРОВАНИЮ ВВЕДЕНИЕ В не столь далеком прошлом хороший почерк уже являлся гарантией спокойной и обеспеченной жизни до старости.

Подробнее

Разработка более сложной формы (прием товаров)

Разработка более сложной формы (прием товаров) Глава 5 Разработка более сложной формы (прием товаров) В этой главе мы рассмотрим технологию создания более сложных форм на примере формы, предназначенной для оформления приема товаров. В качестве источника

Подробнее

Проектирование классов и наследование

Проектирование классов и наследование Проектирование классов и наследование Наиболее важный аспект разработки программного обеспечения ясно понимать, что именно вы пытаетесь построить. Бьярн Страуструп (Bjarne Stroustrup) Какого вида классы

Подробнее

В. Г. Рындак В. О. Дженжер Л. В. Денисова

В. Г. Рындак В. О. Дженжер Л. В. Денисова В. Г. Рындак В. О. Дженжер Л. В. Денисова П Р О Е К Т Н А Я Д Е Я Т Е Л Ь Н О С Т Ь Ш К О Л Ь Н И К А В С Р Е Д Е П Р О Г Р А М М И Р О В А Н И Я S C R A T C H У Ч Е Б Н О - М Е Т О Д И Ч Е С К О Е П О

Подробнее

РУКОВОДСТВО ПО УПРАВЛЕНИЮ ДОКУМЕНТИРОВАНИЕМ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

РУКОВОДСТВО ПО УПРАВЛЕНИЮ ДОКУМЕНТИРОВАНИЕМ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ГОСТ Р ИСО/МЭК ТО 9294-93 ГОСУДАРСТВЕННЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ Информационная технология РУКОВОДСТВО ПО УПРАВЛЕНИЮ ДОКУМЕНТИРОВАНИЕМ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ГОССТАНДАРТ РОССИИ Москва Предисловие

Подробнее

C4 (высокий уровень, время 60 мин)

C4 (высокий уровень, время 60 мин) C4 (высокий уровень, время 60 мин) Тема: Обработка данных, вводимых в виде символьных строк (написать программу средней сложности из 30-50 строк). Что нужно знать: символьная строка это цепочка символов,

Подробнее

Платформа для разработки мобильных приложений Ubiq Mobile

Платформа для разработки мобильных приложений Ubiq Mobile Платформа для разработки мобильных приложений Ubiq Mobile Введение А.Н.Терехов, д.ф.-м.н., зав.кафедрой системного программирования В.В.Оносовский, с.н.с. лаборатории информационных систем Санкт-Петербургский

Подробнее

книга стива круга или не заставляйте меня думать!

книга стива круга или не заставляйте меня думать! книга стива круга или не заставляйте меня думать! По договору между издательством «Символ-Плюс» и Интернет-магазином «Books.Ru Книги России» единственный легальный способ получения данного файла с книгой

Подробнее

Никита Культин Лариса Цой

Никита Культин Лариса Цой Никита Культин Лариса Цой Санкт-Петербург «БХВ-Петербург» 2011 УДК 681.3.06 ББК 32.973.26-018.2 К90 К90 Культин, Н. Small Basic для начинающих / Н. Культин, Л. Цой. СПб.: БХВ-Петербург, 2011. 256 с.: ил.

Подробнее

Система дистанционного обучения Moodle

Система дистанционного обучения Moodle Санкт-Петербургский государственный университет информационных технологий, механики и оптики Кафедра компьютерных образовательных технологий А.В. Белозубов, Д.Г. Николаев Система дистанционного обучения

Подробнее

ИНСТИТУЦИОНАЛЬНОЕ РАЗВИТИЕ И УКРЕПЛЕНИЕ ОРГАНИЗАЦИИ

ИНСТИТУЦИОНАЛЬНОЕ РАЗВИТИЕ И УКРЕПЛЕНИЕ ОРГАНИЗАЦИИ ИНСТИТУЦИОНАЛЬНОЕ РАЗВИТИЕ И УКРЕПЛЕНИЕ ОРГАНИЗАЦИИ ПОСОБИЕ О ДЛЯ КОНСУЛЬТАНТА Н Т А 2007 2010 ИНСТИТУЦИОНАЛЬНОЕ РАЗВИТИЕ И УКРЕПЛЕНИЕ ОРГАНИЗАЦИИ ПОСОБИЕ ДЛЯ КОНСУЛЬТАНТА Перевод материалов цикла тренингов

Подробнее

ОРГАНИЗАЦИЯ БАЗ ДАННЫХ И ЭКСПЕРТНЫХ СИСТЕМ

ОРГАНИЗАЦИЯ БАЗ ДАННЫХ И ЭКСПЕРТНЫХ СИСТЕМ БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ФАКУЛЬТЕТ РАДИОФИЗИКИ И КОМПЬЮТЕРНЫХ ТЕХНОЛОГИЙ Кафедра интеллектуальных систем К. В. Козадаев, Д. В. Щегрикович ОРГАНИЗАЦИЯ БАЗ ДАННЫХ И ЭКСПЕРТНЫХ СИСТЕМ ЛАБОРАТОРНЫЙ

Подробнее

Электронные образовательные ресурсы нового поколения: открытые образовательные модульные мультимедиа системы

Электронные образовательные ресурсы нового поколения: открытые образовательные модульные мультимедиа системы А. В. Осин Электронные образовательные ресурсы нового поколения: открытые образовательные модульные мультимедиа системы Аннотация Рассматривается архитектура электронных образовательных ресурсов (ЭОР)

Подробнее

О сущности НО НО неформальное образование. как что

О сущности НО НО неформальное образование. как что О сущности НО Коллеги, друзья! Педагогика профессия творческая, не так ли? Именно на вере в справедливость этого утверждения основывается книга, которую вы только что открыли. Так же как любая другая творческая

Подробнее

Анализ основной причины

Анализ основной причины Анализ основной причины Упрощенные инструменты и методы Бьерн Андерсен Том Фагерхоуд ASQ Quality Press Милуоки, Висконсин Root Cause Analysis - Simplified Tools and Techniques 2 Введение "Вам нравится

Подробнее

ОРГАНИЗАЦИЯ ОБУЧЕНИЯ ШКОЛЬНИКОВ С ИСПОЛЬЗОВАНИЕМ ЭЛЕМЕНТОВ ДИСТАНЦИОННОГО ОБУЧЕНИЯ

ОРГАНИЗАЦИЯ ОБУЧЕНИЯ ШКОЛЬНИКОВ С ИСПОЛЬЗОВАНИЕМ ЭЛЕМЕНТОВ ДИСТАНЦИОННОГО ОБУЧЕНИЯ Краевое государственное бюджетное образовательное учреждение дополнительного профессионального образования Алтайский краевой институт повышения квалификации работников образования ОРГАНИЗАЦИЯ ОБУЧЕНИЯ

Подробнее

Кравченко Г.В., Волженина Н.В. РАБОТА В СИСТЕМЕ MOODLE: РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ Учебное пособие СОДЕРЖАНИЕ

Кравченко Г.В., Волженина Н.В. РАБОТА В СИСТЕМЕ MOODLE: РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ Учебное пособие СОДЕРЖАНИЕ Кравченко Г.В., Волженина Н.В. РАБОТА В СИСТЕМЕ MOODLE: РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ Учебное пособие СОДЕРЖАНИЕ ВВЕДЕНИЕ 3 1. ОСНОВЫ РАБОТЫ С СИСТЕМОЙ ДИСТАНЦИОННОГО ОБУЧЕНИЯ MOODLE 5 1.1. Предпосылки появления

Подробнее

Обучение передовым технологиям разработки ПО: проблемы и методы их решения

Обучение передовым технологиям разработки ПО: проблемы и методы их решения Обучение передовым технологиям разработки ПО: проблемы и методы их решения В. В. Кулямин, В. А. Омельченко, О. Л. Петренко {kuliamin, vitaliy, olga}@ispras.ru Введение В современном мире все больше задач

Подробнее

Программирование для Windows 95

Программирование для Windows 95 Ч. Петзолд Программирование для Windows 95 в двух томах Том I «BHV Санкт-Петербург» Дюссельдорф Киев Москва Санкт-Петербург Содержание ЧАСТЬ I ВВЕДЕНИЕ... 9 ГЛАВА 1 README.TXT...11 Вызов, брошенный программистам...11

Подробнее