Основные понятия
- Программа - набор операторов, который может быть представлен как единое целое в некоторой вычислительной системе и который используется для управления поведением этой системы.
Никлаус Вирт - один из основателей языков программирования. Программы = алгоритмы + структуры данных
- Программирование (имеет несколько определений)
- Раздел прикладной математики вычислительной техники, разрабатывающий методы составления программ для ЭВМ.
- Вид деятельности, необходимый для организации различных программ на ЭВМ.
- Процесс создания компьютерных технологий.
- Профессиональное программирование - деятельность, направленная на получение доходов при помощи программирования (имеется потребитель, готовый платить за продукт)
- Вывод: профессиональное производство программ - это коллективная деятельность, в которой участвует минимум 2 человека: программист и заказчик.
- Профессиональный программист - человек, который занимается профессиональным программированием
Определения понятия ПО (программное обеспечение)
Впервые понятие ввёл в 1958 году Джон Тьюки (математик из Принстонского университета)
- Компьютерные программы и связанная с ними документация и данные (ISO/IEC 12207)
ISO - международная организация по стандартизации. Содействует развитию стандартизации в мире (ISOS - от греч. - "равный")
IEC - международная электротехническая компания
- Совокупность программ системы обработки информации и программных документов, необходимых для эксплуатации этих программ (ГОСТ 19781-90)
- Совокупность программ, процедур и правил относящихся к функционированию систем обработки данных (ISO 2382/1-84)
- Множество развивающихся во времени предписаний, с помощью которого некоторый коллектив людей управляет и использует многопроцессорную и распределительную систему вычислительных устройств.
Программный продукт (ПП)
ПО, предназначенное для поставки пользователю.
ПП бывает двух типов:
- Общие(коробочные) - разработанные для продажи многим пользователям.
- Заказные - выполненные по заказу определенного потребителя.
Отличия между общими и заказными
Для общих требования к ПП разрабатывает сама компания производителей, для заказных - организация-заказчик.
Программная инженерия (ПИ)
Инженерия
- область человеческой интеллектуальной деятельности, направленной на применение достижений науки и использование законов и природных ресурсов для решения конкретных проблем, целей, задач.
Цели инженерной деятельности
- изобретение, разработка, создание, внедрение, ремонт, обслуживание и улучшение техники, материалов, процессов.
ПИ
Фридрих Л. Бауэр ввёл термин ПИ
-создание и использование обоснованных инженерных принципов для получения экономичного и эффективного ПО (Ф. Бауэр)
-та форма инженерии, которая применяет принципы информатики для рентабельного решения проблем(CMU/SEL-90-TR-003)
CMU/SEI - институт программной инженерии Карнеги-Меллон (американский научно-исследовательский центр)
-применение систематического дисциплинированного, измеряемого, подхода к разработке использованию и сопровождению ПО (IEEE 1990)
IEEE - институт инженеров электротехники
-дисциплина, целью которой является создание качественного ПО, которое завершается вовремя, не превышает выделенных бюджетных средств и удовлетворяет выдвинутым требованиям (С.Шах 1999г.)
-инженерная дисциплина, которая связана со всеми аспектами создания ПО от начальных стадий разработки до поддержки системы после сдачи в эксплуатацию.
Инженерная дисциплина
- ориентирована на практический результат.
- применение теории, методов и способов для достижения результата.
- Лучшие практики. В ПИ - это надор инженерных методов или способов, теоретически возможно не обоснованных, но получивших неоднократное подтверждение на практике.
- Работа в условиях ограниченного бюджета, времени, оборудования и людей.
Все аспекты производства ПО
- Управление программными проектами, т.е. не только технические вопросы производства ПО, но и вопросы планирования финансирования, управления коллективом и т.д.
- Разработка средств, методов и теорий для поддержки процесса производства ПО.
Общие для всех инженеров характеристики
- Инженеры в своей деятельности принимают решения, оценивая альтернативы и выбирая подход, оптимально соответствующий решаемой задаче.
- Инженеры, по возможности, работают с использованием измеримых количественных характеристик.
- Инженеры понимают важность вопроса эффективности организации командной работы.
- Инженеры используют инструментальные средства, поэтому выбор и использование подходящих средств является крайне важным вопросом.
- Инженеры могут отвечать за выполнение самого широкого спектра задач, начиная с исследований, разработки, проектирования, производства, тестирования, внедрения, эксплуатации и управления и заканчивая продажами, консультированием и обучением.
- Инженеры объединяются в профессиональные сообщества.
Инженеры в ПИ
-это специалисты, выполняющие практические работы по реализации программ с применением теории, методов и средств компьютерной науки.
Инженер-программист должен
- Очень хорошо понимать структуру ПО
- Создавать качественные программы, которые могли бы работать на любом компьютере и решать сразу несколько задач.
- уметь дорабатывать уже существующие конструкции.
- Продумывать возможные проблемы, которые могут возникнуть в будущем и найти для них решение.
Основные функции инженера-программиста
- Анализирует потребности компании и текущее ПО
- Проверяет программы на соответствие требованиям организации и правильно ли они работают.
- Планирует, разрабатывает и внедряет ПО
- Тестирует новое или изменяет старое ПО
- Обслуживает ПО совместно с другими программистами в команде
- Управляет IT проектами: планирует, организовывает и контролирует исполнение
Навыки инженера программиста
- знать языки программирования
- владеть основами тематического моделирования
- алгоритмизации разных видов типизации, знать базы данных
- знать разные ОС, веб-технологии и облачные данные
- создавать схемы ввода, обработки, хранения и вывода информации
- выбирать подходящие языки программирования
- разрабатывать программы в соответствии с техническим заданием
- проверять настраивать и тестировать ПО
- Корректировать ранее созданные программные решения
- внедрять и сопровождать программные средства
- писать техническую документацию и инструкции по использованию по
- уметь работать в команде
- выстраивать понятный для всех сторон диалог с заказчиком
- знать английский на уровне INDEPENDENT USER
Личные качества инженера-программиста
- логическое мышление
- внимательность
- склонность к анализу и математике
- самостоятельность
- интерес к поиску новых решений
- ответственность
- самоорганизация
- интерес к профессии и желание развиваться
Области знаний программной инженерии
основные области знаний
- главные - требования к ПО, проектирование ПО, конструирование ПО, тестирование ПО, сопровождение ПО.
- организационные - управление конфигурацией, управление в ПИ, процессы ПО, инструменты и методы ПО, качество ПО.
дополнительные области знаний
-разработка компьютеров, информатика, общий менеджмент, математика, управление проектами, управление качеством, системное проектирование.
Требования к ПО
Требования - свойства, которыми должно обладать ПО для адекватного определения: функций, условий и ограничений ПО, объемов данных, технического обеспечения, среды функционирования
Требования к ПО:
- системные
- функциональные - определяют назначение и функции системы, объясняют что должно быть сделано (не должно быть несовместимых и взаимоисключающих определений функции).
- нефункциональные - определяют его эксплуатационные качества, т.е. определяет то, насколько хорошо будет работать система (часто такие характеристики называют атрибутами качества).
Атрибуты качества ПО
- Производительность - насколько быстро ПО выполняет функции (время отклика, пропускная способность). Жесткие требования к производительности существенно влияют на: выбор аппаратных средств, технологию разработки ПО, принимаемые инженерные решения при реализации.
- Надежность - возможность работы системы без сбоев в течении определенного времени. Для измерения надежности может быть использовано среднее время работы системы до сбоя.
- Доступность - Время в течении которого система доступна для использования и полностью работоспособна. Это время определяется средним временем до сбоя.
- Безопасность - блокировка неавторизованного доступа к данным и функциям системы, предотвращение потерь информации и т.п.
- Удобство и простота обслуживания - "дружелюбие" системы к пользователю (система должна использоваться эффективно и необременительно)
- Легкость сопровождения и эксплуатации - насколько просто и удобно модифицировать продукт и исправлять найденные в нем ошибки.
- Мобильность - определяет усилия, которые необходимы для переноса продукта из одной операционной среды в другую
- Повторное использование - затраты на повторно используемых компонентов сравнительно велики, но эффект их использования в дальнейшем может компенсировать эти затраты.
- Тестируемость - показывает легкость, с которой компоненты проекта или весь продукт могут быть проверены на наличие ошибки.
Внешние требования определяют
- взаимодействие проектируемой системы с другими системами
- требования по квалификации персонала
- юридические требования
- требования среди и т.п. требования
Требования к процессу разработки ПО
-определяют ограничения, связанные с использованием определенных технологий и стандартов разработки. примеры: использование определенного языка программирования и методов проектирования, требование к документации, срокам изготовления и т.д.
Системные требования
-описывают высокоуровневые требования к ПО, содержащему несколько или много взаимосвязей подсистем и приложений. Пример: тактовая частота процессора, объем памяти, требования к выбору операционной системы.
Основные этапы развития программирования
1. стихийное программирование(1946-1965)
- отсутствие технологии программирования.
технология программирования- совокупность методов, приемов и средств для сокращения стоимости и повышение качества разработки программных систем.
- Программирование в машинных кодах - сложность программ в машинных кодах: программисту необходимо было одновременно отслеживать последовательность выполняемых операций и местонахождение данных при программировании
- Появление ассемблера - вместо двоичных и 16-ричных кодов стали использоваться символические имена данных и мнемоники кодов операций. В результате, программы стали более читаемыми.
- Появление языков программирования высокого уровня. Это упростило программирование вычислений и позволило увеличить сложность программ.(Fortran, Algon)
- Появляются средства работы с подпрограммами п/п-п/п можно было сохранять и использовать в других программах. В результате были созданы огромные библиотеки расчетных и служебных подпрограмм. Появление средств поддержки п/п позволило осуществить разработку ПО нескольким программистам параллельно.