Создание программного обеспечения - это дисциплина программная инженерия. Это подробное создание работающего значимого программного обеспечения посредством комбинации кодирования, проверки, модульного тестирования, интеграционного тестирования и отладка. Он связан со всеми другими дисциплинами разработка программного обеспечения, в первую очередь с проектированием программного обеспечения и тестированием программного обеспечения.
Необходимость уменьшения сложности в основном обусловлена ограниченной способностью большинства людей удерживать сложные структуры и информацию в своей работе воспоминания. Уменьшение сложности достигается за счет создания кода, который скорее прост и удобочитаем, чем продуман. Минимизация сложности достигается за счет использования стандартов и множества специальных методов в кодировании. Он также поддерживается методами качества, ориентированного на конструирование.
Предвидение изменений помогает разработчикам программного обеспечения создавать расширяемое программное обеспечение, что означает, что они могут улучшать программный продукт без нарушение базовой структуры. Исследования, проведенные за 25 лет, показали, что стоимость доработки может быть в 10-100 раз (в 5-10 раз для небольших проектов) дороже, чем выполнение требований с первого раза. Учитывая, что 25% требований меняются во время разработки в среднем по проекту, необходимость снижения затрат на доработку проясняет необходимость упреждения изменений.
Создание для проверки означает создание программного обеспечения таким образом, чтобы с помощью программного обеспечения можно было легко выявлять ошибки. инженеры, пишущие программное обеспечение, а также при независимом тестировании и эксплуатационных мероприятиях. Конкретные методы, поддерживающие конструирование для проверки, включают следующие стандарты кодирования для поддержки обзоров кода, модульное тестирование, организацию кода для поддержки автоматическое тестирование и ограниченное использование сложных или трудных для понимания языковых структур, среди прочего.
Систематическое повторное использование может обеспечить значительное повышение производительности, качества и стоимости программного обеспечения. Повторное использование имеет два тесно связанных аспекта:
Стандарты, внешние (созданные международными организациями) или внутренние (созданные на корпоративном уровне), которые напрямую влияют на вопросы строительства, включают:
Многочисленные модели были созданы для разработки программного обеспечения, некоторые из которых делают упор на конструирование больше, чем другие. Некоторые модели более линейны с точки зрения построения, например, Waterfall и модели жизненного цикла поэтапной доставки. Эти модели рассматривают строительство как деятельность, которая происходит только после выполнения значительных предварительных работ, включая подробные требования работы, обширные проектные работы и подробные планирование. Другие модели более итеративные, такие как эволюционное прототипирование, Extreme Programming и Scrum. Эти подходы обычно рассматривают строительство как деятельность, которая происходит одновременно с другими разработкой программного обеспечения, включая требования, проектирование и планирование, или перекрывает их.
Выбор метода строительства является ключевым аспектом деятельности по планированию строительства. Выбор конструкции метод влияет на степень выполнения предварительных условий построения (например, Анализ требований, Разработка программного обеспечения и т. Д.), Порядок, в котором они выполнены, и степень, в которой они должны быть завершены до начала строительных работ. Планирование строительства также определяет порядок, в котором компоненты создаются и интегрируются, процессы управления качеством программного обеспечения, распределение задач между конкретными разработчиками программного обеспечения и другие задачи в соответствии с выбранным методом .
Можно измерить множество строительных работ и артефактов, включая разработку кода, изменение кода, повторное использование кода, уничтожение кода, сложность кода, статистику проверки кода, скорость устранения и обнаружения неисправностей, объем работ и планирование. Эти измерения могут быть полезны для целей управления строительством, обеспечения качества во время строительства, улучшения процесса строительства, а также по другим причинам.
Создание программного обеспечения определяется многими практическими соображениями :
Чтобы учесть непредвиденные пробелы в разработке программного обеспечения, во время разработки программного обеспечения необходимо внести некоторые изменения в проект в меньшем или большем масштабе, чтобы конкретизировать детали дизайна программного обеспечения.
Низкое Разветвление - одна из характеристик дизайна, признанных исследователями полезными. Сокрытие информации оказалось полезным методом проектирования в больших программах, что облегчило их изменение в 4 раза.
Строительные языки включают в себя все формы общения, с помощью которых человек может указать исполняемое решение проблемы для компьютера. К ним относятся языки конфигурации, языки инструментальных средств и языки программирования :
Программисты, работающие на языке, который они использовали в течение трех или более лет, примерно на 30 процентов более продуктивны, чем программисты с аналогичным опытом, которые плохо знакомы с языком. Языки высокого уровня, такие как C ++, Java, Smalltalk и Visual Basic, обеспечивают в 5-15 раз большую производительность, надежность, простоту и понятность, чем языки низкого уровня, такие как ассемблер и C. Эквивалентный код, как было показано, требует меньшего количества строк для должны быть реализованы на языках высокого уровня, чем на языках более низкого уровня.
Следующие соображения относятся к деятельности по кодированию конструирования программного обеспечения:
Целью тестирования конструкции является уменьшение промежуток между временем, когда ошибки вставляются в код, и временем обнаружения этих ошибок. В некоторых случаях тестирование конструкции выполняется после написания кода. В программировании "сначала тестирование" тестовые примеры создаются до написания кода. Построение включает две формы тестирования, которые часто выполняются инженером-программистом, написавшим код :
Реализация повторное использование программного обеспечения влечет за собой нечто большее, чем создание и использование библиотек активов. Это требует формализации практики повторного использования путем интеграции процессов и действий повторного использования в жизненный цикл программного обеспечения. Задачи, связанные с повторным использованием в построении программного обеспечения во время кодирования и тестирования, следующие:
Основные методы, используемые для обеспечения качества кода при его построении, включают:
Исследования показали, что для достижения высокой скорости обнаружения дефектов необходимо использовать комбинацию этих методов. Другие исследования показали, что разные люди склонны находить разные дефекты. Одно исследование показало, что экстремальное программирование практики парного программирования, настольная проверка, модульное тестирование, интеграционное тестирование и регрессионное тестирование позволяет достичь 90% -ной степени обнаружения дефектов. Эксперимент с участием опытных программистов показал, что в среднем они могли найти 5 ошибок (в лучшем случае 9) из 15 ошибок путем тестирования.
80% ошибок, как правило, сосредоточены в 20% классов проекта. и рутины. 50% ошибок обнаруживаются в 5% классов проекта. IBM смогла сократить количество дефектов, о которых сообщает заказчик, в десять раз и сократить их бюджет на обслуживание на 45% в своей системе IMS, отремонтировав или переписав только 31 класс из 425. Около 20% рутинных операций проекта составляют 80% затрат на разработку. Классическое исследование IBM показало, что несколько подпрограмм OS / 360, подверженных ошибкам, были самыми дорогими. У них было около 50 дефектов на 1000 строк кода, и их исправление стоит в 10 раз больше, чем требовалось для разработки всей системы.
Ключевым действием во время создания является интеграция отдельно созданных подпрограммы, классы, компоненты и подсистемы. Кроме того, конкретная программная система может нуждаться в интеграции с другими программными или аппаратными системами. Проблемы, связанные с интеграцией строительства, включают планирование последовательности, в которой будут интегрированы компоненты, создание строительных лесов для поддержки промежуточных версий программного обеспечения , определение степени тестирование и качество работа, выполняемая над компонентами перед их интеграцией, и определение точек проекта, в которых промежуточные версии программного обеспечения протестированы.
Объектно-ориентированные языки поддерживают ряд механизмов времени выполнения, которые повышают гибкость и адаптируемость программ например, абстракция данных, инкапсуляция, модульность, наследование, полиморфизм и отражение.
Абстракция данных - это процесс, с помощью которого данные и программы определяются в представлении, аналогичном по форме их значению, но при этом скрывая детали реализации. Академические исследования показали, что абстракция данных делает программы примерно на 30% проще для понимания, чем функциональные программы.
Утверждения - это исполняемые предикаты, которые помещаются в программу, которая разрешить проверки программы во время выполнения. Дизайн по контракту - это подход к разработке, в котором предварительные и постусловия включены для каждой процедуры. Защитное программирование - это защита подпрограммы от нарушения неправильными входами.
Обработка ошибок относится к программированию практика предвидения и кодирования ошибок, которые могут возникнуть при выполнении программы. представляет собой конструкцию языка программирования или аппаратный механизм, предназначенный для обработки возникновения исключений, особых условий, которые изменяют нормальный поток выполнения программы. Отказоустойчивость - это набор методов, которые повышают надежность программного обеспечения путем обнаружения ошибок, а затем восстановление из них, если возможно, или сдерживание их эффектов, если восстановление невозможно.
Программирование на основе состояний - это технология программирования, использующая конечные автоматы для описания поведение программы. Табличный метод - это схема, которая использует таблицы для поиска информации, а не логические операторы (например, if и case).
Конфигурация среды выполнения - это метод, который связывает значения переменных и настройки программы во время работы программы, обычно путем обновления и чтения файлов конфигурации в оперативном режиме. Интернационализация - это техническая деятельность по подготовке программы, обычно интерактивного программного обеспечения, для поддержки нескольких локалей. Соответствующее действие, локализация, представляет собой действие по изменению программы для поддержки определенного местного языка.