JavaRush /Java блогу /Random-KY /Программалык камсыздоо инженери ким? Программалык камсызд...

Программалык камсыздоо инженери ким? Программалык камсыздоо инженериясы VS "жөн эле" программалоо

Группада жарыяланган
Самер Бунанын программалык камсыздоо инженериясы менен программалоонун ортосундагы айырмачылыктар же программалык камсыздоо концепциясын иштеп чыгуу “жөн эле codeдоодон” кандай айырмаланары жөнүндө макаласынын адаптациясын сиздердин назарыңыздарга сунуштайбыз .
Программалык камсыздоо инженери ким?  Программалык камсыздоо инженериясы VS
Бардык инженерлер codeдой алат, бирок бардык эле программисттер программалык камсыздоо концепцияларын иштеп чыга алышпайт. Кээ бир адамдарга "Программалык камсыздоо инженери" деген термин жакпайт, анткени биз көбүнчө физикалык нерсе - курулуш жөнүндө сөз кылганда "инженер" деген сөздү колдонобуз. Биздин макала, албетте, терминдин өзү жөнүндө эмес. Эгер күтүлбөгөн жерден баш тартууга алып келсе, аны оңой эле чыгармачылыкка байланыштуу нерсе менен алмаштырууга болот. "Программалык камсыздоону жаратуучу", "Программалык камсыздоонун автору"... жада калса "Программалык камсыздоону жаратуучу"!
Биз "программалык камсыздоо инженери" жөнүндө сөз кылганда, биз негизги милдети жөн гана code жазуу эмес, сапаттуу тиркемени түзүү болгон адамды түшүнөбүз. Жана ушундан ал өзүнүн чакырыгын, orмий мамилени жана өз ишине статистикалык ыкмаларды колдонууну көрөт. Ал үчүн программалоо жөн гана тамак-ашка акча табуунун жолу эмес.
Программалоо жөндөмү адамды автоматтык түрдө программалык инженер кылып койбойт. Ар бир адам codeдоону үйрөнө алат жана бул көрүнгөндөн да оңой. Ар бир адам өзүнүн колдонуусу үчүн жөнөкөй программаны түзө алат, бирок бул ошол эле программа башкалар үчүн да иштей тургандыгына кепилдик бербейт. Менин эң жакшы көргөн мисалым: көбүбүз душта ырдайбыз, бирок, тилекке каршы, бул спектакль дайыма эле профессионалдык сахнага татыктуу боло бербейт. Албетте, жогорку сапаттагы музыкалык тажрыйба үчүн, сиз профессионалга кайрыласыз. Сизге дагы мисалдар керекпи?
  • Биз баарыбыз мектепте математиканы жана жазууну үйрөнөбүз, бирок бул бизди математик жана жазуучу кылbyte.
  • Көпчүлүгүбүз таттуу, кээде өтө даамдуу тамак даярдоого жөндөмдүүбүз, бирок элчorктин кечки тамагына 100 кишorк дасторкон даярдоого ар кимдин батына боло бербейт. Мындай учурда ашпозчу жалдайбыз.
  • Жаңы үйүңүздүн курулушун Легодон таасирдүү шедеврлерди жараткан кошунаңыздын баласына толугу менен тапшырууга азыр даярсызбы?
Бул макалада мен айткым келген негизги оюм, жөнөкөй программалар инженерлер тарабынан иштелип чыккан программалардан абдан айырмаланат. Программалоо процессинин эң жөнөкөй аныктамасы: берилген киргизүү параметрлерин эске алуу менен чыгаруу катары белгилүү бир нерсени алуу үчүн компьютер үчүн аракеттердин иреттелген ырааттуулугун түзүү. Программалык камсыздоо процесси – бул көптөгөн колдонуучулар үчүн көйгөйлөрдү чечүү үчүн компьютердик программаны долбоорлоо, жазуу, тестирлөө жана курациялоо. Бул убакыттын сынагына туруштук бере турган ишенимдүү жана коопсуз чечимдерди түзүү жана ачыктан тышкары кээ бир белгисиз кыйынчылыктар үчүн иштөө.
Программалык камсыздоо инженери ким?  Программалык камсыздоо инженериясы VS
Программалык камсыздоо инженерлери алар чечкен көйгөйлөр, алар сунуштаган чечимдер, ал чечимдердин чектөөлөрү, алардын купуялыгы жана коопсуздугу жөнүндө баарын бorшет. Менимче, эгер адам маселенин маңызын түшүнбөсө, анын чечorшин программалоону баштабашы керек.

