Знаймо

Додати знання

приховати рекламу

Цей текст може містити помилки.

Інженерія програмного забезпечення



План:


Введення

Новий Airbus A-380 використовує досить багато ПЗ, щоб створити сучасну кабіну в літаку. Метод інженерії програмного забезпечення дозволив створити програмне забезпечення літака, що описується мільйонами рядків вихідного коду.

Інженерія програмного забезпечення ( англ. Software Engineering ) - Додаток систематичного, дисципліни, вимірного підходу до розвитку, оперування та обслуговування програмного забезпечення, а також дослідженню цих підходів; тобто, додаток дисципліни інженерії до програмного забезпечення.


1. Програмна інженерія

Програмна інженерія - це інтегрування принципів математики, інформатики і комп'ютерних наук з інженерними підходами, розробленими для виробництва відчутних матеріальних артефактів [1]. Також програмна інженерія визначається як системний підхід до аналізу, проектування, оцінці, реалізації, тестування, обслуговування та модернізації програмного забезпечення, тобто застосування інженерії до розробки програмного забезпечення.

Дисципліна програмної інженерії [2] включається в коло питань комп'ютингу ( англ. computing ) І може розглядатися як інженерна область, що має більш тісні зв'язки зі своєю базовою дисципліною - комп'ютерними науками, - чим інші інженерні області. Серед інших інженерних дисциплін вона якісно виділяється нематеріальних програмного забезпечення та дискретної природою його функціонування. Грунтуючись на математиці і компьютинге, програмна інженерія займається розробкою систематичних моделей і надійних методів виробництва високоякісного програмного забезпечення, і даний підхід поширюється на всі рівні - від теорії та принципів до реальної практики створення програмного забезпечення, яка найкраще помітна стороннім спостерігачам.

Термін Розробка програмного забезпечення є більш загальним і часто використовуваним, в порівнянні з терміном Програмна інженерія і не обов'язково включає в себе парадигми інженерії. Однак навряд чи можна сказати, що використання цього методу надало скільки відчутний внесок у розвиток реальної розробки ПЗ на протязі вже більше ніж 40 років.


2. Основні відомості

Термін " інженерія програмного забезпечення "з'явився вперше в 1968 році на Конференції НАТО" Інженерія програмного забезпечення "і призначався, щоб спровокувати пошук рішень для діялося в той час" кризи програмного забезпечення ". З тих пір, це переросло в професію і галузь досліджень, присвячених створенню програмного забезпечення, більш якісного, доступного, краще підтримуваного, і швидше розроблювального.

Так як область все ще відносно молода в порівнянні зі своїми сестринськими областями інженерії, є все ще велика робота і дебати навколо того, що являє собою "інженерія програмного забезпечення", і чи задовольняє воно поняттю інженерії. Ця суперечка розвивається природним чином, почавшись із спроб розглядати створення програмного забезпечення тільки як програмування. Розробка програмного забезпечення - термін, іноді віддається перевага практиками в промисловості, які розглядають розробку програмного забезпечення як незрівнянно більш потужну і конструкціонноемкую методологію в порівнянні з процесом написання коду програмістом.

Все ж, незважаючи на юність професії, майбутнє галузі райдужно, оскільки, Money Magazine і Salary.com оцінили професію розробника програмного забезпечення як кращу роботу в Америці в 2006.

Розробка програмного забезпечення пов'язана з дисциплінами інформатики, управління проектами, і інженерії систем.


3. Історія

Коли перші сучасні цифрові комп'ютери з'явилися на початку 1940-х років [9] набори виконуваних команд вже були вбудовані в машину. Фахівці швидко зрозуміли, що цей підхід не дуже зручний. Так з'явилася "архітектура збережених програм" або архітектура фон Неймана. Таким чином, поділ на "залізо" і "програмне забезпечення" почалося з абстракції, використовуваної щоб вирішити проблему складності обчислень.

Перші мови програмування стали з'являтися в 1950-х роках, і це був ще один важливий крок в абстракції. Основні мови, такі як Fortran, Algol і Cobol були випущені в кінці 1950-х для вирішення наукових, алгоритмічних і бізнес-задач відповідно. Дейкстра написав свою відому статтю, "Go To Statement Considered Harmful" в 1968 році, а Девід Парнас ввів ключове поняття модульності і утаєння інформації в 1972 році, щоб допомогти програмістам справлятися з усе більш і більш складними програмними системами. Системне програмне забезпечення для управління апаратним, назване "операційна система" було представлено компанією Unix в 1969 році. У 1967 році мову Simula ввів поняття об'єктно-орієнтованої парадигми програмування.

