Курс специальности ИУ-7
1. Понятие программной инженерии, ее цели и задачи. Стандарты программной инженерии.
является отраслью информатики[1] (Computer science) и изучает вопросы построения компьютерных программ, обобщает опыт программирования в виде комплекса общих знаний и правил регламентации инженерной деятельности разработчиков программного обеспечения
Стандарт - standard - норма, образец, мерило:
l утверждаемый компетентным органом нормативно-технический документ, устанавливающий комплекс норм и правил по отношению к объекту стандартизации,
l типовой образец, эталон, модель, принимаемые за исходные для сопоставления с ними других предметов
l Корпоративные стандарты разрабатываются крупными фирмами с целью повышения качества своей продукции. Создаются на основе собственного опыта компании, но с учетом требований мировых стандартов. Не сертифицируются, но являются обязательными для применения внутри корпорации
l Отраслевые стандарты действуют в пределах организаций некоторой отрасли (министерства). Разрабатываются с учетом требований мирового опыта и специфики отрасли. Являются, как правило, обязательными для отрасли. Подлежат сертификации
l Государственные стандарты (ГОСТы) принимаются государственными органами и имеют силу закона. Разрабатываются с учетом мирового опыта или на основе отраслевых стандартов. Могут иметь как рекомендательный, так и обязательный характер. Для сертификации создаются государственные или лицензированные органы сертификации
l Международные стандарты разрабатываются специальными международными организациями на основе мирового опыта и лучших корпоративных стандартов. Имеют сугубо рекомендательный характер
l ISO - The International Standards Organization - международная организация по стандартизации, работающая в сотрудничестве с IEC - The International Electrotechnical Commission - международной электротехнической комиссией
l IEEE Computer Society - профессиональное объединение специалистов в области программной инженерии
l ACM - Association for Computing Machinery – Ассоциация по вычислительной технике
l SEI - Software Engineering Institute – Институт Программной Инженерии при университете Карнеги-Мелон
l PMI - Project Management Institute – Международный Институт Проектного Менеджмента
Объекты стандартизации
l процессы разработки ПО
l продукты разработки
l ресурсы, которые используют процессы для создания программного продукта
2. Кодекс этики программной инженерии.
l согласование профессиональной деятельности инженеров-программистов с интересами общества;
l взаимоотношения между клиентом, работодателем и исполнителем разработки;
l достижение соответствия качества продукта лучшим профессиональным стандартам;
l честность и независимость профессиональных оценок;
l соблюдение этических норм в менеджменте и в сопровождении разработок;
l поддержка становления профессии в соответствии с кодексом этики;
l соблюдение этических норм во взаимоотношениях с коллегами;
l усовершенствование специальности
краткая версия:
l Программные инженеры будут действовать соответственно общественным интересам
l Программные инженеры будут действовать в интересах клиентов и работодателя, соответственно общественным интересам
l Программные инженеры будут добиваться, чтобы произведенные ими продукты и их модификации соответствовали высочайшим профессиональным стандартам
l Программные инженеры будут добиваться честности и независимости в своих профессиональных суждениях
l Менеджеры и лидеры программных инженеров будут руководствоваться этическим подходом к руководству разработкой и сопровождением ПО, а также будут продвигать и развивать этот подход
l Программные инженеры будут улучшать целостность и репутацию своей профессии соответственно с интересами общества
l Программные инженеры будут честными по отношению к своим коллегам и будут всячески их поддерживать
l Программные инженеры в течение всей своей жизни будут учиться практике своей профессии и будут продвигать этический подход к практике своей профессии
Кодекс этики распространяется не только на профессиональных программистов, но и на преподавателей, менеджеров и руководителей высшего звена, а также на студентов, изучающих данную профессию
3. Понятие жизненного цикла программного обеспечения.
4. Основные процессы жизненного цикла программного обеспечения
a. Выбор модели жизненного цикла
b. Анализ требований к системе
c. Проектирование архитектуры системы
d. Анализ программных требований
e. Детальное конструирование ПО
f. Кодирование и тестирование ПО
g. Интеграция ПО
h. Квалификационное тестирование ПО
i. Интеграция системы
j. Квалификационное тестирование системы
k. Установка ПО
l. Приемка ПО
5. Вспомогательные и организационные процессы жизненного цикла программного обеспечения
l Документирование
l Управление конфигурацией
l Обеспечение качества
l Верификация
l Аттестация
l Совместная оценка
l Аудит
l Разрешение проблем
Орг
l Управление
l Создание инфраструктуры
l Усовершенствование
l Обучение
6. Качество программного обеспечения и пути его достижения. Стандарты качества программного обеспечения.
l Определение ISO: Качество - это полнота свойств и характеристик продукта, процесса или услуги, которые обеспечивают способность удовлетворять заявленным или подразумеваемым потребностям
l Определение IEEE: Качество программного обеспечения - это степень, в которой оно обладает требуемой комбинацией свойств
l
l
l ISO/IEC 9126:1-4:2002 (ГОСТ Р ИСО/МЭК 9126-93)
l ISO/IEC 14598 – набор стандартов, регламентирующий способы оценки характеристик качества
В совокупности они образуют модель качества - SQuaRE (Software Quality Requirements and Evaluation)
l внешнее качество, заданное требованиями заказчика в спецификациях и отражающееся характеристиками конечного продукта
l внутреннее качество, проявляющееся в процессе разработки и других промежуточных этапах жизненного цикла ПС
l качество при использовании в процессе нормальной эксплуатации и результативность достижения потребностей пользователей с учетом затрат ресурсов (эксплуатационное качество)
7. Характеристики, используемые для оценки качества программного обеспечения.
Функциональные возможности (Functionality) | Способность программного обеспечения реализовать установленные или предполагаемые потребности пользователей | |
Пригодность для применения по назначению (Suitability) | Наличие и соответствие набора функций конкретным задачам | |
Правильность/корректность реализации требований (Accuracy) | Способность ПО взаимодействовать с конкретными системами | |
Согласованность (Compliance) | Способность программного обеспечения придерживаться соответствующих стандартов или соглашений, или подробных рекомендаций | |
Защищенность/безопасность функционирования(Security) | Способность ПО предотвращать несанкционированный доступ (случайный или преднамеренный) к программам и данным | |
Надежность (Reliability) | Способность программного обеспечения сохранять свой уровень качества функционирования при установленных условиях за установленный период времени | |
Стабильность/уровень завершенности (Maturity) | Характеризуется частотой отказов, вызванных наличием ошибок в программном обеспечении | |
Устойчивость к ошибке (Fault tolerance) | Способность программного обеспечения поддерживать определенный уровень качества функционирования в случаях программных ошибок или нарушения определенного интерфейса | |
Восстанавливаемость после проявления дефектов (Recoverability) | Способность программного обеспечения восстанавливать уровень качества функционирования и данные, непосредственно поврежденные в случае отказа. Характеризуется необходимыми для этого затратами усилий и времени | |
Практичность (Usability) | Характеризуется объемом работ, требуемых для использования программного обеспечения определенным или предполагаемым кругом пользователей | |
Понятность функций и документации (Understandability) | Характеризует усилия пользователя по пониманию общей логической концепции ПО и его применимости | |
Изучаемость процессов функционирования и применения (Learnability) | Характеризует усилия пользователя по обучению применению программного обеспечения (например, оперативному управлению, вводу, выводу) | |
Простота использования (Operability) | Характеризует усилия пользователя по эксплуатации и оперативному управлению ПО | |
Эффективность (Efficiences) | Определяется соотношением между уровнем качества функционирования программного обеспечения и объемом используемых ресурсов при установленных условиях | |
Временная эффективность реализации комплекса программ (Time behavior) | Характеризуется временем отклика и скоростью выполнения функций | |
Используемость вычислительных ресурсов (Resource behavior) | Характеризуется объемом используемых ресурсов и продолжительностью использования ПО при выполнении функции | |
Сопровождаемость (Maintainability) | Характеризует объем работ, требуемых для проведения конкретных изменений (модификаций) | |
Анализируемость (Analysability) | Характеризует усилия, необходимые для диагностики недостатков или случаев отказов или определения составных частей для модернизации | |
Изменяемость компонентов и комплекса программ (Changeability) | Характеризует усилия, необходимые для модификации, устранения отказа или для изменения условий эксплуатации | |
Устойчивость (Stability) | Характеризует риск от непредвиденных эффектов модификации | |
Тестируемость изменений при сопровождении (Testability) | Характеризует усилия, необходимые для проверки модифицированного программного обеспечения | |
Мобильность (Portability) | Способность программного обеспечения быть перенесенным из одного окружения в другое | |
Адаптируемость к изменениям среды (Adaptability) | Характеризует удобство адаптации ПО к различным конкретным условиям эксплуатации, без применения других действий или способов, кроме тех, что предназначены для этого в рассматриваемом программном обеспечении | |
Простота установки/внедрения/инсталляции после переноса (Installability) | Характеризует усилия, необходимые для внедрения программного обеспечения в конкретное окружение | |
Соответствие (Confortncnce) | Способность программного обеспечения подчиняться стандартам или соглашениям, относящимся к мобильности | |
Взаимозаменяемость компонентов при корректировке комплекса программ (Replaceability) | Характеризует простоту и трудоемкость применения данного ПО вместо другого конкретного программного средства в среде этого средства |
8. Представления о качестве программного обеспечения различных участников программного проекта.
Характеристика качества | Пользователь | Покупатель | Инвестор |
Функциональ-ность | + | + | + |
Надежность | + | + | 䦋㌌㏒㧀좈琰茞ᓀ㵂Ü |
Практичность | + | 䦋㌌㏒㧀좈琰茞ᓀ㵂Ü | + |
Эффективность | + | 䦋㌌㏒㧀좈琰茞ᓀ㵂Ü | 䦋㌌㏒㧀좈琰茞ᓀ㵂Ü |
Сопровождае-мость | 䦋㌌㏒㧀좈琰茞ᓀ㵂Ü | + | 䦋㌌㏒㧀좈琰茞ᓀ㵂Ü |
Мобильность | 䦋㌌㏒㧀좈琰茞ᓀ㵂Ü | + | + |
9. Современные модели оценки качества программного обеспечения
Чтобы принять решение о том, достаточно ли качественным является разработанное ПО, надо сравнить стоимость непоставки программного продукта с эксплуатационной стоимостью в случае его поставки