Следующий план представляет собой обзор и тематическое руководство по разработке программного обеспечения:
Программная инженерия - применение систематического, дисциплинированного, поддающегося количественной оценке подхода к разработке, эксплуатации и обслуживанию программного обеспечения ; это приложение инженерии к программному обеспечению . [1]
Система ACM Computing Classification - это полииерархическая онтология, которая организует темы области и может использоваться в семантических веб-приложениях и в качестве стандартной системы классификации deacto для этой области. Основной раздел «Программное обеспечение и его разработка» предоставляет схему и онтологию для разработки программного обеспечения.
Технологии и практики
Квалифицированные инженеры- программисты используют технологии и методы из различных областей, чтобы повысить свою продуктивность при создании программного обеспечения и улучшить качество поставляемого продукта.
Программные приложения
Программные инженеры строят программное обеспечение ( приложения , операционные системы , системное программное обеспечение ) , которые люди используют.
Приложения влияют на разработку программного обеспечения, заставляя разработчиков решать проблемы новыми способами. Например, потребительское программное обеспечение делает упор на низкую стоимость, медицинское программное обеспечение - на высокое качество, а программное обеспечение для интернет-торговли - на быстрое развитие.
- Программное обеспечение для бизнеса
- Аналитика
- Авиабилеты Бронирование
- Банковское дело
- Банкоматы
- Обработка чеков
- Кредитные карты
- Коммерция
- Торговля
- Аукционы (например, eBay)
- Обратные аукционы (закупки)
- Сканеры штрих-кода
- Компиляторы
- Коммуникация
- Электронная почта
- Мессенджеры
- VOIP
- Календари - планирование и координация
- Связаться с менеджерами
- Компьютерная графика
- Анимация
- Спецэффекты для видео и кино
- Редактирование
- Постобработка
- Криптография
- Базы данных , поддерживают почти все поля
- Встроенные системы Как инженеры-программисты, так и традиционные инженеры пишут программные системы управления для встраиваемых продуктов.
- Автомобильное программное обеспечение
- Программное обеспечение авионики
- Программное обеспечение для отопления, вентиляции и кондиционирования ( HVAC )
- Программное обеспечение медицинского оборудования
- Телефония
- Телеметрия
- Инжиниринг Все традиционные инженерные отрасли широко используют программное обеспечение. Инженеры используют электронные таблицы больше, чем когда-либо использовали калькуляторы. Инженеры используют специальные программные инструменты для проектирования, анализа и моделирования своих собственных проектов, таких как мосты и линии электропередач. Эти проекты во многом напоминают программное обеспечение, поскольку работа существует в виде электронных документов и проходит этапы анализа, проектирования , внедрения и тестирования. Программные инструменты для инженеров используют принципы информатики; а также принципы математического анализа, физики и химии.
- Компьютерный дизайн (САПР)
- Автоматизация электронного проектирования (EDA)
- Численный анализ
- Моделирование
- Файл
- FTP
- Обмен файлами
- Синхронизация файлов
- Финансы
- Рынок облигаций
- Рынок фьючерсов
- Фондовый рынок
- Игры
- Покер
- Многопользовательские подземелья
- Видеоигры
- Информационные системы , поддерживают практически все области
- ЛИС Управление лабораторными данными
- MIS Управление финансовыми и кадровыми данными
- Логистика
- Управление цепочками поставок
- Производство
- Компьютерное производство (CAM)
- Распределенные системы управления (РСУ)
- Музыка
- Музыкальные секвенсоры
- Звуковые эффекты
- Музыкальный синтез
- Сетевое управление
- Система управления сетью
- Система управления элементами
- Система поддержки операций
- Системы поддержки бизнеса
- Сети и Интернет
- система доменных имен
- Протоколы
- Маршрутизаторы
- Офисные апартаменты
- Текстовые процессоры
- Таблицы
- Презентаций
- Операционные системы
- Встроенный
- Графический
- Многозадачность
- В реальном времени
- Робототехника
- Обработка сигналов , кодирование и интерпретация сигналов
- Обработка изображений , кодирование и интерпретация визуальной информации
- Обработка речи
- Распознавание текста
- Распознавание почерка
- Моделирование , поддерживает почти все области.
- Инженерное дело . Программное моделирование может быть дешевле в создании и более гибким для изменения, чем физико- инженерная модель .
- Наук
- Наук
- Геномика
- Управление трафиком
- Управления воздушным движением
- Управление движением судов
- Управление дорожным движением
- Обучение
- Сверлить
- Моделирование
- Тестирование
- Визуализация , поддерживает почти все поля
- Архитектура
- Инженерное дело
- Наук
- Голосование
- Всемирная сеть
- Браузеры
- Серверы
Темы программной инженерии
Многие технологии и практики (в основном) ограничиваются разработкой программного обеспечения, хотя многие из них используются совместно с информатикой .
Языки программирования | |||
---|---|---|---|
Ада | APL | B | |
КОБОЛ | Паскаль | C | C ++ |
C # | Clojure | Common Lisp | D |
Холодный синтез | Delphi | Дилан | Эйфелева |
Erlang | Фортран | F # | Groovy |
Ява | Лассо | ML | OCaml |
Perl | PHP | PL / SQL | Пролог |
Идти | Ржавчина | Быстрый | JavaScript |
Haskell | Python | Рубин | Scala |
Схема | Болтовня | Tcl | T-SQL |
Verilog | VHDL | Visual Basic | Visual Basic .NET |
Язык ассемблера • • • Язык сценариев • • • Список языков программирования |
Парадигма программирования, основанная на технологии языка программирования
- Объектно-ориентированное программирование
- Аспектно-ориентированное программирование
- Функциональная декомпозиция
- Структурированное программирование
- Программирование на основе правил
Базы данных
- Иерархический
- Объект
- Реляционный
- SQL / XML
- SQL
- MYSQL
- NoSQL
Графические пользовательские интерфейсы
- Набор инструментов GTK + GIMP
- wxWidgets
- Окончательный ++
- Набор инструментов Qt
- ФЛТК
Инструменты программирования
- Управление конфигурацией и управление исходным кодом
- CVS
- Subversion
- Git
- Mercurial
- RCS
- GNU Arch
- Синхронизатор LibreSource
- Сервер Team Foundation
- Visual Studio Team Services
- Инструменты сборки
- Делать
- Грабли
- Кабала
- Муравей
- КАДЕС
- Нант
- Maven
- Окончательный строитель
- Gradle
- Сервер Team Foundation
- Visual Studio Team Services
- Визуальная сборка Pro
- Редакторы
- Интегрированные среды разработки (IDE)
- Текстовые редакторы
- Текстовые процессоры
- Инструменты создания парсеров
- Якк / Бизон
- Инструменты статического анализа кода
Библиотеки
- Компонентная разработка программного обеспечения
Языки дизайна
- Единый язык моделирования (UML)
Шаблоны, документируют множество распространенных методов программирования и управления проектами.
- Анти-паттерны
- Узоры
Процессы и методологии
- Гибкий
- Гибкая разработка программного обеспечения
- Экстремальное программирование
- Бережливая разработка программного обеспечения
- Быстрая разработка приложений (RAD)
- рациональный унифицированный процесс
- Scrum (в управлении)
- Тяжеловес
- Чистая комната
- ИСО / МЭК 12207 - процессы жизненного цикла программного обеспечения
- ISO 9000 и ISO 9001
- Модели процессов
- CMM и CMMI / SCAMPI
- ISO 15504 (SPICE)
- Метамодели
- ISO / IEC 24744
- СПЭМ
Платформы
Платформа объединяет компьютерное оборудование и операционную систему. По мере того, как платформы становятся более мощными и дешевыми, приложения и инструменты становятся более доступными.
- BREW
- Суперкомпьютеры Cray
- Миникомпьютеры DEC
- Мэйнфреймы IBM
- ПК с Linux
- Классический Mac OS и MacOS ПК
- Microsoft .NET
- КПК на ладони
- Sun Microsystems Solaris
- ПК с Windows ( Wintel )
- ОС Symbian
Прочие методы
- Коммуникация
- Методология
- Парное программирование
- Производительность
- Производительность программирования
- Рефакторинг
- Инспекции программного обеспечения / обзоры кода
- Повторное использование программного обеспечения
- Системная интеграция
- Командная работа
Прочие инструменты
- Таблицы решений
- Характерная черта
- Истории пользователей
- Сценарии использования
Темы информатики
Квалифицированные инженеры-программисты знают много компьютерных наук, включая то, что возможно и что невозможно, а что легко и сложно для программного обеспечения.
- Алгоритмы , четко определенные методы решения конкретных задач.
- Searching
- Сортировка
- Парсинг
- Численный анализ
- Теория компилятора
- Якк / Бизон
- Структуры данных , четко определенные методы для хранения и извлечения данных.
- Списки
- Деревья
- Хеш-таблицы
- Вычислимость , некоторые проблемы вообще невозможно решить
- Список нерешенных проблем информатики
- Проблема с остановкой
- Сложность , некоторые проблемы решаемы в принципе, но не решаемы на практике
- Полнота НП
- Теория вычислительной сложности
- Формальные методы
- Доказательство правильности
- Программный синтез
- Адаптивные системы
- Нейронные сети
- Эволюционные алгоритмы
Темы математики
Дискретная математика - ключевая основа программной инженерии.
- Количество представление
- Набор (информатика)
- Сумки
- Графики
- Последовательности
- Деревья
- График (структура данных)
- Логика
- Удержание
- Логика первого порядка
- Логика высшего порядка
- Комбинаторная логика
- Индукция
- Комбинаторика
Другой
- Базовые знания
- Статистика
- Теория принятия решений
- Теория типов
Фазы жизненного цикла
- Развитие фазы жизненного цикла
- Сбор / анализ требований
- Архитектура программного обеспечения
- Компьютерное программирование
- Тестирование , обнаружение ошибок
- Тестирование черного ящика
- Тестирование белого ящика
- Гарантия качества , гарантирует соблюдение процесса.
- Фаза жизненного цикла продукта и жизненный цикл проекта
- Зарождение
- Первая разработка
- Основной выпуск
- Незначительный выпуск
- Выпуск исправления ошибки
- Обслуживание
- Моральное устаревание
- Стадия разработки релиза , ближе к концу цикла релиза
- Альфа
- Бета
- Золотой мастер
- 1.0 ; 2.0
- Жизненный цикл разработки программного обеспечения
- Модель водопада - Структурированное программирование и пошаговое уточнение
- SSADM
- Спиральная модель - Итеративная разработка
- V-модель
- Гибкая разработка программного обеспечения
- DSDM
- Модель Хаоса - Стратегия Хаоса
Практические результаты
Для многих проектов SE необходимо разработать конечные результаты. Программные инженеры редко делают все эти результаты самостоятельно. Обычно они сотрудничают с авторами, инструкторами, установщиками, маркетологами, сотрудниками службы технической поддержки и другими людьми, которые делают многие из этих результатов.
- Прикладное программное обеспечение - программное обеспечение
- База данных - схемы и данные.
- Документация в Интернете и / или в печати, часто задаваемые вопросы , ознакомительные сведения , примечания к выпуску , справка для каждой роли
- Пользователь
- Администратор
- Менеджер
- Покупатель
- Политика администрирования и обслуживания , что нужно архивировать, проверять, настраивать, ...
- Установщики
- Миграция
- Обновление с предыдущих установок
- Обновление с установок конкурентов
- Учебные материалы для каждой роли
- Пользователь
- Администратор
- Менеджер
- Покупатель
- Поддержка Информация для групп компьютерной поддержки.
- Маркетинговые и торговые материалы
- Официальные документы , объясняющие технологии, используемые в приложениях
Деловые роли
- Операции
- Пользователи
- Администраторы
- Менеджеры
- Покупатели
- Разработка
- Аналитики
- Программисты
- Тестеры
- Менеджеры
- Бизнес
- Консультации - настройка и установка приложений
- Продажи
- Маркетинг
- Юридические - контракты, права интеллектуальной собственности
- Конфиденциальность и конфиденциальность
- Поддержка - помощь клиентам в использовании приложений
- Персонал - наем и обучение квалифицированного персонала
- Финансы - финансирование новых разработок
- Academe
- Педагоги
- Исследователи
Темы управления
- Лидерство
- Коучинг
- Коммуникация
- Прослушивание
- Мотивация
- Vision , SE хороши в этом
- Пример , все лучше всего следуют хорошему примеру
- Управление человеческими ресурсами
- Наем , привлечение людей в организацию
- Обучение
- Оценка
- Управление проектом
- Постановка целей
- Взаимодействие с клиентами (переосмыслить)
- Оценка
- Управление рисками
- Управление изменениями
- Управление процессом
- Процессы разработки программного обеспечения
- Метрики
Деловые темы
- Качественные программы
- Национальная премия за качество Малкольма Болдриджа
- Шесть Сигм
- Общее управление качеством (TQM)
Профессия программиста
- Демография программной инженерии
- Экономика программной инженерии
- CCSE
- История программной инженерии
- Профессионализм программной инженерии
- Этика
- Лицензирование
- Юридический
- Интеллектуальная собственность
- Защита потребителя
История программной инженерии
История программной инженерии
Пионеры
Многие люди внесли важный вклад в технологии, практики или приложения SE.
- Джон Бэкус : Fortran , первый оптимизирующий компилятор, BNF
- Виктор Василий : Фабрика опыта.
- Ф.Л. Бауэр : Принцип стека , популяризировал термин « программная инженерия».
- Кент Бек : Рефакторинг , экстремальное программирование , парное программирование , разработка через тестирование .
- Тим Бернерс-Ли : Всемирная паутина
- Барри Бем : экономика SE , COCOMO , спиральная модель .
- Грэди Буч : объектно-ориентированный дизайн , UML .
- Фред Брукс : Управляемая система 360 и OS 360 . Написал «Мифический человеко-месяц и без серебряной пули» .
- Ларри Константин : структурированный дизайн , взаимосвязь , сплоченность
- Эдсгер Дейкстра : Написал заметки о структурированном программировании , дисциплине программирования и утверждении, которое считается вредным , алгоритмах , формальных методах , педагогике .
- Майкл Фэган : Проверка программного обеспечения .
- Том Gilb : метрики программного обеспечения , инспекции программного обеспечения , Эволюционная доставки ( «Эво») .
- Адель Голдстайн : написала руководство по эксплуатации ENIAC , первого электронного цифрового компьютера, и обучила некоторых из первых компьютеров человека.
- Лоис Хейбт : FORTRAN , написал первый парсер
- Маргарет Гамильтон : придумала термин «программная инженерия», разработала универсальный системный язык.
- Мэри Джин Харролд : регрессионное тестирование , локализация неисправностей
- Грейс Хоппер : Первый компилятор (Mark 1), COBOL , Наносекунды .
- Уоттс Хамфри : модель зрелости возможностей , персональный программный процесс , сотрудник Института программной инженерии .
- Жан Ичбия : Ада
- Майкл А. Джексон : Джексон Структурное программирование , Джексон Разработка системы
- Билл Джой : Беркли Unix , vi , Java .
- Алан Кей : Smalltalk
- Брайан Керниган : C и Unix.
- Дональд Кнут : написал искусство компьютерного программирования , TeX , алгоритмы , грамотное программирование
- Нэнси Левесон : Системная безопасность
- Бертран Мейер : Дизайн по контракту , язык программирования Eiffel .
- Питер Г. Нойман : Дайджест РИСКОВ , ACM Sigsoft.
- Давид Парнас : Модульный дизайн, социальная ответственность, профессионализм.
- Дэвид Пирсон, специалист по информатике : разработал систему разработки программного обеспечения ICL CADES .
- Джеф Раскин : разработал оригинальный графический интерфейс Macintosh , автор The Humane Interface.
- Деннис Ричи : C и Unix .
- Уинстон В. Ройс : Модель водопада .
- Мэри Шоу : Архитектура программного обеспечения .
- Ричард Столмен : основатель Фонда свободного программного обеспечения
- Линус Торвальдс : Ядро Linux , свободное программное обеспечение / разработка с открытым исходным кодом .
- Will Tracz : повторное использование, ACM Software Engineering Notes.
- Джеральд Вайнберг : написал книгу «Психология компьютерного программирования» .
- Элейн Вейкер : Тестирование программного обеспечения
- Жаннетт Винг : Официальные спецификации .
- Эд Йордон : « Структурированное программирование» , написал «Упадок и падение американского программиста» .
Смотрите также
- Список программистов
- Список компьютерных ученых
Известные публикации
- О Face: Основы дизайна пользовательского интерфейса с помощью Алана Купера , о дизайне пользовательского интерфейса. ISBN 0-7645-2641-3
- Capability Maturity Model по Watts Humphrey . Написано для Института программной инженерии с упором на управление и процессы. (См. Управление программным процессом.ISBN 0-201-18095-2 )
- Собор и базар от Эрика Рэймонда о развитииоткрытым исходным кодом.
- Упадок и падение американского программатора по Ed Иордан предсказывают конец разработки программного обеспечения в США ISBN 0-13-191958-X
- Дизайн Шаблоны от Erich Gamma , Ричард Хелм , Ральф Джонсон и Джон Влиссидес . ISBN 0-201-63361-2
- Экстремальное программирование Разъяснения по Кент БекISBN 0-321-27865-8
- Эдсгер Дейкстра " Пойти к заявлению, которое считается вредным " .
- Интернет, инновации и Open Source: Актеры в Сети - первый понедельник статья Илкки Tuomi (2000) Источник
- Мифический человеко-месяц по Фред Брукс , об управлении проектами. ISBN 0-201-83595-9
- Объектно-ориентированный анализ и проектирование с помощью Гради Буч . ISBN 0-8053-5340-2
- Кадровое от Тома Демарко и Тимоти Листер. ISBN 0-932633-43-9
- Прагматичный инженер против научного дизайнера по EW Дейкстра [1]
- Принципы инженерного управления программного обеспечения от Тома Gilb об эволюционных процессах. ISBN 0-201-19246-2
- Психология компьютерного программирования на Gerald Weinberg . Написано как независимый консультант, частично о годах, проведенных в IBM. ISBN 0-932633-42-0
- Рефакторинг: улучшение существующего кода на Мартина Фаулера , Кент Бек , Джон Брант, Уильям Opdyke и Дон Робертс. ISBN 0-201-48567-2
- Прагматические Программист: от подмастерья к мастеру по Эндрю Хант и Дэвид Томас . ISBN 0-201-61622-X
- Свод знаний по программной инженерии (SWEBOK) ISO / IEC TR 19759
Смотрите также:
- Важные публикации по программной инженерии в CS.
Связанные поля
- Информатика
- Информационная инженерия
- Информационные технологии
- Традиционная инженерия
- Компьютерная инженерия
- Электротехника
- Программная инженерия
- Доменная инженерия
- Инженерия информационных технологий
- Инженерия знаний
- Разработка пользовательского интерфейса
- Веб-инженерия
- Искусство и наука
- Математика
- Информатика
- Информационная наука
- Программное обеспечение
- Информационные системы
- Программирование
- Системная инженерия
Смотрите также
- Указатель статей по программной инженерии
- Разработка программного обеспечения на основе поиска
- SWEBOK: совокупность знаний в области программной инженерии
- Учебная программа CCSE Computing для разработки программного обеспечения
- Этимология компьютерных терминов , происхождение компьютерных терминов
- Сложность или масштабирование
- Синдром второй системы
- оптимизация
- Условное депонирование исходного кода
- Проблема взаимодействия функций
- Сертификация (программная инженерия)
- Инженерные катастрофы # Сбой из-за программного обеспечения
- План разработки программного обеспечения
Рекомендации
- ^ Бурк, Пьер; Дюпюи, Роберт, ред. (2004). Руководство по программной инженерии Своду знаний - 2004 Version . Компьютерное общество IEEE . п. 1. ISBN 0-7695-2330-7.
Внешние ссылки
- Система классификации вычислений ACM
- Руководство к Своду знаний по программной инженерии (SWEBOK)
- Профессиональные организации
- Британское компьютерное общество
- Ассоциация вычислительной техники
- IEEE Computer Society
- Профессионализм
- Этический кодекс SE
- Профессиональное лицензирование в Техасе
- Образование
- Программа бакалавриата CCSE
- Стандарты
- Стандарты разработки программного обеспечения IEEE
- Инженерная группа Интернета
- ISO
- Правительственные организации
- Европейский институт программного обеспечения
- Институт программной инженерии
- Гибкий
- Организация по продвижению гибкой разработки программного обеспечения
- Разработка через тестирование
- Экстремальное программирование
- Другие организации
- Интернет-сообщество для разработчиков программного обеспечения
- Сообщество программной инженерии
- Демография
- Бюро статистики труда США на SE
- Обзоры
- Страница Дэвида Редмайлса с сайта Калифорнийского университета
- Другой
- Полный текст в формате PDF с конференции НАТО в Гармише
- Компьютерные риски Колонка рисков Питера Дж. Ноймана .