Ці досягнення в галузі програмного забезпечення були зустрінуті великим проривом комп'ютерній техніці. У середині 1970-х років був представлений мікрокомп'ютер, що дозволило любителям отримати власний комп'ютер і писати свої програми для нього. Це, в свою чергу призвело до появи персональних комп'ютерів (ПК) і Microsoft Windows. Також в середині 1980-х з'являються такі поняття як цикл розробки програмного забезпечення в якості деякого консенсусу для централізованої розробки програмного забезпечення. Кінець 1970-х і початок 1980-х років ознаменувалися появою кількох нових Simula-подібних об'єктно-орієнтованих мов програмування, в тому числі Smalltalk, Objective-C і C + +.

Open Source, що з'явився на початку 90-х у формі Linux, а також інших програм, ввів поняття "базару" або децентралізованого стилю розробки ПЗ. Потім світова павутина і стрімка популяризація інтернету в середині 90-х змінили програмну інженерію ще раз. Розподілені системи отримали широке розповсюдження, як спосіб влаштування систем, а також мову Java з його власної віртуальної машиною, зробили ще один крок в абстракції. Співпраця програмістів дозволило з'явитися на світ з документом, названому Agile Manifesto, який підтримував полегшення процесів, що сприяло написанню більш дешевих і регулярно оновлюваних програм.

В даний час визначення програмної інженерії все ще обговорюється спеціалістами. До цих пір йдуть суперечки, який же метод виробництва програмного забезпечення "дешевше, краще, швидше". Скорочення витрат взагалі було одним з головних завдань ІТ-індустрії з 1990 року. Сукупна вартість володіння ПЗ включає витрати не лише на його придбання або розробку. Це також витрати на затримки виробництва, на утримання та ресурси, необхідні для підтримки інфраструктури.


4. Професія

Правові вимоги до ліцензування та сертифікації професійних програмних інженерів відрізняються у всьому світі. У Великобританії, Британське комп'ютерне суспільство видає ліцензії програмних інженерів і члени суспільства можуть також стати "дипломованими інженерами" (C.Eng), а в деяких районах Канади, наприклад, Альберта, Онтаріо і Квебек, програмні інженери можуть також бути "професійними інженерами" ( P.Eng) і / або "майстрами інформаційних систем" (ISP), однак, немає жодних правових вимог для даних спеціалізацій.


4.1. Робота

У 2004 році американське Бюро статистики праці, нарахувало 760 840 програмних інженерів, які займають робочі місця в США. У той же період часу було близько 1,4 млн. практиків, зайнятих в США в інших змішаних інженерних спеціальностях. Завдяки своїй відносній новизні, як формальна область вивчення, програмна інженерія часто викладається як частина навчальної програми комп'ютерних наук, і багато програмні інженери мають непогані пізнання в інформатиці.

Багато програмні інженери працюють в якості штатних співробітників або підрядників. Вони працюють в підприємствах, державних установах (цивільних або військових), а також в некомерційних організаціях. Деякі програмні інженери працюють фрілансерами. Деякі організації мають фахівців для виконання кожного із завдань в процесі розробки програмного забезпечення. Іншим же вимагається програмний інженер, який виконує відразу багато завдань або всі з них. У великих проектах, люди можуть спеціалізуватися тільки в одній ролі. У невеликих, люди можуть зайняти кілька або всі ролі одночасно. Спеціалізації включають в себе: в промисловості: аналітики, архітектори ПЗ, розробники, тестувальники, технічна підтримка, проміжний аналітик, менеджер. В академічних колах: викладачі, дослідники.

Більшість програмних інженерів і програмістів працює 40 годин на тиждень, а близько 15 відсотків програмних інженерів і 11 відсотків програмістів працювали більше 50 годин на тиждень в 2008 році. Травми у цих професіях зустрічаються рідко. Однак, як і в інших професіях, де треба проводити багато часу перед комп'ютером, люди цих спеціальностей більш схильні до втоми очей, болів в спині, а також хвороб рук і зап'ясть, таких як синдром зап'ястного каналу.


