Главная страница
Навигация по странице:

  • .TryParse(DB. get ().GetOneCell(query).ToString(), out id); Добавляем: var res = DB. get

  • * This source code was highlighted with Source Code Highlighter. Теперь получим положительный результат: 46 Контрольные вопросы

  • Цель работы

  • MI = MAX(0, (171 — 5.2 * ln(HV) — 0.23 * CC — 16.2 * ln(LoC)) * 100 /

  • Программная инженерия лабораторный практикум


    Скачать 1.48 Mb.
    НазваниеПрограммная инженерия лабораторный практикум
    Дата07.10.2019
    Размер1.48 Mb.
    Формат файлаpdf
    Имя файлаprogrammnaya-inzheneriya-lab-praktikum-(pie-2013g).pdf
    ТипПрактикум
    #88973
    страница5 из 5
    1   2   3   4   5
    Test method LinkCatalog.Tests.UserModel_Tests.GetUserById_Test threw excep-
    tion:
    System.NullReferenceException: Object reference not
    set
    to an instance of
    an
    object
    .
    На этот раз ошибка заключается в UserModel.GetUserIdByName, а именно вот
    здесь не хватает проверки на
    null
    :
    int
    .TryParse(DB.
    get
    ().GetOneCell(query).ToString(),
    out
    id);
    Добавляем:
    var
    res = DB.
    get
    ().GetOneCell(query);
    if
    (res !=
    null
    )
    int
    .TryParse(res.ToString(),
    out
    id);
    * This source code was highlighted with Source Code Highlighter.
    Теперь получим положительный результат:

    46
    Контрольные вопросы
    1. Назовите средства автоматизации тестирования ПС на уровне модулей.
    2.
    Дайте сравнительную характеристику возможностей Nunit и
    Unit Testing Framework.
    3.
    Какие существуют виды тестирования?
    4.
    Какие Вы знаете методики структурного тестирования?
    5.
    Какие Вы знаете методики функционального тестирования?
    6. Какие известны подходы тестирования интеграции про- граммной системы?
    7. Как оценить количество необходимых тестов для структур- ного тестирования модуля?
    8. В чем особенности тестирования классов?
    9. Способы тестирования циклов?
    10. Способы тестирования условий?

    47
    Лабораторная работа №9
    ВЫЧИСЛЕНИЕ МЕТРИК ПРОГРАММНЫХ СИСТЕМ
    Цель работы: изучить метрики для количественной оценки про- граммного кода и возможности их получения в современных инстру- ментальных средах
    Программа выполнения работы
    1.Изучить системы метрик программных средств.
    2. Выполнить расчет метрик классов для заданного примера.
    Содержание отчета
    1. Диаграмма UML классов для заданного программного проекта.
    2. Метрики, рассчитанные по диаграмме классов.
    3. Метрики, полученные автоматически в VisualStudio.
    Методически указания
    Метрика программного обеспечения (англ. Software metric) – это некая мера определенного свойства программного обеспечения или же его спецификаций. Как известно, мера – это числовое значение.
    Таким образом, метрика программного обеспечения будет показывать некое числовое значение определенного свойства ПО.
    Метрики в Visual Studio
    Использована версия Visual Studio 2013. Откроем проект для изучения.

    48
    Рис.9.1.
    Далее, мы можем видеть вкладку Analyze
    Рис.9.2.
    В этой вкладке мы видим Calculate Code Metrics for ...
    Это нам и нужно. Разница лишь в том, что будет анализировать- ся. Или же выбранные проекты в Solution Explorer, или же сразу весь
    Solution. После нажатия придется немного подождать. Время зависит от конфигурации Вашего компьютера. Когда анализ будет завершен,
    Вы увидите внизу окно
    Рис.9.3.
    Здесь будет видна иерархия всего Solution. В моем случае это отдельная dll библиотека и проект. Когда развернем библиотеку, мы увидим следующий уровень иерархии, и так далее

    49
    Рис.9.4.
    Теперь давайте разберемся со столбцами дальше.
    1. Maintainability Index – это комплексный показатель качества кода. Эта метрика рассчитывается по следующей формуле:
    MI = MAX(0, (171 — 5.2 * ln(HV) — 0.23 * CC — 16.2 * ln(LoC)) * 100 /
    171),
    где HV – Halstead Volume, вычислительная сложность. Чем больше операторов, тем больше значение этой метрики; CC –
    Cyclomatic Complexity (Эта метрика описана ниже); LoC – количество строк кода (Эта метрика описана ниже).
    2. Cyclomatic Complexity – показывает структурную сложность кода. Иными словами, количество различных ветвей кода. Считается на основе операторов в Вашем коде, строя графы переходов от одно- го оператора к другому. К примеру, оператор if-else увеличит эту метрику, потому что здесь будут разные ветви выполнения.
    3. Depth of Inheritance – глубина наследования. Для каждого класса эта метрика показывает, насколько глубоко он в цепочке на- следования.
    4. Class Coupling – указывает на зависимость классов друг от друга. Проект с множеством зависимостей очень трудно и дорого поддерживать.
    5. Lines of Code – количество строк кода. Напрямую использует- ся редко. В наши дни, с множеством разнообразных как подходов к программированию, так и языков, эта метрика дает нам мало полез- ной информации. Если брать во внимание отдельный метод, то мож- но разбить его на несколько методов поменьше.
    Использования метрик
    Изначально стоит обращать внимание на Maintainability Index.
    Старайтесь придерживать его около 70-90. Это значительно облегчит сопровождения кода как Вами, так и другими программистами. Ино-

    50
    гда стоит оставить его на уровне 50-60, так как переписать некоторые участки кода бывает очень затратным. Оценивайте здраво как код, так и Ваши возможности с затратами.
    Стоит также уделить много внимания Class Coupling. Эта метри- ка должна быть как можно меньшей. Ведь она так же способствует поддержке кода. Для оптимизации возможно придется пересматри- вать дизайн проекта и некоторые архитектурные решения.
    Теперь стоит уделить внимание Cyclomatic Complexity. Эта мет- рика показывает сложность кода, а это так же влияет на поддержку кода в будущем. Иногда приходится переписывать куски кода, кото- рые писали до Вас другие люди, так как Вы просто не можете понять, что, как и зачем в этом методе. Конечно, этому еще способствует стиль кода и идея, но не забывайте о Cyclomatic Complexity при ре- факторинге.
    Контрольные вопросы
    1. Какие факторы объектно-ориентированных систем влияют на метрики для их оценки и как проявляется это влияние?
    2. Какое влияние оказывает наследование на связность клас- сов?
    3. Охарактеризуйте метрики связности классов по данным.
    4. Охарактеризуйте метрики связности классов по методам.
    5. Какие характеристики объектно-ориентированных систем ухудшают сцепление классов?
    6. Объясните, как определить сцепление классов с помощью метрики «зависимость изменения между классами».
    7. Поясните смысл метрики локальности данных.
    8. Какие метрики входят в набор Чидамбера и Кемерера? Какие задачи они решают?
    9. Как можно подсчитывать количество методов в классе?
    10. Какие метрики Чидамбера и Кемерера оценивают сцепление классов? Поясните их смысл.
    11. Какая метрика Чидамбера и Кемерера оценивает связность класса? Поясните ее смысл.
    12. Как добиться независимости метрики WMC от реализации?
    13. Дайте характеристику метрик для объектно- ориентированного тестирования.

    51
    СПИСОК ЛИТЕРАТУРЫ
    1. Иванова Г. С.Технология программирования: учебник / Ива- нова Г. С.;. - 2-е изд., стер.-М.:МГТУ,2003.-320 с.
    2. Орлов С.А. Технологии разработки программного обеспече- ния. Разработка сложных программных систем: учебник / Орлов С.
    А.; .- 3-е изд.. - СПб.: ПИТЕР, 2004.-527 с.
    3. Вендров А.М. Проектирование программного обеспечения экономических информационных систем - М.: Финансы и статистика,
    2003.-352с.
    4. М. Фаулер, К. Скотт. UML в кратком изложении. Применение стандартного языка объектного моделирования: Пер. с англ. – М.:
    Мир, 1999. – 191 с.
    5. ГОСТ Р ИСО/МЭК 9294-93. Информационная технология. Ру- ководство по управлению документированием программного обеспе- чения.
    [Электронный ресурс].-
    Режим доступа: http://195.209.112.90:3000/texpert/
    6. 10.ГОСТ Р ИСО/МЭК 9126-93. Информационная технология.
    Оценка программной продукции, характеристика качества и руково- дство по их применению. [Электронный ресурс].- Режим доступа: http://195.209.112.90:3000/texpert/
    7. 11.ГОСТ Р ИСО/МЭК 12119:1994. Информационная техноло- гия. Пакеты программных средств. Требования к качеству и испыта- ния.
    [Электронный ресурс].-
    Режим доступа: http://195.209.112.90:3000/texpert/
    8. 12.ГОСТ Р ИСО/МЭК 12207-99. Процессы жизненного цикла программных средств. [Электронный ресурс].- Режим доступа: http://195.209.112.90:3000/texpert/
    9. Орлик С. Основы программной инженерии по SWEBOK
    [Электронный ресурс] Режим доступа http://swebok.sorlik.ru
    10. 20. Кознов Д.В., Бугайченко Д.Ю. Введение в программную инженерию – Учебный курс ИНТУИТ.РУ. [Электронный ресурс]
    Режим доступа http://www.intuit.ru/department/se/inprogeng/

    52
    Учебно-методическое издание
    ПРОГРАММНАЯ ИНЖЕНЕРИЯ
    ЛАБОРАТОРНЫЙ ПРАКТИКУМ
    Учебно-методическое пособие к лабораторным работам
    Составитель - Зуев Владимир Алексеевич
    Редактор Н.А. Юшко
    Компьютерная верстка авторская
    Подписано в печать 05.10. 2013 г.
    Формат 60х84 1
    /
    16
    . Бумага офсетная. Печать цифровая.
    Усл.-печ.л.3,25. Уч.-изд. л. 3,31. Тираж 50 экз. Заказ _____
    Южно-Российский государственный технический университет (НПИ) им. М.И. Платова
    Редакционно-издательский отдел ЮГРПУ(НПИ)
    346428, Новочеркасск, ул. Просвещения, 132
    Издательство ЛИК
    346430, Новочеркасск, пр. Платовский, 82Е
    Тел.: 8(8635) 226-442, 8-952-603-609, e-mail: center-op@mail.ru
    Отпечатано в Издательско-полиграфическом комплексе «Колорит»
    346430, Новочеркасск, пр. Платовский, 82Е
    Тел.: 8(8635) 226-442, 8-952-603-609, e-mail: center-op@mail.ru
    1   2   3   4   5


    написать администратору сайта