Инженердик ой жүгүртүү - колдонулган чечимдерди издөө

Программалык камсыздоо инженерлери программалык камсыздоону жазууну өздөрүнүн негизги максаты деп эсептешпейт. Алар муктаждыктарын канааттандыруу жана көйгөйлөрдү чечүү жагынан ойлонушат . Бул маанилүү, анткени ар бир көйгөй программалык камсыздоону талап кылbyte. Алардын айрымдарын колдонуудагы программаларды колдонуу менен чечсе болот. Кээде кээ бир көйгөйлөрдүн пайда болушун алдын ала айтууга болот, ал эми компетенттүү программалык дизайндын жардамы менен келечекте алардын алдын алууга болот.

"Интеллигенция көйгөйлөрдү чечет, генийлер алдын алат"

- Альберт Эйнштейн

Программалык камсыздоо инженери ким?  Программалык камсыздоо инженериясы VS
Татаал көйгөйлөр көп программаларды жазууну талап кылат. Параллелдүү иштөөнү талап кылган тапшырмалар бар, ал эми башкалары бир нече программанын ырааттуу аткарылышын талап кылат. Бир катар көйгөйлөрдү жөн гана колдонуучуларды окутуу аркылуу чечсе болот. Программаны түзүүнү баштоодон мурун, инженер-программист өзүнө бир нече суроолорду берет:
  • Кандай көйгөйлөрдү чечишим керек?
  • Аларды чечүү үчүн code жазуудан башка эмне кылсаңыз болот?
  • Бул тапшырмаларды колдонмо менен жеңилдетүү үчүн эмне кылсам болот?

Программанын сапаты жана codeдун сапаты

Жакшы программалар түшүнүктүү жана окула турган. Аларды узартуу оңой, башка программалар менен жакшы ойнойт жана алар менен иштөө коркунучтуу түш болбойт. Коддун сапаты боюнча сүйлөшүү мүмкүн эмес. Ал бийик болушу керек, ушунча. Аны карап жатканда, codeердин жаман маанайы же өтө тар мөөнөттөр (оо, бул мөөнөттөр!) сыяктуу шылтоолорго жол берилбейт. Программалык камсыздоону иштеп чыгуунун эң маанилүү аспектилеринин бири - бул программаны келечекте аны сактоого жана өзгөртүүгө оңой боло тургандай кылып долбоорлоо (салам, OOP!). Бүгүнкү күндө дээрлик бардык программалык камсыздоону өзгөртүүгө болот, көбүнчө бул процесс колдонуучунун катышуусуз да ишке ашат же колдонуучудан “программаңыз жаңыланды, “ОК” же кийинкиге калтыруу” дегенден башка эч нерсени талап кылbyte. Албетте, колдонуучулар тиркемелерден жаңы функцияларды талап кылууга укуктуу (айрыкча, эгер биз Java-да жазылган узак мөөнөттүү корпоративдик программалык камсыздоо же жылдар бою ойной турган онлайн оюндар жөнүндө болсо).
Java программалоо жөнүндө көбүрөөк билгиңиз келеби? Java Developer тобуна кошулуңуз !
Коддун бир бөлүгүн пайдалуу деп айтуу кыйын. Программалык камсыздоонун пайдалуу функционалдуулугу тиркемелердин бири-биринен айырмаланган бөлүктөрүнүн бири-бири менен байланышып, маалымат алмашуусунан жана колдонуучуларга берorштерди жана интерфейстерди көрсөтүү милдетин аткаруу үчүн биргелешип иштөөдөн башталат.
Программалык камсыздоо инженери ким?  Программалык камсыздоо инженериясы VS
Программалар ушул пункттарды эске алуу менен иштелип чыгышы керек! Алар кандай билдирүүлөрдү алышат? Кандай окуялар көзөмөлдөнөт? Аутентификация жана авторизация кантип ишке ашат? Жакшы программанын дагы бир бирдей маанилүү белгиси - бул колдонмо өткөн тесттердин саны эмес, ал тургай, жакшы сыноо камтуусу эмес, codeдун тактыгы. Жөнөкөй көрүнгөн суроолор: "Менин codeумду менден башка бирөө түшүнө алабы?", "Бул codeду бүгүн жазып, бир нече жумадан кийин түшүнө аламбы?" Программалоодогу эң кыйын эки нерсе жөнүндө популярдуу цитата мындай дейт:

"Эки гана кыйын нерсе бар: кэшти жараксыз кылуу жана an objectтин аталышы"

- Фил Карлтон.

Коддун окулушу жалпы эсептелгенден алда канча маанилүү. Тилекке каршы, codeдун тактыгы үчүн так метрикаларды же параметрлерди аныктоо мүмкүн эмес. Жалпы кабыл алынган тил нормаларын, жакшы программалык моделдерди жана иштеп чыгуу ыкмаларын жаттоо жарым-жартылай жардам берет. Бирок, адатта, бул жетиштүү эмес. Убакыттын жана тажрыйбанын өтүшү менен чыныгы профессионалдар интуицияга окшош нерсе, мындайча айтканда, “айкындык сезимин” өнүктүрүшөт. Жазуу метафорасы бул жерде жакшы иштейт: көп сөздөрдү билүү кыска жана мааниси боюнча так жазууга жардам бербейт.

"Мен кыскараак жазмакмын, бирок убактым жок."

- Марк Твен.

Мүчүлүштүктөрдү тез жана оңой оңдоо мүмкүнчүлүгү жакшы программалык камсыздоонун негизги өзгөчөлүгү болуп саналат. Программадагы каталар так билдирүүлөрдү жөнөтүп, көзөмөлдөө үчүн борборлоштурулган катталышы керек. Жаңы ката кабарланганда, аны оңдой турган адам аны оңдоо мүмкүнчүлүгүнө ээ болушу керек. Ал системага оңой туташып, аткаруу маалыматына каалаган убакта жетүү, ошондой эле системанын каалаган бөлүгүнүн иштешин оңой текшере алышы керек.

Айлана-чөйрө жана сыноо

Программалык камсыздоо инженерлери тиркемелерди иштеп чыгууда, алар ар түрдүү архитектурадагы жана ар кандай операциялык системалардагы компьютерлерде иштешин камсыз кылуу үчүн колунан келгендин баарын жасашат. Бул программалык камсыздоонун ар кандай токтомдордо жана экран багыттарында иштеши, ошондой эле ал талап кылынгандан көбүрөөк эстутум жана иштетүү кубаттуулугун "жеп" албашы маанилүү.
Программалык камсыздоо инженери ким?  Программалык камсыздоо инженериясы VS
Веб-тиркемелерге келгенде, алар бардык негизги браузерлерде иштеши керек. Иш такта тиркемесин түзүп жатканда, анын Mac, Windows жана Linux системаларында туура иштеп жатканын текшеришиңиз керек. Ооба, программа маалыматтарга жараша болот, анда колдонмо жай маалымат туташуусу же анын жок болгон учурда да иштеши керек. Программанын бир бөлүгүн жазуу үчүн инженерлер сценарийдин бардык варианттарын ойлонуп, аларды сынап көрүүнү пландаштырышат. Мунун баары идеалдуу вариантты тандоодон башталат, анда баары катасыз иштейт. Андан кийин алар бардык мүмкүн болгон көйгөйлөрдү documentтештирип, аларды сыноо планына жазышат. Кээ бир инженерлер code жазуудан башташат, аны сыноо иши деп аташат, ал бардык мүмкүн болгон көйгөйлөр жана каталар үчүн сценарийлерди имитациялайт. Анан каралып жаткан варианттардын баары менен иштей ала турган программа жазылат. Таланттуу инженер-программисттин уникалдуу жөндөмү бул codeду кантип жазууну билбестен, ал тиркеме так эмне кылышы керектигин жана ага кантип жетүү керектигин түшүнүүдө. Кардардын программалык камсыздоого болгон талаптары толук эмес жана балким эки ача мааниге ээ болгондо, инженер аларды туура баалап, «түшүнүшү» керек.

Наркы жана эффективдүүлүгү