4.2. Сертифікація

Інститут Програмної Інженерії пропонує сертифікацію по конкретних спеціальностях, таким як: безпека, оптимізація процесів, а також архітектура програмного забезпечення. Apple, IBM, Microsoft та інші компанії фінансують власні екзамени для сертифікації. Багато IT-програми сертифікації орієнтовані на конкретні технології, і управляється постачальниками цих технологій. Ці програми сертифікації розроблені з урахуванням місця, на яке будуть найматися люди, що використовують ці технології.

Розширення сертифікації "Загальні навички розробки програмного забезпечення" доступні через різні професійні спільноти. У 2006 році IEEE сертифікувала понад 575 фахівців в області програмного забезпечення, як "Certified Software Development Professional" (CSDP). У 2008 році вони додали сертифікат початкового рівня відомий як "Certified Software Development Associate" (CSDA). У ACM була професійна програма сертифікації на початку 1980-х, яка була припинена через відсутність інтереса.В ACM також розглядали можливість сертифікації професійних програмних інженерів в кінці 1990-х років, але в підсумку вирішили, що така сертифікація не підходить для професійної виробничої практики розробки програмного забезпечення.

У Великобританії, Британське комп'ютерне суспільство розробило юридично визнану професійну сертифікацію, звану "Chartered IT Professional" (CITP), і доступну тільки для повних членів (MBCS). Програмні інженери мають право на членство в Інституті Інженерії і Технології і можуть відповідно отримати статус дипломованого інженера. У Канаді, Організація en: Canadian Information Processing Society також розробила юридично визнану професійну сертифікацію, названу "Information Systems Professional" (ISP). [23] У Онтаріо, Канада, Програмні інженери, які закінчують канадський Engineering Accreditation Board (CEAB), що успішно здали Professional Practice Examination (PPE) і, що мають принаймні 48 місяців досвіду роботи програмним інженером, мають право отримати ліцензію через PEO (" професійні інженери Онтаріо ") і можуть стати Професійними інженерами (P.Eng).


4.3. Вплив глобалізації

Первісне розвиток аутсорсингу, а також відносно низька вартість людських ресурсів в країнах, що розвиваються третього світу призвело до вибуху мильного міхура . Com 1990-х років. Це зробило негативний вплив на багато аспектів професії програмного інженера. Наприклад, деякі студенти в розвинених країнах не хотіли отримувати освіту, пов'язану з програмною інженерією через страх офшорного аутсорсингу (імпорт програмних продуктів або послуг з інших країн) та витіснення іноземними робітниками. Хоча судячи по статистиці в даний час нічого не загрожує програмної інженерії як такої. Однак професії, пов'язані з програмуванням здається, дійсно, були порушені. Тим не менш, здатність спритно використовувати зарубіжні робочі ресурси, поліпшило загальну працездатність багатьох організацій. Коли північноамериканці будуть іти з роботи, азіати тільки прибувати на неї. Коли азіати будуть іти з роботи, європейці будуть на неї приїжджати. Це забезпечує безперервну можливість мати людей, що стежать за критично важливими бізнес-процесами 24 години на добу, без виплати компенсації за понаднормову роботу і не позбавляючи людей сну.


4.4. Освіта

Знання в області програмування є необхідною умовою для того, щоб стати програмним інженером. У 2004 році IEEE Computer Society випустив SWEBOK, який був опублікований в якості стандарту ISO / IEC 19759:2004, що описує обсяг знань, який на їхню думку, повинен отримати дипломований програмний інженер з чотирирічним досвідом. Багато людей входять в цю професію, отримавши вищу освіту або відучившись в професійно-технічному училищі. Стандартний навчальний план для міжнародної ступеня бакалавра програмної інженерії був визначений CCSE, і оновлений в 2004 році. Ряд університетів мають програми навчання програмних інженерів. З 2010 року налічувалося 244 очних програми, 70 Інтернет-курсів, 230 програм для фахівців, 41 програм для вчених у цій галузі, а також 69 програм для сертифікатів у Сполучених Штатах.

На додаток до вищої освіти, багато компаній фінансують стажування для студентів, що бажають зробити кар'єру в галузі інформаційних технологій. Ці практики можуть продемонструвати студенту цікаві реальні завдання, з якими програмні інженери стикаються щодня. Подібний досвід може бути отриманий через військову службу в сфері програмної інженерії.


