ЛЕКЦИЯ №1

ТЕМА 1. ОСНОВНЫЕ ЭТАПЫ РЕШЕНИЯ ЗАДАЧ НА ЭВМ. КРИТЕРИИ КАЧЕСТВА ПРОГРАММЫ

ВОПРОСЫ:

1)  Цель и задачи дисциплины

2)  Программное обеспечение ЭВМ.

3)  Машинный язык и языки высокого уровня.

4)  Основные этапы решения задач на ЭВМ – постановка задачи, разработка алгоритма, составление программы, трансляция, отладка и выполнение, анализ результатов.

5)  Критерии качества программного продукта. Пути повышения надежности программного обеспечения.

1. Цель и задачи дисциплины.

Цели дисциплины:

- сформировать систему знаний в области теории и практики применения языков и систем программирования в объёме необходимом для эффективной разработки, реализации, отладки, тестирования и документирования высококачественного программного обеспечения;

- создать у студентов упорядоченную систему знаний о реальных возможностях современных языков и систем программирования;

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

Задачи дисциплины:

- развить у студентов творческий подход к выбору языков и систем программирования для организации эффективного учебного процесса;

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

2. Программное обеспечение ЭВМ.

Программное обеспечение условно можно разделить на 3 класса:

·  системное ПО,

·  прикладное ПО,

·  инструментальное ПО.

НЕ нашли? Не то? Что вы ищете?

1) Системное программное обеспечение, в свою очередь, состоит из базового ПО и сервисного ПО.

Базовое ПО поставляется вместе с компьютером и обеспечивает его работоспособность. В состав базового ПО входит операционная система, операционная оболочка и сетевые программные средства.

Операционная система предназначена:

·  для запуска и нормальной работы компьютера,

·  для функционирования других программ на компьютере,

·  для диагностики и контроля работоспособности блоков и узлов компьютера,

·  для выполнения других вспомогательных технологических процессов.

В настоящее время разработано большое количество ОС, различающихся по возможностям их функционирования: в режимах: одно - и многопользовательских, одно - и многозадачных, поддерживающих сетевые режимы и др. Широкое применение нашли следующие ОС: Windows, Linux, Mac Ware, OS 2, Solaris, QNX, MS DOS и др.

Оболочка ОС предназначена для комфортного общения пользователя с ЭВМ. Она снимает проблему управления компьютером с помощью набора команд в командной строке и их запуска на исполнение. Оболочка ОС реализует текстовый или/и графический интерфейс. Например, в ОС MS DOS в качестве такой надстройки выступает программ а-обол очка Norton Commander, реализующая текстовый интерфейс в виде двух таблиц с директориями файловой системы, а в ОС Windows (и Mac OS) интерфейс оболочки - графический; имеется также текстовый интерфейс, реализуемый программой Windows Commander.

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

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

В настоящее время такие известные операционные системы как Windows ХР. MAC OS и некоторые другие включают в себя все вышеперечисленные компоненты системного ПО. являясь по существу комплексным системным ПО.

2) Прикладное программное обеспечение предназначено для решения различных задач из конкретных предметных областей.

ПО общего назначения обычно комплектуется в пакетном варианте. Например, для ОС Windows имеется пакет прикладных программ Microsoft Office, включающий программные средства для создания текстовых документов (Word), электронных таблиц (Excel), презентаций (Power Point), публикаций (Publisher), базы данных (Access), для подготовки и редактирования Web-документов (FrontPage).

В этот пакет также входит ряд дополнительных программных средств: Picture Manager для просмотра, систематизации и редактирования графики. Document Imaging для просмотра, чтения и распознавания текста в графических документах и факсах. Document Scanning для сканирования многостраничных документов и распознавания текста в графических документах, файл библиотеки картинок и др.

ПО мультимедиа предназначено для создания и использования двумерной и трёхмерной графики, анимации, аудио и видео файлов. Представителями этих ПО являются широко известные программные комплексы Adobe Photoshop для создания и редактирования двумерной графики. 3D Studio Мах для трёхмерного моделирования и проектирования. Macromedia Flash для анимации и мультипликации. Для обработки и редактирования звука используются популярные программы Nero. Audio Editor Gold, для воспроизведения звука и видео Windows Media Player. QuickTime Player и др.

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

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