Программалык камсыздоо инженери көпчүлүк учурларда көйгөйдү тез чече алат. Эгер сиз "кымбат" тажрыйбалуу программист жалдоо чыгымдарыңызды көбөйтөт деп ойлосоңуз, дагы бир жолу ойлонуп көрүңүз. Жалданган программист канчалык тажрыйбалуу болсо, ал ошончолук тезирээк жөнөкөй, тыкан, ишенимдүү жана колдонууга оңой чечимди бере алат. Узак мөөнөттүү келечекте бул программалык камсыздоону иштеп чыгууга чыгымдарды азайтат.
Программалык камсыздоо инженери ким?  Программалык камсыздоо инженериясы VS
Программаны ишке ашырууга кеткен чыгымдарды да эске алуу зарыл. Ар кандай программа эсептөө ресурстарын колдонот жана алар бекер эмес.
Программалык камсыздоо инженеринин милдети - эсептөө ресурстарын керексиз колдонбогон эффективдүү code жазуу.
Мисалы, тез-тез кирүүчү маалыматтарды кэштөө каалаган натыйжага жетүү үчүн колдонулган мүмкүн болгон стратегиялардын бири болуп саналат. Бирок бул программаны тезирээк жана натыйжалуураак кыла турган жүздөгөн инструменттердин жана чечимдердин бири гана. Жаңы баштаган программист сизге арзан чечимди сунушташы мүмкүн, бирок мындай чечимди колдонуу акыры сизге жана сиздин кардарларыңызга биринчи кезекте натыйжалуу чечимди жараткан тажрыйбалуу иштеп чыгуучу менен иштегенге караганда алда канча кымбатка турат.

Колдонуучунун тажрыйбасына көңүл буруңуз

Жакшы программист колдонуучу тажрыйбасын (UX) эске алуу менен өнүгүп чыгат. Адам менен машинанын өз ара аракеттенүүсү чексиз изилдөө жана чечимдерди камтыган тема. Канчалык көп чечимдер колдонулса, программа ошончолук жакшы болушу керек. Бул багыт эмне экенин сезүү үчүн, бул жерде бир нече мисалдар:
  • Электрондук почта сыяктуу маалыматтарды киргизүү формаларын иштеп чыгууда, жакшы программа электрондук почтанын дарегине көңүл бурбашы керек. Эгер CAPSLOCK баскычы басылса, ал ката кетирбеши керек, анткени электрондук почта дареги кичинекей тамгалар менен уникалдуу. Эгерде программа жаңы электрондук почта дарегин киргизүү катары кабыл алса, колдонуучуга туура эмес дарек форматын колдонуп жаткандыгы тууралуу эскертүү үчүн киргизүү процессинин башында аны текшериңиз. Бул чечим жетишпеген "@" белгиси сыяктуу айкын текшерүүлөрдү, ошондой эле "gmail.ocm" сыяктуу символдордун туура эмес тартибин текшерүү сыяктуу анча деле айкын эмес текшерүүлөрдү камтыйт.

  • Колдонуучу кандайдыр бир иш-аракеттерди жасоого багытталганда, жакшы программа анын учурдагы абалын эстеп, ал аяктагандан кийин аны кайра кайтарышы керек. Жакшы программа, ошондой эле аны менен андан ары өз ара аракеттенүү үчүн маанилүү колдонуучу тарабынан буга чейин берилген маалыматтарды эстеп керек.

    Сиз Expedia'да конок катары аба каттамдарын издеп жатасыз дейли. Кийинчерээк сиз эсеп жазууну түзүүнү чечесиз. Колдонмо бардык мурунку издөөлөрүңүздү жаңы каттоо эсебинде сактап, аларга башка түзмөктөрдөн кире алышыңыз керек.


  • Программалык камсыздоо инженери ким?  Программалык камсыздоо инженериясы VS
  • Жакшы программа колдонуучунун жүрүм-турум сценарийлерин эске алуу менен иштелип чыккан. Сиз жөн гана "ушунчалык" негизинде жаңы функцияларды кошуунун кереги жок; өзүңүздү колдонуучунун ордуна коюңуз. Бир күнү самолетко билеттерди брондоп жатып, тез-тез учуучу номеримди жазууну унутуп калдым. Ырастоону алгандан кийин, авиакомпаниянын веб-сайтына кирип, арзанdateуну алуу үчүн аны кошууну чечтим. Муну кантип жасоо керектигин билүү үчүн мен 10 мүнөткө чейин сайт менен алектендим. Тиркеме ушунчалык түшүнүксүз болгондуктан, мен керектүү нерсени табуу үчүн сайттын ар кайсы барактарын кыдырып чыктым. Кийинчерээк мен бир нече жолу туура бетке түшкөнүмдү билдим, бирок мен аны түшүнгөн жокмун, анткени мага керектүү талаа чоң формадагы окшош талаалардын арасында жоголуп кеткен.

    Көрсө, сапар тууралуу маалыматты оңдоо үчүн форманын жыйырмага жакын саптарын жылдырып, лоялдуулук картасынын номерин жана телефон номерин киргизишим керек экен, ансыз форманы текшерүүгө жөнөтүү мүмкүн эмес экен. Бул колдонуучу аны менен канчалык ыңгайлуу болоорун ойлонбостон иштелип чыккан программанын мисалы.

