Традыцыйны развіцця / Інтэграцыя / Уключэнне / вытворчай практыкі для распрацоўкі праграмнага забеспячэння

Original: http://dltj.org/article/software-development-practice/

Нядаўна мяне папрасілі намеціць план для структураванага працэсу распрацоўкі ПА, які максімізуе прадукцыйнасць і памяншае памылкі, якія дасягаюць карыстальніка. Гэта было першапачаткова унутраным дакументам OhioLINK, але апісаны працэс даволі традыцыйны і іншыя маглі б знайсці прымяненне для гэтага, як добра. Вы можаце выкарыстоўваць гэта, калі ласка, выконваць умовы ліцэнзавання Creative Commons і звяжыцеся са мной загадзя, калі вам трэба нешта іншае.

Стварэнне прыкладанняў у чатыры яруса

Давайце пачнем спачатку з апісаннем чатырох узроўняў для распрацоўкі праграмнага забеспячэння.

Развіццё
Неабавязкова. Гэта працоўнае асяроддзе для індывідуальных распрацоўшчыкаў і невялікіх каманд. Праца ў ізаляцыі з астатнімі ўзроўнямі, распрацоўшчык (ы) можа паспрабаваць радыкальныя змены ў код без шкоды для астатняй часткі каманды распрацоўшчыкаў.
Інтэграцыя
Агульны сераду, дзе ўсе распрацоўшчыкі ўносіць змены кода. Мэта гэтага асяроддзя складаецца ў аб’яднанні і праверыць працу ўсёй каманды праекта, так што могуць быць правераны, перш чым прызначаны на прамежкавай асяроддзя. Цалкам магчыма, для развіцця і інтэграцыі, каб быць у той жа асяроддзі (напрыклад, у выпадку, калі распрацоўшчык не выкарыстоўваць лакальную копію зыходнага кода).
Інсцэніроўка
Пастаноўка яруса з’яўляецца навакольнае асяроддзе, якая з’яўляецца ідэнтычным ў вытворчай асяроддзі, як гэта магчыма. Мэта прамежкавага асяроддзя, каб мадэляваць, як большая частка вытворчай асяроддзі, як гэта магчыма. Серада Пастаноўка таксама можа падвоіць ў якасці асяроддзя Дэманстрацыя / падрыхтоўкі.
Вытворчасць
Вытворчасць ярус можа ўключаць у сябе адзін або машыну вялiкая колькасць, якое змяшчае шмат машын.

Гэтыя ўзроўні казаць пра “асяроддзях”, а не “машын” ці “сервераў”. Гэта, вядома, магчыма для некалькіх асяроддзях развіццё і навакольнае асяроддзе інтэграцыі, каб быць на той жа фізічнай машыне, або інтэграцыі і прамежкавых асяроддзяў, каб быць на той жа машыне. Калі гэта наогул магчыма, вытворчай асяроддзя павінна быць сам па сабе, а не сумесна з любым з іншых асяроддзяў.

Рэсурсы на кожным узроўні

Інсцэніроўка

Ідэнтычныя канфігурацыі праграмнага забеспячэння ў якасці вытворчай машыны і поўнага, незалежнага копіі вытворчай базы дадзеных, так што гэта праўда асновай для тэставання QA. Калі вы выкарыстоўваеце Area Network Storage (SAN) або Network Attached Storage (NAS), вы зможаце выкарыстоўваць “Snapshot” магчымасці прылады захоўвання для імітацыі копію вытворчай базы дадзеных, не патрабуючы ўсю дублікат дадзеныя (і адпаведнае апаратнае).
Супастаўныя апаратнай канфігурацыі для вытворчай сістэмы так дакладны прагноз ёмістасці па тэставанні прадукцыйнасці супраць яго, а затым множання яго прадукцыйнасць па колькасці машын, якія будуць разгорнутыя ў вытворчасці.

Інтэграцыя

Таварыства з абмежаванай падмноства дадзеных, якія карысныя для тэставання “межавых умоў” у дадатку. Гэта можа быць мудрым, каб абнавіць гэты падмноства дадзеных часта, каб выдаліць артэфакты распрацоўкі праграмнага забеспячэння і тэсціравання на інтэграцыі навакольнага асяроддзя.

Развіццё

Тое ж самае абмежаваны набор дадзеных, як інтэграцыя асяроддзя.

Перасоўванне паміж ўзроўнямі

Графічныя паказвае характар ​​выкананай працы ў кожнай асяроддзі, абавязкаў суб’ектаў у кожнай асяроддзі, і адносная хуткасць праграмнага забеспячэння і разгортванне будуе.

Process for Moving Through Development/Integration/Staging/Production Stages

У апавядальнай форме, распрацоўшчык праграмнага забеспячэння піша код у яго ці яе асяроддзя распрацоўкі (1) і правярае яго ў сховішча Subversion крыніца кода (2). Як і іншыя распрацоўшчыкі паведамляюць памылкі (3) больш змены зробленыя (5) і праверылі ў (6). Памятаеце, што асяроддзе распрацоўкі і інтэграцыі можа быць таго ж самага фактычнага навакольнага асяроддзя, так што гэтыя два палі могуць быць згорнутыя; Важна адзначыць, аднак, што ў такім выпадку ўсё яшчэ правяраецца змены ў Subversion.