3) Инструментальное программное обеспечение предназначено для разработки новых программ и программных комплексов.

Множество различных приложений на компьютере создаётся с помощью языков и систем программирования.

3. Машинный язык и языки высокого уровня

Язык программирования - это формализованный язык описания алгоритмов, используемых для решения различных задач на компьютере.

В процессе становления и развития вычислительной техники возникали и развивались также языки программирования. Некоторые из них затем изменялись, трансформировались, интегрировались с другими, некоторые умирали вовсе. Сейчас у программистов имеется богатый арсенал языков программирования на все случаи программистской жизни: Assembler. Basic. С++. Delphi. Fortran. Java. Pascal, и др. Каждый из перечисленных языков программирования имеет целый ряд модификаций (например. Basic. Q-Basic. Visual Basic и др.), которые по возможностям и свойствам существенно отличаются друг от друга.

Языки программирования можно разделить на машинно-зависимые (низкого уровня) и машинно-незаеисимые (высокого уровня).

К языкам низкого уровня относятся

·  машинные языки, написанные в двоичных кодах в виде нулей и единиц,

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

К языкам высокого уровня относятся:

·  алгоритмические языки - переводят алгоритмы с языка математики на язык программных кодов.

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

·  проблемно-ориентированные языки предназначены для решения определённого класса задач.

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

В других языках высокого уровня (например, на Бейсике) трансляция исходного кода в исполняемый происходит последовательно с каждой командой (оператором). Такая трансляция осуществляется программой-интерпретатором.

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

Система программирования состоит из:

• языковых средств разработчика программ.

• компилятора.

• редактора связей.

• отладчика.

• оптимизатора кода программ.

• набора библиотек.

• справочной системы и др.

Интегрированные среды программирования включают весь набор средств для комплексного их применения на всех технологических этапах разработки программ. Основное назначение такого инструментария состоит в том. чтобы с его помощью повысить производительность и эффективность труда программистов.

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

4. Основные этапы решения задач на ЭВМ

Решение задач с помощью компьютера включает в себя следующие основные этапы, часть из которых осуществляется без участия компьютера:

1.  Постановка задачи;

2.  Анализ и исследование задачи, модели;

3.  Разработка алгоритма;

4.  Программирование;

5.  Тестирование и отладка;

6.  Анализ результатов;

7.  Сопровождение программы.

1.  Постановка задачи. На этапе постановки задачи должно быть четко определено, что дано, и что требуется найти. Так, если задача конкретная, то под постановкой задачи понимают ответ на два вопроса: какие исходные данные известны и что требуется определить. Если задача обобщенная, то при постановке задачи понадобится еще ответ на третий вопрос: какие данные допустимы. Таким образом, постановка задачи включает в себя следующие моменты:

·  сбор информации о задаче;

·  формулировка условия задачи;

·  определение конечных целей решения задачи;

·  определение формы выдачи результатов;

·  описание данных (их типов, диапазонов величин, структуры и т. п.).

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

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

Итак, анализ и исследование модели включает в себя:

·  анализ существующих аналогов;

·  анализ технических и программных средств;

·  разработка математической модели;

·  разработка структур данных.

3. Разработка алгоритма. Наиболее эффективно математическую модель можно реализовать на компьютере в виде алгоритмической модели. Для этого может быть использован язык блок-схем или какой-нибудь псевдокод, например учебный алгоритмический язык. Разработка алгоритма включает в себя:

·  выбор метода проектирования алгоритма;

·  выбор формы записи алгоритма (блок-схемы, псевдокод и др.);

·  выбор тестов и метода тестирования;

·  проектирование алгоритма.

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

·  выбор языка программирования;

·  уточнение способов организации данных;

·  запись алгоритма на выбранном языке программирования.

5. Тестирование и отладка. Под отладкой программы понимается процесс испытания работы программы и исправления обнаруженных при этом ошибок. Обна­ружить ошибки, связанные с нарушением правил записи программы на языке программирования (синтаксические и семантические ошибки), помогает используемая система программирования. Пользователь получает сообщение об ошибке, исправляет ее и снова повторяет попытку исполнить программу.

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

