Найти в Дзене

Введение в программную инженерию

Никлаус Вирт - один из основателей языков программирования. Программы = алгоритмы + структуры данных - Вывод: профессиональное производство программ - это коллективная деятельность, в которой участвует минимум 2 человека: программист и заказчик. Впервые понятие ввёл в 1958 году Джон Тьюки (математик из Принстонского университета) ISO - международная организация по стандартизации. Содействует развитию стандартизации в мире (ISOS - от греч. - "равный") IEC - международная электротехническая компания ПО, предназначенное для поставки пользователю. Для общих требования к ПП разрабатывает сама компания производителей, для заказных - организация-заказчик. - область человеческой интеллектуальной деятельности, направленной на применение достижений науки и использование законов и природных ресурсов для решения конкретных проблем, целей, задач. - изобретение, разработка, создание, внедрение, ремонт, обслуживание и улучшение техники, материалов, процессов. Фридрих Л. Бауэр ввёл термин ПИ -созда
Оглавление

Основные понятия

  • Программа - набор операторов, который может быть представлен как единое целое в некоторой вычислительной системе и который используется для управления поведением этой системы.
Никлаус Вирт - один из основателей языков программирования. Программы = алгоритмы + структуры данных
  • Программирование (имеет несколько определений)
  1. Раздел прикладной математики вычислительной техники, разрабатывающий методы составления программ для ЭВМ.
  2. Вид деятельности, необходимый для организации различных программ на ЭВМ.
  3. Процесс создания компьютерных технологий.
  • Профессиональное программирование - деятельность, направленная на получение доходов при помощи программирования (имеется потребитель, готовый платить за продукт)

- Вывод: профессиональное производство программ - это коллективная деятельность, в которой участвует минимум 2 человека: программист и заказчик.

  • Профессиональный программист - человек, который занимается профессиональным программированием

Определения понятия ПО (программное обеспечение)

Впервые понятие ввёл в 1958 году Джон Тьюки (математик из Принстонского университета)
  • Компьютерные программы и связанная с ними документация и данные (ISO/IEC 12207)
ISO - международная организация по стандартизации. Содействует развитию стандартизации в мире (ISOS - от греч. - "равный")
IEC - международная электротехническая компания
  • Совокупность программ системы обработки информации и программных документов, необходимых для эксплуатации этих программ (ГОСТ 19781-90)
  • Совокупность программ, процедур и правил относящихся к функционированию систем обработки данных (ISO 2382/1-84)
  • Множество развивающихся во времени предписаний, с помощью которого некоторый коллектив людей управляет и использует многопроцессорную и распределительную систему вычислительных устройств.

Программный продукт (ПП)

ПО, предназначенное для поставки пользователю.

ПП бывает двух типов:

  1. Общие(коробочные) - разработанные для продажи многим пользователям.
  2. Заказные - выполненные по заказу определенного потребителя.

Отличия между общими и заказными

Для общих требования к ПП разрабатывает сама компания производителей, для заказных - организация-заказчик.

Программная инженерия (ПИ)

Инженерия

- область человеческой интеллектуальной деятельности, направленной на применение достижений науки и использование законов и природных ресурсов для решения конкретных проблем, целей, задач.

Цели инженерной деятельности

- изобретение, разработка, создание, внедрение, ремонт, обслуживание и улучшение техники, материалов, процессов.

ПИ

Фридрих Л. Бауэр ввёл термин ПИ

-создание и использование обоснованных инженерных принципов для получения экономичного и эффективного ПО (Ф. Бауэр)

-та форма инженерии, которая применяет принципы информатики для рентабельного решения проблем(CMU/SEL-90-TR-003)

CMU/SEI - институт программной инженерии Карнеги-Меллон (американский научно-исследовательский центр)

-применение систематического дисциплинированного, измеряемого, подхода к разработке использованию и сопровождению ПО (IEEE 1990)

IEEE - институт инженеров электротехники

-дисциплина, целью которой является создание качественного ПО, которое завершается вовремя, не превышает выделенных бюджетных средств и удовлетворяет выдвинутым требованиям (С.Шах 1999г.)

-инженерная дисциплина, которая связана со всеми аспектами создания ПО от начальных стадий разработки до поддержки системы после сдачи в эксплуатацию.

Инженерная дисциплина

  • ориентирована на практический результат.
  • применение теории, методов и способов для достижения результата.
  • Лучшие практики. В ПИ - это надор инженерных методов или способов, теоретически возможно не обоснованных, но получивших неоднократное подтверждение на практике.
  • Работа в условиях ограниченного бюджета, времени, оборудования и людей.

Все аспекты производства ПО

  1. Управление программными проектами, т.е. не только технические вопросы производства ПО, но и вопросы планирования финансирования, управления коллективом и т.д.
  2. Разработка средств, методов и теорий для поддержки процесса производства ПО.

Общие для всех инженеров характеристики

  1. Инженеры в своей деятельности принимают решения, оценивая альтернативы и выбирая подход, оптимально соответствующий решаемой задаче.
  2. Инженеры, по возможности, работают с использованием измеримых количественных характеристик.
  3. Инженеры понимают важность вопроса эффективности организации командной работы.
  4. Инженеры используют инструментальные средства, поэтому выбор и использование подходящих средств является крайне важным вопросом.
  5. Инженеры могут отвечать за выполнение самого широкого спектра задач, начиная с исследований, разработки, проектирования, производства, тестирования, внедрения, эксплуатации и управления и заканчивая продажами, консультированием и обучением.
  6. Инженеры объединяются в профессиональные сообщества.

Инженеры в ПИ

-это специалисты, выполняющие практические работы по реализации программ с применением теории, методов и средств компьютерной науки.

