software engineering. Введение в специальность. Проектирование,...
TRANSCRIPT
![Page 2: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/2.jpg)
Архитектура
Высокоуровневый дизайн
Детальный дизайн
Язык программирования, фреймворк, технология, операционная система, …
Разбиение на компоненты, интерфейсы, протоколы взаимодействия
Устройство и взаимодействие отдельных классов
![Page 3: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/3.jpg)
Проектирование?
подготовка кода к изменениям…к наиболее вероятным
![Page 4: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/4.jpg)
?!?
![Page 5: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/5.jpg)
Нужен пример!
![Page 6: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/6.jpg)
Курс «Математический анализ» Список литературы1. Демидович Б.П. «Сборник задач по матану»2. Ильин, Позняк «Основы матана» Таблица успеваемости
Контрольная 1
Контрольная 2
Экзамен
Иванов 4 5 5
Петров — 3 3
Сидоров 5 — 4
![Page 7: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/7.jpg)
Что тут думать? Делать надо!
Write("<html><body>");Write("<h1>Курс "+GetCourseName(courseId)+"</h1>");Write("<h2>Список литературы</h2>");Write("<ol>");foreach(var book in GetCourseBooks(courseId))
Write("<li>" + book + "</li>");Write("</ol>");Write("<h2>Таблица успеваемости</h2>");...
![Page 8: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/8.jpg)
Проектирование —
подготовка кода к изменениям…к наиболее вероятным
![Page 9: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/9.jpg)
Наиболее вероятные изменения?
Курс «Математический анализ» Список литературы1. Демидович Б.П. «Сборник задач по матану»2. Ильин, Позняк «Основы матана» Таблица успеваемости
Контрольная 1
Контрольная 2
Экзамен
Иванов 4 5 5
Петров — 3 3
Сидоров 5 — 4
![Page 10: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/10.jpg)
Наиболее вероятные изменения?
• Другой стиль оформления• Другие странички из списков,
таблиц и заголовков• Другие форматы: *.txt, *. pdf, …• Новые элементы: картинки,
графики, …
![Page 11: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/11.jpg)
Проблему осознали.
Как её решать?
![Page 12: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/12.jpg)
Не знаешь что делать?Отделяй логику от представления!
Заголовок документаЗаголовок спискаСписокЗаголовок таблицыТаблица
<h1>…</h1><h1>…</h1><ol> … </ol><h1>…</h1><table>
<tr><td>…</table>
![Page 13: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/13.jpg)
WriteBeginDocument();WriteHeader("Курс " + courseName);WriteHeader("Список литературы");WriteList(booksList);WriteHeader("Таблица успеваемости");WriteTable(exams, students, marks);WriteEndDocument();
Логика без представления
Html → Text
![Page 14: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/14.jpg)
Html → Text
Как подменять реализацию WriteXXXX?
![Page 15: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/15.jpg)
Объект— нечто, с чем можно взаимодействовать— возможно, имеющее состояние
Нечто, умеющее создавать примитивы в HTML: заголовки, списки, таблицы, …
ООП
![Page 16: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/16.jpg)
ООПСоздать объект
writer = new HtmlDocumentWriter();
Совершить действия с объектомwriter.WriteHeader("Курс " +
courseName);
Типы объектов объединяются в иерархии
HtmlDocumentWriter is a WriterPdfDocumentWriter is a Writer
![Page 17: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/17.jpg)
ООПvoid WriteCourseDocument(DocumentWriter writer){
...writer.WriteHeader("Курс " + courseName);writer.WriteHeader("Список литературы");writer.WriteList(booksList);writer.WriteHeader("Таблица успеваемости");writer.WriteTable(exams, students, marks);
}WriteCourseDocument(new HtmlDocumentWriter());
![Page 18: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/18.jpg)
И что получилось?
![Page 19: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/19.jpg)
Появляются новые виды отчетов
void WriteCourseDocument(DocumentWriter writer){
...writer.WriteHeader("Курс " + courseName);writer.WriteHeader("Список литературы");writer.WriteList(booksList);writer.WriteHeader("Таблица успеваемости");writer.WriteTable(exams, students, marks);
}WriteCourseDocument(new HtmlDocumentWriter());
![Page 20: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/20.jpg)
Появляются новые виды отчетов
void WriteFinanceDocument(DocumentWriter writer){
...writer.WriteHeader("Наши финансы");writer.WriteHeader("Потрачено");writer.WriteList(expenses);writer.WriteHeader("Заработано");writer.WriteList(income);
}
![Page 21: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/21.jpg)
Другие форматы: *.txt, *. pdf, …
WriteCourseDocument(new HtmlDocumentWriter());WriteCourseDocument(new TextDocumentWriter());WriteCourseDocument(new PdfDocumentWriter());...
Новый формат — новый Writer.
![Page 22: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/22.jpg)
Новые элементы: картинки, графики, …
Новые методы DocumentWriter
writer.WritePlot(…) writer.WriteImage(…)...
![Page 23: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/23.jpg)
Диаграма классовAbstractDocumentWriter
WriteTitleWriteListWriteTableWriteImage
HtmlWriter
WriteTitleWriteListWriteTableWriteImage
PdfWriterWriteTitleWriteListWriteTableWriteImage
CourseReport
FinanceReport
![Page 24: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/24.jpg)
Мораль
1. Архитектура бывает объективно плохой.
2. Хорошая архитектура не требует сильно больше усилий [при некотором опыте]
![Page 25: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/25.jpg)
Круто! Хочу быть проектировщиком!1. Сначала стань хорошим
программистом!2. Нет! П.1 точно нельзя
пропустить!3. Читай, пробуй, думай
![Page 26: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/26.jpg)
Читать?
Принципы SOLID (см. google.com)
![Page 27: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/27.jpg)
Вопросы?
http://vk.com/kontur_edu
![Page 28: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/28.jpg)
![Page 30: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/30.jpg)
Стоимость разработки
Подготовка50%
Кодирование
20%
Тестирование
30%
![Page 31: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/31.jpg)
Как собиратьи фиксировать требования?
Joel Spolsky Функциональные спецификации малой кровью Подкаст u http://habrahabr.ru/post/64608/
eng: http://www.scrumalliance.org/articlesrus: http://blog.scrumtrek.ru/
Доклады: http://www.req-labs.ru/
![Page 32: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/32.jpg)
…500+ страниц каждая…
Как собиратьи фиксировать требования?
![Page 33: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/33.jpg)
Самое простоеuser-story
![Page 34: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/34.jpg)
![Page 35: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/35.jpg)
User Storyтипичная история из жизни пользователя
![Page 36: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/36.jpg)
После трудной недели, Петя проспал целых 20 часов. Разлепив глаза, он открыл Твиттер и начал читать накопившиеся за это время новости
Позиционировать в ленте на последнем прочитанном
сообщении
![Page 37: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/37.jpg)
После трудной недели, Петя проспал целых 20 часов. Разлепив глаза, он открыл Твиттер и начал читать накопившиеся за это время новости
Позиционировать в ленте на последнем прочитанном
сообщении
![Page 38: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/38.jpg)
Прочитав непонятный ответ, Петя решил перечитать всю беседу, чтобы вспомнить, о чем речь
Загружать беседу сразу при
открытии твита
![Page 39: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/39.jpg)
Прочитав непонятный ответ, Петя решил перечитать всю беседу, чтобы вспомнить, о чем речь
Загружать беседу сразу при
открытии твита
![Page 40: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/40.jpg)
Увидев интересную ссылку, Петя решил открыть ее в браузере.Но из-за медленного интернета, оставив браузер открывать ссылку, вернулся обратно читать твиттер
Сделать кнопку «Открыть в фоне» / «Прочитать
позже»
![Page 41: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/41.jpg)
Удачные User story помогают
формулировать требования
![Page 42: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/42.jpg)
На что ещё годятся User Stories?
![Page 43: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/43.jpg)
User Stories с приоритетами — это и есть план!
![Page 44: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/44.jpg)
Прогон user story при тестировании помогает
вскрывать проблемы
![Page 45: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/45.jpg)
При должном старании можно
сформулировать сотни User Stories!
![Page 46: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/46.jpg)
«Эпик» — цель пользователя
• Петя продвигает сайт через twitterДля этого он фоловит, отвечает, ищет, пишет, ставит кнопки на сайт…
• Катя следит за жизнью супер-звездДля этого она читает, смотрит фотки, ходит по ссылкам
![Page 47: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/47.jpg)
User Story — важные жизненные истории,
вскрывающие требованияпомогающие планировать
и тестировать
Обрастают детальными требованиями
и группируются в Эпики
![Page 48: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/48.jpg)
Пользовательские интерфейсы
![Page 49: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/49.jpg)
часто применяется при проектировании
пользовательских интерфейсов
Прототипирование— быстрая проверка идеи
![Page 50: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/50.jpg)
Прототип на бумаге
![Page 51: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/51.jpg)
Прототип на доске
![Page 52: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/52.jpg)
Черновики в блокнотике
![Page 54: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/54.jpg)
Прототипирование интерфейса вместе с потенциальным пользователем
Проверено, отлично работает!
Впрочем, не только с интерфейсами
![Page 55: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/55.jpg)
Тестирование прототипа:Найти потенциального
пользователяПодготовить “задачи”
Замечать все затруднения у пользователя!
Пример: http://www.youtube.com/watch?v=9wQkLthhHKA
![Page 56: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/56.jpg)
![Page 57: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/57.jpg)
![Page 58: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/58.jpg)
Курс «Проектирование пользовательских интерфейсов»
(СКБ Контур и Яндекс)
http://cripi.ru + следите за объявлениями!
![Page 59: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/59.jpg)
С чего начать«Дизайн пользовательского интерфейса» Влад Головач«Не заставляйте меня думать» Стив Круг«Психбольница в руках пациентов» Алан Купер
В сетиФреш: новости мира юзабилити — http://fresh.gui.ru/Советы Бюро Горбунова — http://artgorbunov.ru/bb/soviet/Дизайн-собака — http://design.artgorbunov.ru/Ководство — http://www.artlebedev.ru/kovodstvo/sections/
![Page 60: Software engineering. Введение в специальность. Проектирование, требования](https://reader035.vdocuments.mx/reader035/viewer/2022062319/557f19efd8b42a01678b4fa9/html5/thumbnails/60.jpg)
Вопросы?
http://vk.com/kontur_edu