Таким образом, тестирование и отладка включают в себя

·  синтаксическую отладку;

·  отладку семантики и логической структуры программы;

·  тестовые расчеты и анализ результатов тестирования;

·  совершенствование программы.

6. Анализ результатов решения задачи и уточнение в случае необходимости математической модели с повторным выполнением этапов 2-5. Это использование уже разработанной программы для получения искомых результатов. Производится анализ результатов решения задачи и в случае необходимости - уточнение математической модели (с последующей корректировкой алгоритма и программы).

7. Сопровождение программы. Последний этап – это сопровождение программы. Программы, имеющие большое практическое или научное значение, используются длительное время. Иногда даже в процессе эксплуатации программы могут исправляться, дорабатываться. Этот этап включает в себя:

·  доработку программы для решения конкретных задач;

·  составление документации к решенной задаче, к математической модели, к алгоритму, к программе, к набору тестов, к использованию.

5. Критерии качества программного продукта. Пути повышения надежности программного обеспечения.

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

ISO 9126 это международный стандарт, определяющий оценочные характеристики качества программного обеспечения. Российский аналог стандарта ГОСТ 28195. Стандарт разделяется на 4 части, описывающие следующие вопросы: модель качества; внешние метрики качества; внутренние метрики качества; метрики качества в использовании.

Модель качества, установленная в первой части стандарта ISO 9126-1, классифицирует качество ПО в 6-ти структурных наборах характеристик:

1) функциональность — набор атрибутов характеризующий, соответствие функциональных возможностей ПО набору требуемой пользователем функциональности.

2) надёжность — набор атрибутов, относящихся к способности ПО сохранять свой уровень качества функционирования в установленных условиях за определенный период времени.

3) практичность (применимость) — набор атрибутов, относящихся к объему работ, требуемых для исполнения и индивидуальной оценки такого исполнения определенным или предполагаемым кругом пользователей.

4) эффективность — набор атрибутов, относящихся к соотношению между уровнем качества функционирования ПО и объемом используемых ресурсов при установленных условиях.

5) сопровождаемость — набор атрибутов, относящихся к объему работ, требуемых для проведения конкретных изменений (модификаций).

6) мобильность — набор атрибутов, относящихся к способности ПО быть перенесенным из одного окружения в другое.

Вторая и третья части стандарта ISO 9126-2,3 посвящены формализации соответственно внешних и внутренних метрик характеристик качества сложных программных средств (ПС). В ней изложены содержание и общие рекомендации по использованию соответствующих метрик и взаимосвязей между типами метрик.

Четвертая часть стандарта ISO 9126-4 предназначена для покупателей, поставщиков, разработчиков, сопровождающих, пользователей и менеджеров качества ПС. В ней повторена концепция трех типов метрик, а также аннотированы рекомендуемые виды измерений характеристик ПС.

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

В последние годы сформировалась комплексная система управления качеством продукции TQM (Totaly Quality Management), которая концептуально близка к предшествующей более общей системе на основе стандартов ИСО серии 9000. Система ориентирована на удовлетворение требований потребителя, на постоянное улучшение процессов производства или проектирования, на управление процессами со стороны руководства предприятия на основе фактического состояния проекта. Основные достижения TQM состоят в углублении и дифференциации требований потребителей по реализации процессов, их взаимодействию и обеспечению качества продукции. Системный подход поддержан рядом специализированных инструментальных средств, ориентированных на управление производством продукции. Поэтому эта система пока не находит применения в области обеспечения качества жизненного цикла программных средств.

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

Активные методы повышения надежности ПС совершенствуются за счет развития средств автоматизации тестирования программ. Сложность ПС и высокие требования по их надежности требуют выработки принципов структурного построения сложных программных средств, обеспечивающих гибкость модификации ПС и эффективность их отладки. К таким принципам в работе относят:

- модульность и строгую иерархию в структурном построении программ;

- унификацию правил проектирования, структурного построения и взаимодействия компонент ПС;

- унификацию правил организации межмодульного интерфейса;

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