Калі распрацоўшчыкі рады з паводзінамі Інтэграцыйнага асяроддзя (6), Майстар-рэліз стварае копію або «тэг» кода ў Subversion і абнаўляе прамежкавую сераду для гэтага тэга (7). У гэты момант забеспячэння якасці (QA) тэстары пачаць свой водгук (8). QA тэстараў можа быць як супрацоўнікі і знешнія рэцэнзенты; плошчу Пастаноўка таксама падвойваецца ў якасці навучальнага асяроддзі, калі вызваленне Вытворчасць гатовы. Справаздачы QA вярнуцца да распрацоўніку (9), які фіксуе іх (10) і правярае змены ў Subversion (11). Пасля таго як усе памылкі выпраўленыя, менеджэр рэліз спрыяе новую версію для пастаноўкі (12).

Гэты працэс працягваецца да таго часу, каманда QA не заяўляе пастаноўка версія “ў парадку, каб вызваліць” (13). Менеджэр выпуску пакетаў да версій выпуску з Subversion (14) і разгортвае яго на вытворчых серверах (15). Як час ідзе, справаздачы пра памылкі і запыты зроблены (16), для якіх распрацоўшчык піша код (17) і правярае ў зменах у сховішча зыходнага кода (18). (17) і (18) функцыянальна эквівалентныя “(1)” і “(2)” вышэй. Паўтарайце, пакуль канчатковы карыстальнік не цалкам задаволены.

Важныя заўвагі

Распрацоўшчыкі толькі ўносіць змены ў асяроддзі развіцця і інтэграцыі. Калі выпраўленне памылка будзе зроблена, распрацоўшчык робіць гэта ў Subversion на этапе інтэграцыі. Для таго, каб захаваць цэласнасць рэпазітара зыходнага кода ў адной кропцы робіць распрацоўшчык ўносіць змены непасрэдна ў пастаноўцы або вытворчых умовах.

Для кожнага напрамку ў вытворчасці, ёсць некалькі версій у пастаноўцы і для кожнага разгортвання ў Пастаноўка, існуе некалькі версій ў перыяд развіцця / інтэграцыі. Па дызайне, канчатковыя карыстальнікі ізаляваны ад хуткага, а часам і багі працэсе распрацоўкі праграмнага забеспячэння. Мяркуецца, што большасць памылак будзе злоўлены рана і паўтарыў версіі на ранніх стадыях запаўнення знайсці памылкі хутчэй.

Толькі “менеджэр-рэліз” можна разгарнуць версіі на наступным этапе. Там могуць быць розныя менеджэры рэліз для разгортвання ад інтэграцыі да Пастаноўка і пастаноўка да вытворчасці; менеджэр-рэліз можа нават змяняцца ад версіі да версіі. Вядома, у некаторых праектах, распрацоўшчык, менеджэр рэліз, і тэстар КК можа на самай справе той жа чалавек. Важна, аднак, з’яўляецца тое, што заўсёды ёсць толькі адзін чалавек, адказны за разгортванне новай версіі.

Нягледзячы на ​​тое, вертыкальныя скрынкі ў графіцы азначаюць Інтэграцыя сераду выключаны на этапе “(7)”, у рэчаіснасці версія праграмнага забеспячэння на інтэграцыі навакольнага асяроддзя ніколі не сыходзіць. Замест гэтага версія праграмнага забеспячэння, што спрыяе да навакольнага асяроддзя пастаноўка “пазначаныя” прэч “ствол” ў сховішча зыходнага кода, і гэта пазначаныя версія, што капіюецца ў пастаноўкі. Праца распрацоўшчыкамі затым працягвае на “ствол”. Тое ж самае справядліва і для прасоўвання прамежкавай версіі ў вытворчасць.

Стандарты кадавання

Для палягчэння перадачы прыкладанняў з сервера развіцця шляхам пастаноўкі і ў вытворчасці, код павінен быць свабодным ад якіх-небудзь серверных залежыць зменных.

Пры неабходнасці, вызначыць імя хаста праграмна, а не паказаўшы яго відавочна ў кодзе або ў канфігурацыі. Можна выкарыстаць альбо javax.servlet.ServletRequest.getServerName або javax.servlet.ServletRequest.getLocalName, каб вызначыць гэта ў сэрвлета.
Для забеспячэння код пераносім на файлавыя сістэмы выкарыстоўваць адносныя шляху ў кодзе і, калі неабходна, набор базавы каталог, у канфігурацыі прыкладання. Гэта дазволіць прыкладанням і скрыпты для перамяшчэння з адной дырэкторыі на машыне развіцця ў іншы каталог (магчыма, з іншы шлях) на вытворчай машыне.

Comments are closed.