Инженер-программист должен

  1. Очень хорошо понимать структуру ПО
  2. Создавать качественные программы, которые могли бы работать на любом компьютере и решать сразу несколько задач.
  3. уметь дорабатывать уже существующие конструкции.
  4. Продумывать возможные проблемы, которые могут возникнуть в будущем и найти для них решение.

Основные функции инженера-программиста

  1. Анализирует потребности компании и текущее ПО
  2. Проверяет программы на соответствие требованиям организации и правильно ли они работают.
  3. Планирует, разрабатывает и внедряет ПО
  4. Тестирует новое или изменяет старое ПО
  5. Обслуживает ПО совместно с другими программистами в команде
  6. Управляет IT проектами: планирует, организовывает и контролирует исполнение
  1. знать языки программирования
  2. владеть основами тематического моделирования
  3. алгоритмизации разных видов типизации, знать базы данных
  4. знать разные ОС, веб-технологии и облачные данные
  5. создавать схемы ввода, обработки, хранения и вывода информации
  6. выбирать подходящие языки программирования
  7. разрабатывать программы в соответствии с техническим заданием
  8. проверять настраивать и тестировать ПО
  9. Корректировать ранее созданные программные решения
  10. внедрять и сопровождать программные средства
  11. писать техническую документацию и инструкции по использованию по
  12. уметь работать в команде
  13. выстраивать понятный для всех сторон диалог с заказчиком
  14. знать английский на уровне INDEPENDENT USER

Личные качества инженера-программиста

  • логическое мышление
  • внимательность
  • склонность к анализу и математике
  • самостоятельность
  • интерес к поиску новых решений
  • ответственность
  • самоорганизация
  • интерес к профессии и желание развиваться

Области знаний программной инженерии

основные области знаний

  • главные - требования к ПО, проектирование ПО, конструирование ПО, тестирование ПО, сопровождение ПО.
  • организационные - управление конфигурацией, управление в ПИ, процессы ПО, инструменты и методы ПО, качество ПО.

дополнительные области знаний

-разработка компьютеров, информатика, общий менеджмент, математика, управление проектами, управление качеством, системное проектирование.

Требования к ПО

Требования - свойства, которыми должно обладать ПО для адекватного определения: функций, условий и ограничений ПО, объемов данных, технического обеспечения, среды функционирования

Требования к ПО:

  • системные
  • функциональные - определяют назначение и функции системы, объясняют что должно быть сделано (не должно быть несовместимых и взаимоисключающих определений функции).
  • нефункциональные - определяют его эксплуатационные качества, т.е. определяет то, насколько хорошо будет работать система (часто такие характеристики называют атрибутами качества).

Атрибуты качества ПО

  1. Производительность - насколько быстро ПО выполняет функции (время отклика, пропускная способность). Жесткие требования к производительности существенно влияют на: выбор аппаратных средств, технологию разработки ПО, принимаемые инженерные решения при реализации.
  2. Надежность - возможность работы системы без сбоев в течении определенного времени. Для измерения надежности может быть использовано среднее время работы системы до сбоя.
  3. Доступность - Время в течении которого система доступна для использования и полностью работоспособна. Это время определяется средним временем до сбоя.
  4. Безопасность - блокировка неавторизованного доступа к данным и функциям системы, предотвращение потерь информации и т.п.
  5. Удобство и простота обслуживания - "дружелюбие" системы к пользователю (система должна использоваться эффективно и необременительно)
  6. Легкость сопровождения и эксплуатации - насколько просто и удобно модифицировать продукт и исправлять найденные в нем ошибки.
  7. Мобильность - определяет усилия, которые необходимы для переноса продукта из одной операционной среды в другую
  8. Повторное использование - затраты на повторно используемых компонентов сравнительно велики, но эффект их использования в дальнейшем может компенсировать эти затраты.
  9. Тестируемость - показывает легкость, с которой компоненты проекта или весь продукт могут быть проверены на наличие ошибки.

Внешние требования определяют

  • взаимодействие проектируемой системы с другими системами
  • требования по квалификации персонала
  • юридические требования
  • требования среди и т.п. требования

Требования к процессу разработки ПО

-определяют ограничения, связанные с использованием определенных технологий и стандартов разработки. примеры: использование определенного языка программирования и методов проектирования, требование к документации, срокам изготовления и т.д.

Системные требования

-описывают высокоуровневые требования к ПО, содержащему несколько или много взаимосвязей подсистем и приложений. Пример: тактовая частота процессора, объем памяти, требования к выбору операционной системы.

Основные этапы развития программирования

1. стихийное программирование(1946-1965)

  • отсутствие технологии программирования.
технология программирования- совокупность методов, приемов и средств для сокращения стоимости и повышение качества разработки программных систем.
  • Программирование в машинных кодах - сложность программ в машинных кодах: программисту необходимо было одновременно отслеживать последовательность выполняемых операций и местонахождение данных при программировании
  • Появление ассемблера - вместо двоичных и 16-ричных кодов стали использоваться символические имена данных и мнемоники кодов операций. В результате, программы стали более читаемыми.
  • Появление языков программирования высокого уровня. Это упростило программирование вычислений и позволило увеличить сложность программ.(Fortran, Algon)
  • Появляются средства работы с подпрограммами п/п-п/п можно было сохранять и использовать в других программах. В результате были созданы огромные библиотеки расчетных и служебных подпрограмм. Появление средств поддержки п/п позволило осуществить разработку ПО нескольким программистам параллельно.

2. структурный подход (1960-1970)

3. объектный подход(1980-2000)

4. компонентный подход(1990-сейчас)