Ишенимдүүлүк, коопсуздук жана коопсуздук

Менин оюмча, профессионалдуу программалык камсыздоону иштеп чыгуучу менен ышкыбоздун ортосундагы эң маанилүү айырма - бул тиркемени түзүү учурунда анын ишенимдүүлүгү, коопсуздугу жана коопсуздугу сыяктуу параметрлерди эске алуу.
Чыныгы профессионал өзүнүн чечиминин коопсуздугу жана коопсуздугу үчүн жооптуу экенин билет.
Программанын бөлүктөрү туура эмес киргизүүгө, туура эмес абалдарга жана туура эмес өз ара аракеттенүүгө чыдамдуу болушу керек. Бул чындап эле ишке ашыруу абдан кыйын жана биз программалык мүчүлүштүктөрдөн улам каза болгон адамдардын окуяларын угушубуздун негизги себеби болуп саналат. Колдонуучулар программага туура эмес маалыматтарды киргизишти, киргизип жатышат жана уланта беришет. Муну факт катары кабыл алуу керек. Андан тышкары, кээ бирлери колдонмону бузуп, ага жеткorктүү ресурстарга жетүү максатында муну атайын жасашат.
Программалык камсыздоо инженери ким?  Программалык камсыздоо инженериясы VS
Бул жерде чыныгы жашоодон бир мисал келтирели: Жакында Equifax маалыматтарынын бузулушуна жооптуу делген адам өзүнүн кызматтык милдеттерин аткарбагандыгы үчүн айыпталууда, ал коомчулукка жеткorктүү болгон бардык программалык продуктыларда жаман жана зыяндуу киргизүүлөргө каршы туруу үчүн чечимдерди иштеп чыгуу болгон. Маалыматтык коопсуздукка байланыштуу инциденттер туура эмес жана зыяндуу киргизүүнү гана эмес, ошондой эле туура эмес киргизилген маалыматтарды камтыйт. Колдонуучу паролду унутуп калса, аны канча жолу киргизүүгө аракет кыла алат? Ушундан кийин ага бөгөт коёсузбу? Эгер кимдир бирөө анын аккаунтун блоктоого аракет кылсачы? Колдонуучу өзүнүн эсептик дайындарын шифрленбеген маалымат каналы аркылуу өткөрө алабы? Кирүү өтүнүчү адаттан тыш жерден келсечи? Кирүү аракети автоматтык түрдө көрүнсө, эмне кыласыз? Колдонуучуларыңызды сайттар аралык скрипттерден, сайттар аралык өтүнүчтөрдү жасалмалоодон жана жалпы фишингден коргоо үчүн эмне кылдыңыз? Сиздин serverлериңизге DDoS чабуулу болгон учурда резервдик стратегияңыз барбы? Бул суроолор каралышы керек болгон маселелердин айрымдарын гана көрсөтөт. Корголгон программа маанилүү маалыматты текст түрүндө сактаbyte. Ал аны татаал бир тараптуу шифр менен коргойт (шифрлөө оңой, бирок ачкычсыз чечмелөө дээрлик мүмкүн эмес). Бул программа бузулган учурда резервдик чаралар. Хакерлер алар үчүн пайдасыз шифрленген маалыматтарды таап алышат. Эң мыкты программаларда да күтүлбөгөн көйгөйлөр пайда болот. Алардын пайда болушуна даяр эмес программистти профессионал деп айтуу кыйын. Ал күтүүсүз жүрүм-турум күтмөйүнчө, ал инженер эмес. Ал "кооптуу программалардын автору". Программалардагы каталар дайыма эле ачык боло бербейт. Белгилүү каталарды алдын ала билүү жана алдын алуу биздин интеллектуалдык жөндөмүбүз чектелүү. Мына ошондуктан программалык камсыздоо инженерлери туура жана коопсуз программалык камсыздоону жазууга мүмкүндүк берүүчү жакшы куралдардын маанилүүлүгүн түшүнүшөт.