5. Порівняння з іншими дисциплінами

Основні відмінності між програмною інженерією та іншими інженерними дисциплінами, на думку деяких дослідників, в різному рівні витрат на виробництво. [3]

6. Поддісціпліни

Програмна інженерія може бути розділена на десять поддісціплін. До них відносяться:

  • Аналіз системних вимог : виявлення, аналіз, специфікація та перевірка вимог до програмного забезпечення.
  • Проектування програмного забезпечення : процес визначення архітектури, компонентів, інтерфейсів та інших характеристик системи або компонента.
  • Конструювання програмного забезпечення : поетапне створення працюючого програмного забезпечення
  • Тестування програмного забезпечення : динамічний контроль поведінки програми на кінцевому безлічі тестів, належним чином обраних із нескінченної області.
  • Обслуговування програмне забезпечення : сукупність заходів, необхідних для забезпечення економічно ефективної підтримки програмного забезпечення.
  • Управління конфігурацією : визначення конфігурації системи на різні моменти часу для систематичного контролю змін конфігурації, а також збереження цілісності та простежуваності конфігурації протягом усього життєвого циклу системи.
  • Управління розробкою програмного забезпечення: застосування заходів управління, планування, координації, вимірювання, моніторингу, контролю і звітності, для того, щоб розробка і супровід програмного забезпечення була систематичною і дисциплінованою.
  • Процес розробки програмного забезпечення : визначення, реалізація, оцінка, вимірювання, управління, зміна і поліпшення процесу життєвого циклу програми як такого.
  • Засоби та методи розробки програмного забезпечення: комп'ютерні засоби, які призначені для надання допомоги процесам життєвого циклу програми (див. Computer Aided Software Engineering), а також методи, які застосовують до структури діяльності розробки програмного забезпечення з метою зробити розробку більш систематичної і в кінцевому рахунку мати більше шансів на успіх.
  • Якість програмного забезпечення : перевірка задоволення набором власних характеристик програми вимогам до програмного забезпечення.

7. Споріднені дисципліни

Програмна інженерія є розділом інформатики і пов'язана з менеджментом. Вона також вважається частиною загальної інженерії систем.

7.1. Інженерія систем

Інженери систем мають справу насамперед із загальними системними вимогами і дизайном, включаючи апаратні засоби і людські нестатки. Вони найчастіше працюють над розбиттям функціональності для обладнання, програмного забезпечення або людських операторів. Таким чином, результат процесу інженерії систем служить в якості стартової точки в процесі програмної інженерії.



8. Зовнішні посилання


Література

  • Іан Соммервіллем. Інженерія програмного забезпечення, 2002 [1]
  • Орлов С. А. Технології розробки програмного забезпечення: Розробка складних програмних систем Изд. 3-е, 2004
  • Ерік Дж. Брауде. Технологія розробки програмного забезпечення, 2004
  • Липа, В.В. Програмна інженерія. Методологічні основи [Текст]: Учеб. / В. В. Липа; Держ. ун-т - Вища школа економіки. - М.: ТЕИС, 2006. - 608 с. - 1000 екз. -

ISBN 5-7598-0424-3, УДК 004.41 (075.8), ББК 32.973.26-018я73, Липа, Вища школа економіки, ТЕИС, 2006, pdf, економіка, програмування


Примітки

  1. Curricula Recommendations - www.acm.org / education / curricula-recommendations Software Engineering SE 2004: Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering
  2. Computing Curricula - sites.computer.org / ccse / A Volume of the Computing Curricula Series SE2004
  3. Sharing What We Know About Software Engineering / / Proceedings of the FSE / SDP workshop on Future of software engineering research (FoSER '10). - ACM, 2010. - P. 439-442. - ISBN 978-1-4503-0427-6



Цей текст може містити помилки.

Схожі роботи | скачати

Схожі роботи:
Розробка програмного забезпечення
Проектування програмного забезпечення
Легалізація програмного забезпечення
Впровадження програмного забезпечення
Супровід програмного забезпечення
Тестування програмного забезпечення
Локалізація програмного забезпечення
Архітектура програмного забезпечення
Портування програмного забезпечення
© Усі права захищені
написати до нас
Рейтинг@Mail.ru