Введение в программную инженерию: Информация
Авторы: Иван Никитин, Михаил Цулая

Форма обучения:
дистанционная
Стоимость самостоятельного обучения:
бесплатно
Доступ:
свободный
Документ об окончании:
Вам нравится? Нравится 19 студентам
Уровень:
Для всех
Длительность:
7:19:00
Студентов:
748
Выпускников:
162
Курс является практическим сборником информации, которая необходима для комплексного понимания сути специальности программной инженерии и направлена на формирование знаний, требуемых для отработки навыков, способствующих успешному профессиональному старту.
Темы: Программирование, Образование
План занятий
Занятие
Заголовок <<
Дата изучения
Лекция 1
1 час 24 минуты
Замысел. Посвящение и благодарности
Здравствуйте, уважаемые коллеги!
Мы начинаем увлекательное путешествие в сферу профессиональной деятельности, которая называется "программная инженерия".
О "Главе 1" — программные инженеры в шутку начинают отсчет при запуске любой активности с "0", а не с "1". Они — непростой, но очень пытливый и интересный народ, который стремится все в своей профессиональной деятельности конкретизировать, а после чего с блеском решить любой вопрос или задачу. Эта особенность имеет определенную природу возникновения и последствия, которые отражаются на всем, за что они берутся.
Программная инженерия — это именно инженерия, а не наука или область академических знаний, и требования по ее использованию формируют однозначные и достаточно большие ожидания. У программных инженеров нет возможности подолгу разбираться в запутанных и комплексных проблемах заказчиков. Они должны, используя методы и инструменты своего ремесла, сформировать четкое и ясное представление о том, что явится результатом их деятельности и в какие сроки его можно будет достичь.
Цель программной инженерии состоит в накоплении, систематизации и последующем использовании информации, необходимой для быстрой и качественной разработки эффективного программного обеспечения.
Более формальное и строгое определение программной инженерии звучит так:
Программная инженерия (англ. software engineering) — приложение систематического, дисциплинированного, измеримого подхода к разработке, функционированию и сопровождению программного обеспечения, а также к исследованию этих подходов.
Если выразиться более абстрактно и универсально, то программная инженерия — это приложение дисциплины инженерии к созданию программного обеспечения.
Формальное определение инженерии, в свою очередь, звучит следующим образом:
Инженерия (инженерное дело) — область человеческой интеллектуальной деятельности, дисциплина, профессия, задачей которой является применение достижений науки, техники, использование естественнонаучных законов и ресурсов для решения конкретных проблем, целей и задач человечества. Инженерное дело реализуется путем применения научных знаний и практического опыта (инженерные навыки, умения) с целью создания (в первую очередь проектирования) полезных технологических и технических процессов и объектов, которые реализуют эти процессы.
Основные цели любой инженерной деятельности — создание и поэтапное усовершенствование технических приспособлений, отслеживание их результативного и бесперебойного функционирования.
На плечи инженеров ложится не только необходимость спроектировать, собрать и испытать изобретение или продукт, но и сопроводить процесс его эксплуатации. Все, что обычно делают инженеры, связано с поддержанием полного цикла работы информационного продукта.
Инженеры — это своего рода изобретатели. Их предназначение — облегчать жизнь и труд с помощью механизмов, оптимизированных принципов функционирования сложных изделий, максимизировать результаты, полученные путем использования создаваемых ими аппаратов, программ, удовлетворять нужды владельцев технических изделий, информационных систем, сервисов и автоматизированных ими процессов.
В современном мире сложно найти категории производства, социальной и общественной жизни, в которых обошлось бы без непосредственного участия инженеров или без продуктов, разработанных ими. И с каждым годом потребность в этих специалистах растет.
В инженерах нуждаются самые разные предприятия. Без них не обходятся R&D, аналитические, проектировочные, разработческие и другие направления деятельности.
Современный мир пришел к необходимости специализации ранее универсальных сфер деятельности, поэтому появилось множество профессий, которые по своей сути являются различными подактивностями профессии инженера.
Намеченная тенденция к универсализации будет только усиливаться. Это связано прежде всего с анализом, синтезом возрастающего количества данных и управлением ими. Эти данные человечество начало собирать для исследования собственной природы и предпочтений, поэтому ему необходимы более качественные продукты и сервисы, каждый из которых предназначен для определенной целевой аудитории и решает четко поставленную задачу.
Программные инженеры реагируют на это постоянным выделением отдельных активностей, ранее являвшихся составной частью инженерии.
Перечислим основных современных специалистов (их классификация, конкретизация их навыков и выполняемых ими действий будут изложены далее), каждый из которых решает задачи в своей профессиональной области, но при этом может иногда заменить коллегу из смежной активности.
Аналитики
Основная задача специалистов этой области состоит в исследовании определенной проблемы, задачи, ее формализации в понятном для последующего решения виде.
Архитекторы
Задача этих специалистов — разработка ряда вариантов высокоуровневых алгоритмов различной степени сложности и последующее соединение наиболее успешных из них в единое организационно-информационное решение, удовлетворяющее нуждам ключевых пользователей.
Разработчики
Эти специалисты занимаются непосредственной реализацией необходимых алгоритмов в виде надежно функционирующего продукта, удовлетворяющего первоначально выявленным требованиям к проблемам предприятия, пользователей или определенной сферы деятельности в определенных условиях его использования.
Тестировщики
Специалисты по тестированию выполняют выверку между первоначально зафиксированными на стадии анализа требованиями и полученным после стадии разработки инкрементом (промежуточным самодостаточным для использования результатом), сверяют его корректность и подтверждают, что внесенные изменения в функционирующий продукт не нарушили его целостности.
Администраторы информационных систем
Задача этих специалистов заключается в обеспечении и поддержании инфраструктуры, необходимой для осуществления рабочих процессов разработчиков и пользователей.
Руководители производственных подразделений
Эти сотрудники должны четко и экспертно организовать работу большого коллектива, запустить единый эффективно функционирующий процесс с определенными метриками производительности, поддерживающими достижение целевых показателей разрабатываемого продукта.
Программный инженер высокой квалификации — это тот, кто в равной мере и достаточно эффективно сможет выполнять любую из перечисленных работ. Для этого необходимо представлять себе полный, "сквозной" процесс программной инженерии и стремиться к обучению, самообучению, развитию профессиональных навыков в каждом из перечисленных профессиональных доменов. Без понимания того, какие практические действия совершает каждый из перечисленных специалистов на своем рабочем поприще, не сложится комплексного и объективного понимания значимости каждой профессии и ее влияния на конечный результат.
Как вы уже поняли, в этом курсе мы сконцентрируемся именно на программной инженерии.
Ну что же, начнем…
Оглавление
-
Лекция 2
1 час 36 минут
Введение
Продолжим наше знакомство с миром программной инженерии. В Главе 1 мы обсудили основные, фундаментальные моменты, работа над которыми должна лежать в основе каждой инженерной деятельности. А в этой главе поговорим о том, чем должен сопровождаться профессиональный путь программного инженера.
Программный инженер — не просто специализированный работник, осуществляющий свою деятельность по однозначному и непротиворечивому регламенту, а специалист, успешность и востребованность которого будут зависеть в том числе и от того, насколько осознанно и системно он работает над своим профессиональным кругозором, поддерживающим его основную задачу — создание востребованных программных продуктов.
Инженеру важно быть самоорганизованным, инициативным, прозорливым, уметь адаптироваться к уже выстроенным или выстраивающимся рабочим процессам, которые будут формировать его рабочий фреймворк, его профессиональное окружение.
Обо всех этих аспектах мы и будем говорить в главе 2 . Начнем с описания качеств, над которыми программному инженеру нужно будет работать на протяжении всего профессионального пути. Более того, как мы увидим в конце этого курса, именно эти качества являются залогом успеха в этой профессии.
Оглавление
-
Лекция 3
52 минуты
Базовые знания и навыки
В этой главе мы поговорим о том, какими навыками и знаниями необходимо обладать программному инженеру, чтобы быть не только профессиональным и компетентным, но и достаточно восприимчивым к развитию и совершенствованию новых навыков, необходимых для создания успешных эффективных информационных продуктов.
Каждый профессионал начинает трудовую деятельность еще тогда, когда закладывает базис знаний на уровне школы, высшего учебного заведения и своих первых рабочих проектов. И очень важно, чтобы эти фундаментальные знания были основательными и глубокими. Это позволит сформировать основу, применимую к любым типам проектов, которые постепенно будут появляться в арсенале программного инженера.
Что ж, приступим
Оглавление
-
Лекция 4
48 минут
Компьютерная грамотность/
В этой главе мы подробно поговорим о таких аспектах подготовки программного инженера, как изучение и использование горячих клавиш, системная работа над ошибками, о смысле изучения программирования и постараемся предостеречь от наиболее популярных ошибок, которые делают инженеры-новички.
Также мы сделаем выводы о том, какие качества и навыки нужно развивать программному инженеру, чтобы стать настоящим профессионалом, который может эффективно работать в своем направлении или над своим продуктом.
Грамотность и виртуозность при обращении с компьютером, владение программным обеспечением — ядро деятельности программной инженерии. То, насколько глубоко программный инженер знает и понимает свои рабочие инструменты, умеет ими разносторонне пользоваться, определяет уровень его мастерства. Без понимания всех возможностей используемого инструментария программный инженер всегда будет придерживаться лишь понятного и привычного ему способа работы. Постепенно это приведет его к косности, односторонности, субъективности, а порой даже к тому, что, меняя рабочий продукт или область деятельности, инженер, находясь в плену своих старых рабочих привычек, станет заложником принятых предпосылок, ограничений, рамок. А это — "медленная смерть" в такой инновационной деятельности, как разработка программного обеспечения, которая предполагает изменение подходов к работе практически каждый день.
Как же постараться не допустить этого?
Оглавление
-
Лекция 5
1 час 15 минут
Soft skills
В этой главе мы поговорим о фундаментальных навыках, которые помогут программному инженеру эффективно взаимодействовать в команде. Ведь работа в одиночку в современном мире возможна только в случае проектов, которые не отличаются масштабностью и инновационностью.
Любой, кто хочет стать востребованным программным инженером, обязательно будет искать возможность работы в крупных и важных проектах, где нужно уметь эффективно выстраивать взаимоотношения с рабочей командой: коллегами, клиентами, руководством и пр. При командной работе программный инженер, помимо умения программировать, анализировать, тестировать и прочее, должен обладать и другими важными навыками:
Слышать мнение коллег.
Корректно и последовательно доносить до них свою точку зрения.
Принимать компромиссные решения, приемлемые для всех заинтересованных сторон.
Организовывать свою и командную работу по разным активностям.
Обучать менее опытных и учиться у более опытных.
Все это поможет вам успешно работать в сложных проектах. Развитие навыков взаимодействия (еще их принято называть "гибкими навыками") определяет эффективное участие в рабочем процессе и высокую командную производительность. Эти навыки являются "сквозными", не связанными с какой-то конкретной предметной областью.
Гибкие навыки (soft skills) становятся все более востребованными в условиях технического и технологического прогресса, динамично меняющейся среды, когда на первый план выходит умение приспосабливаться.
Именно о том, как системно заниматься развитием soft skills, что делать для того, чтобы это развитие было неразрывно связано с успешной практической деятельностью, мы и будем говорить в этой главе.
Оглавление
-