Керектүү куралдар

Бизге ар кандай жана жакшы өнүктүрүү куралдары керек экени талашсыз. Алардын ролу көп учурда бааланbyte, бирок чындыгында алар көп убакытты жана күч-аракетти үнөмдөйт, кээ бир тапшырмаларды чоңдук тартиби менен жөнөкөйлөштүрүшөт. Элестетиңиз, эгер сиз дагы эле FTP аркылуу файлдарды орнотуу үчүн, мындайча айтканда, эски модада жүктөшүңүз керек болчу. Мүчүлүштүктөрдү оңдоо тармагын жана иштөө маселелерин Chrome DevTools'суз элестетиңиз! Жана ушул күндөрү ESlit жана Prettier жок JavaScript codeун жазуу кандай натыйжасыз болмок!
Программалык камсыздоо инженери ким?  Программалык камсыздоо инженериясы VS
Кодду жазып жатканда жооп кайтаруу убактысын кыскартуучу бардык куралды тосуп алуу керек. Мурда мага бейтааныш, бирок чындап пайдалуу жана эффективдүү куралды тапканымда, мен аны ушул бактылуу учурга чейин колдонбогонума өкүнөм.
Жакшыраак жана заманбап куралдар сизге мыкты программист болууга жардам берет. Аларды табыңыз, колдонуңуз, баалаңыз, эгер мүмкүн болсо, жакшыртыңыз. Жана бир эле нерсеге асылбаңыз: ким билет, балким, жаңы курал менен сиз бир жолу орнотууга жана үйрөнүүгө убакыт коротасыз, анан көйгөйлөрдү бир нече эсе тезирээк чечесиз?

Программалык камсыздоонун эволюциясы

Эч ким эки айда, алты айда, атүгүл бир жылда программалык камсыздоону үйрөнө алbyte. Сизге курста, университетте же окуу лагеринде инженер-программист болуу үйрөтүлбөйт. Мен акыркы жыйырма жылдан бери окудум жана азыр да окууну улантып жатам. Мен миңдеген колдонуучулар колдонгон тиркемелерди он жылдык үйрөнүп, иштеп чыгып, түзүп, тейлегенден кийин гана өзүмдү тажрыйбалуу программист деп атай алдым. Программалык инженерия ар бир адам үчүн эмес, бирок ар бир адам өз көйгөйлөрүн компьютер аркылуу чечүүнү үйрөнүшү керек. Эгер сиз жөнөкөй программаларды жазганды үйрөнө алсаңыз, анда керек. Эгер сиз жалпыга жеткorктүү программалык камсыздоону колдонууну үйрөнө алсаңыз, анда керек. Эгер сиз ачык программалык камсыздоону колдонууну үйрөнүп, аны өзүңүз үчүн ыңгайлаштыра алсаңыз, анда сизде супер күч бар! Күн сайын иштеп чыгуучуларга жаңы кыйынчылыктарды, жаңы көйгөйлөрдү алып келет, ошондуктан программалык камсыздоо инженериясы керек. Бул кесиптин негизги милдети - жөнөкөй адам көп жылдар бою аны менен алек болбошу үчүн программалык камсыздоону түзүү. Ошентип, программалар менен өз ара аракеттенүү үчүн узак изилдөөлөрдүн кереги жок. Бирок, программалык камсыздоо инженерлери тынымсыз татаалыраак белгилүү маселелерди чече ала турган жакшы куралдарды түзүү жөнүндө ойлонуп, жаңы көйгөйлөр мүмкүн болушунча сейрек пайда болушу үчүн колдон келгендин баарын жасашат.
Комментарийлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION