Chapterبەش 1 · Lectureوانە 1.1

What Is Software Engineering?ئەندازیاریی نەرمەواڵە چییە؟

Why a six-line script and a program that 2,000 customers use for years are different jobs: software engineering as programming over time, its definition, why it is engineering, the 1968 NATO conference and the software crisis, Margaret Hamilton and Apollo, the Ariane 5 flight 501 and July 2024 failures, the nine quality characteristics of ISO/IEC 25010:2023, technical debt, the roles on a team, the 18 SWEBOK v4 knowledge areas, working with AI assistants in 2026, and Bazaar Cart, the app this course builds.

بۆچی شەش دێڕی و کە ⁦2,000⁩ کڕیار بۆ چەند ساڵ بەکاری دەهێنن دوو کاری جیاوازن: وەک بە درێژایی کات، پێناسەکەی، بۆچی ئەندازیارییە، کۆنفرانسی NATOـی ⁦1968⁩ و ، Margaret Hamilton و Apollo، شکستەکانی گەشتی ⁦501⁩ـی ⁦Ariane 5⁩ و تەمموزی ⁦2024⁩، نۆ تایبەتمەندیی جۆرایەتیی ⁦ISO/IEC 25010:2023⁩، ، ئەرکەکانی ناو تیم، ⁦18⁩ بواری زانینی ⁦SWEBOK v4⁩، کارکردن لەگەڵ یاریدەدەرەکانی لە ⁦2026⁩دا و Bazaar Cart، ئەو ئەم کۆرسە دروستی دەکات.

19 min read21 خولەک خوێندنەوە · 21 stepsهەنگاو

What you will learnچی فێر دەبیت

  • Explain the difference between programming and software engineering (time, scale, trade-offs) and the standard definition in plain words.
  • Tell how the field got its name (1968, the software crisis) and what Margaret Hamilton's Apollo team did.
  • Draw engineering lessons from Ariane 5 flight 501 and the July 2024 update failure.
  • Name the nine quality characteristics of ISO/IEC 25010:2023 and explain technical debt with numbers.
  • Describe the roles in a software team, the SWEBOK knowledge areas, and how to use AI assistants responsibly.
  • جیاوازیی نێوان و (کات، قەبارە، هاوسەنگکردن) و پێناسە ستانداردەکە بە وشەی سادە ڕوون بکەیتەوە.
  • بگێڕیتەوە ئەم بوارە چۆن ناوی لێ نرا (⁦1968⁩، ) و تیمەکەی Margaret Hamilton لە Apollo چی کرد.
  • وانەی ئەندازیاری لە گەشتی ⁦501⁩ـی ⁦Ariane 5⁩ و شکستی تەمموزی ⁦2024⁩ وەربگریت.
  • نۆ تایبەتمەندیی جۆرایەتیی ⁦ISO/IEC 25010:2023⁩ ناو ببەیت و بە ژمارە ڕوون بکەیتەوە.
  • ئەرکەکانی ناو تیمێکی ، بوارەکانی زانینی SWEBOK و چۆنیەتیی بەکارهێنانی بەرپرسیارانەی یاریدەدەرەکانی وەسف بکەیت.

Six lines that work on one laptopشەش دێڕ کە لەسەر یەک لاپتۆپ کار دەکەن

Soran sells dried fruit and spices in the Sulaimani bazaar. He asks Karwan, a student, for a small program that prices an order. Karwan writes six lines of Python in one afternoon. (All prices in this course are made up, in Iraqi dinars, IQD.)

سۆران لە بازاڕی سلێمانی میوەی وشک و بەهارات دەفرۆشێت. داوا لە کاروانی خوێندکار دەکات بچووکی بۆ بنووسێت کە نرخی داواکارییەک حساب بکات. کاروان لە یەک پاشنیوەڕۆدا شەش دێڕ دەنووسێت. (هەموو نرخەکانی ئەم کۆرسە دەستکردن و بە دیناری عێراقین، IQD.)

Karwan's first programیەکەم بەرنامەی کاروانprices.pyPYTHONType in a terminalلە تێرمیناڵدا بینووسە
# prices.py - Karwan's first try
def line_price(price_per_kg, grams):
    return price_per_kg * grams / 1000

print(line_price(8000, 350))   # sumac, 350 g
print(line_price(8000, -200))  # a typing mistake
Explain the codeڕوونکردنەوەی کۆدەکە
Lineدێڕی 2-3

Price of one line: price per kilogram × grams ÷ 1000.

نرخی یەک دێڕ: نرخی کیلۆیەک × گرام ÷ ⁦1000⁩.

Lineدێڕی 5-6

Two tries: 350 g of sumac (8,000 IQD per kg), and a typing mistake, −200 g.

دوو تاقیکردنەوە: ⁦350⁩ گرام سماق (کیلۆی ⁦8,000⁩ دینار) و هەڵەیەکی تایپکردن، ⁦−200⁩ گرام.

It runs, and the first answer looks fine. But Soran's rule says a line price is rounded up to the next 250 dinars, so the sumac should cost 3,000, not 2,800. And the typing mistake gives a negative price, −1,600, with no warning at all.

کار دەکات و یەکەم وەڵام باش دیارە. بەڵام یاسای سۆران دەڵێت نرخی هەر دێڕێک بەرەو سەرەوە دەبرێت بۆ ⁦250⁩ دیناری دواتر، کەواتە سماقەکە دەبێت ⁦3,000⁩ بێت نەک ⁦2,800⁩. هەروەها هەڵە تایپییەکە بێ هیچ ئاگادارکردنەوەیەک نرخێکی سالب دەدات: ⁦−1,600⁩.

Six lines that work on one laptopشەش دێڕ کە لەسەر یەک لاپتۆپ کار دەکەن

What changes in five years?لە پێنج ساڵدا چی دەگۆڕێت؟

Now imagine the same program five years later. Soran's 2,000 customers order through it every day. Four students change its code. New rules arrive, such as free delivery and a discount. No change may break an old rule.

ئێستا هەمان پێنج ساڵ دواتر بهێنە پێش چاوت. ⁦2,000⁩ کڕیاری سۆران هەموو ڕۆژێک لە ڕێیەوە داوا دەکەن. چوار خوێندکار کۆدەکەی دەگۆڕن. یاسای نوێ دێن، وەک گەیاندنی بێبەرانبەر و داشکان. هیچ گۆڕانکارییەکیش نابێت یاسایەکی کۆن بشکێنێت.

An animation in five frames. It starts with one file, prices.py, one person, Karwan, and the words: 6 lines, one person, one laptop: it works. Then more files appear (delivery.py, test_prices.py, repository.py, README.md, CHANGELOG.md), then three more people (Aram, Shilan, Dilan), then a line of versions 0.1.0, 1.0.0, 1.0.1, 1.1.0 and 2.0.0, and finally a box of phones: 2,000 customers order every day. Last caption: now it needs engineering.
An animation in five frames. It starts with one file, prices.py, one person, Karwan, and the words: 6 lines, one person, one laptop: it works. Then more files appear (delivery.py, test_prices.py, repository.py, README.md, CHANGELOG.md), then three more people (Aram, Shilan, Dilan), then a line of versions 0.1.0, 1.0.0, 1.0.1, 1.1.0 and 2.0.0, and finally a box of phones: 2,000 customers order every day. Last caption: now it needs engineering.
A six-line script grows into a project: more files, more people, more versions, more users. شەش دێڕی دەبێت بە پڕۆژە: فایلی زیاتر، خەڵکی زیاتر، زیاتر، زیاتر.CêIT

Programming alone does not answer the new questions. Who decides what to build next? How do we know that everything still works after a change? How can four people change one program safely? Those are the questions of software engineering.

بەتەنیا وەڵامی پرسیارە نوێیەکان ناداتەوە. کێ بڕیار دەدات دواتر چی دروست بکرێت؟ چۆن دەزانین دوای گۆڕانکارییەک هەموو شتێک هێشتا کار دەکات؟ چوار کەس چۆن بە سەلامەتی یەک دەگۆڕن؟ ئەمانە پرسیارەکانی ن.

Programming or software engineering?بەرنامەسازی یان ئەندازیاریی نەرمەواڵە؟

A book by engineers at Google gives a short answer: software engineering is programming integrated over time. Programming makes a program work today. Software engineering keeps it working while three things grow:

کتێبێکی ئەندازیارانی Google وەڵامێکی کورت دەداتەوە: واتە بە درێژایی کات. وا لێ دەکات ئەمڕۆ کار بکات. وای لێ دەکات بەردەوام کار بکات، لە کاتێکدا سێ شت گەورە دەبن:

  • Time: code may live for an hour or for twenty years, and everything around it changes: users, rules, libraries, phones.
  • Scale: more people, more code and more users, so the work must be shared and checked.
  • Trade-offs: every decision has a cost, such as fast now or easy to change later.
  • کات: کۆد لەوانەیە کاتژمێرێک بژی یان بیست ساڵ و هەموو شتێکی دەوروبەری دەگۆڕێت: ، یاساکان، ، مۆبایلەکان.
  • قەبارە: خەڵکی زیاتر، کۆدی زیاتر و زیاتر، بۆیە کارەکە دەبێت بەش بکرێت و بپشکنرێت.
  • هاوسەنگکردن: هەموو بڕیارێک تێچووی هەیە، وەک ئێستا خێرا یان دواتر ئاسان بۆ گۆڕین.
Two panels. Left, Programming: one person, one file prices.py; one person, one file, one afternoon, one user; done when it runs. An arrow leads right to Software engineering: four people, five files, a line of versions 0.1.0, 1.0.0, 1.0.1, 1.1.0, 2.0.0; four people, many files, versions for years; 2,000 customers depend on it. Bottom: software engineering is programming plus time, scale and trade-offs.دوو بەش. چەپ، بەرنامەسازی: یەک کەس، یەک فایل prices.py؛ یەک کەس، یەک فایل، یەک پاشنیوەڕۆ، یەک بەکارهێنەر؛ کە کاری کرد تەواوە. تیرێک بەرەو ڕاست دەچێت بۆ ئەندازیاریی نەرمەواڵە: چوار کەس، پێنج فایل، هێڵێکی وەشانەکان: 0.1.0، 1.0.0، 1.0.1، 1.1.0، 2.0.0؛ چوار کەس، چەندین فایل، وەشانەکان بۆ چەند ساڵ؛ 2,000 کڕیار پشتی پێ دەبەستن. خوارەوە: ئەندازیاریی نەرمەواڵە واتە بەرنامەسازی لەگەڵ کات، قەبارە و هاوسەنگکردنی بژاردەکان.
The same code becomes a different job when time, people and users are added.هەمان کۆد دەبێت بە کارێکی جیاواز کاتێک کات، خەڵک و زیاد دەکرێن.CêIT

Programming or software engineering?بەرنامەسازی یان ئەندازیاریی نەرمەواڵە؟

The definition, in plain wordsپێناسەکە، بە وشەی سادە

SWEBOK, the IEEE guide to the field, uses the international definition: software engineering applies a systematic (planned, step by step), disciplined (following agreed rules) and quantifiable (measured with numbers) approach to developing, operating and maintaining software. In short: engineering, applied to software.

SWEBOK، ڕێبەری IEEE بۆ ئەم بوارە، پێناسە نێودەوڵەتییەکە بەکار دەهێنێت: ڕێگایەکی ڕێکخراو (بە پلان، هەنگاو بە هەنگاو)، دیسپلیندار (پەیڕەوی یاسای ڕێککەوتوو دەکات) و پێوانەکراو (بە ژمارە دەپێورێت) بەکار دەهێنێت بۆ گەشەپێدان، کارپێکردن و . بە کورتی: بەکارهێنانی ئەندازیاری بۆ .

Definitionپێناسە

Using careful engineering methods to plan, build, test and look after large . Software engineers work in teams and follow a process such as the .

بەکارهێنانی شێوازی ئەندازیاریی ڕێکوپێکە بۆ پلاندانان، دروستکردن، تاقیکردنەوە و چاودێریکردنی گەورە. ئەندازیارانی ئەم بوارە بە تیم کار دەکەن و پەیڕەوی پرۆسەیەکی وەک دەکەن.

An iceberg. Above the water line, labelled what people see, is only the code. Under the water: requirements, design, tests, code reviews, documentation, versions and releases, teamwork, and maintenance for years. Bottom: most of the work of software engineering is under the water line.چیایەکی سەهۆڵ. لە سەرووی هێڵی ئاوەوە، کە نووسراوە ئەوەی خەڵک دەیبینن، تەنیا کۆدەکەیە. لە ژێر ئاوەوە: پێداویستییەکان، دیزاین، تاقیکردنەوەی نەرمەواڵە، پێداچوونەوەکانی کۆد، بەڵگەنامە، وەشانەکان و بڵاوکردنەوە، کاری تیمی و چاککاری بۆ چەند ساڵ. خوارەوە: زۆربەی کاری ئەندازیاریی نەرمەواڵە لە ژێر هێڵی ئاوەکەدایە.
Users see the code running; most of the work is out of sight. کارکردنی کۆدەکە دەبینن؛ زۆربەی کارەکە لە بەرچاو نییە.CêIT

Why call it engineering?بۆچی پێی دەڵێن ئەندازیاری؟

Engineers who build a bridge plan it, calculate it, follow standards and answer for its safety. Software engineers do the same with code. But software is different from a bridge in ways that make careful engineering even more necessary:

ئەو ئەندازیارانەی پردێک دروست دەکەن پلانی بۆ دادەنێن، حسابی بۆ دەکەن، پەیڕەوی ستاندارد دەکەن و بەرپرسیارن لە سەلامەتییەکەی. ئەندازیارانی هەمان کار بە کۆد دەکەن. بەڵام بەم شێوانە لە پرد جیاوازە و ئەمە ئەندازیاریی وردی پێویستتر دەکات:

  • You cannot see it, so problems hide until someone runs it.
  • It is easy to change, so people change it all the time.
  • Every user runs a copy, so one mistake reaches all of them at once.
  • It is never finished: new versions keep coming.
  • نابینرێت، بۆیە کێشەکان شاراوە دەمێننەوە تا کەسێک کاری پێ دەکات.
  • گۆڕینی ئاسانە، بۆیە خەڵک هەمیشە دەیگۆڕن.
  • هەموو کۆپییەکی کار پێدەکات، بۆیە یەک هەڵە پێکەوە دەگاتە هەموویان.
  • هەرگیز تەواو نابێت: نوێ بەردەوام دێن.
A comparison table between a bridge and software. Both: plan and check before building, standards and responsibility. Can you see it? The bridge yes, software is invisible. Changing it later: the bridge hard and slow, software easy, so it changes all the time. A mistake reaches: one place for the bridge, every copy at once for software. Finished? The bridge yes, then it is looked after; software never, new versions keep coming.خشتەیەکی بەراوردکردن لە نێوان پرد و نەرمەواڵەدا. هەردووکیان: پلان و پشکنین پێش دروستکردن، ستاندارد و بەرپرسیارێتی. دەبینرێت؟ پرد بەڵێ، نەرمەواڵە نابینرێت. گۆڕینی دواتر: پرد قورس و هێواش، نەرمەواڵە ئاسان، بۆیە هەمیشە دەگۆڕێت. هەڵەیەک دەگاتە: پرد یەک شوێن، نەرمەواڵە هەموو کۆپییەکان پێکەوە. تەواو دەبێت؟ پرد بەڵێ، پاشان چاودێری دەکرێت؛ نەرمەواڵە هەرگیز، وەشانەکانی نوێ دێن.
Alike in method, different in nature.لە ڕێگادا لەیەک دەچن، لە سروشتدا جیاوازن.CêIT

1968: the software crisis gets a name⁦1968⁩: قەیرانی نەرمەواڵە ناوی لێ دەنرێت

In the 1960s computers became powerful and programs became huge. Many projects went badly, and people gave the problem a name:

لە شەستەکانی سەدەی بیستەمدا کۆمپیوتەر بەهێز بوو و زۆر گەورە بوون. زۆر پڕۆژە خراپ ڕۆیشتن و خەڵک ناوێکیان لە کێشەکە نا:

Definitionپێناسە

The name given in the late 1960s to a common problem: software projects were late, cost far more than planned, and the programs were full of and hard to change. It led to the idea of .

ئەو ناوەی لە کۆتایی شەستەکانی سەدەی بیستەمدا درا بە کێشەیەکی باو: پڕۆژەکانی دوا دەکەوتن، زۆر زیاتر لە پلان تێچوویان دەبوو و پڕ بوون لە و گۆڕینیان قورس بوو. ئەم کێشەیە بیرۆکەی هێنایە ئاراوە.

From 7 to 11 October 1968, NATO's Science Committee brought experts together in Garmisch, Germany, for a conference called Software Engineering. Brian Randell, one of the editors of its report, later explained that the title was meant to provoke: it named something the world needed, not something that already existed. A second conference followed in Rome in October 1969.

لە 7 تا ⁦11⁩ی تشرینی یەکەمی ⁦1968⁩، لیژنەی زانستیی NATO پسپۆڕانی لە Garmisch لە ئەڵمانیا کۆکردەوە بۆ کۆنفرانسێک بە ناوی . Brian Randell، یەکێک لە ئامادەکارانی ڕاپۆرتەکەی، دواتر ڕوونی کردەوە کە ناوەکە بۆ وروژاندن هەڵبژێردرا: ناوی شتێک بوو کە جیهان پێویستی پێی بوو، نەک شتێک کە هەبوو. کۆنفرانسێکی دووەم لە تشرینی یەکەمی ⁦1969⁩ لە ڕۆما بەڕێوەچوو.

A timeline with six points: 1968 NATO conference in Garmisch, where the name was used; 1969 Apollo 11 lands with Hamilton's team's code; 2001 Agile Manifesto, 17 people in Utah; 2005 Git is created for the Linux kernel; 2008 GitHub opens on 10 April; 2024 SWEBOK version 4 with 18 knowledge areas.هێڵێکی کات بە شەش خاڵ: 1968 کۆنفرانسی NATO لە Garmisch، کە ناوەکەی تێدا بەکارهات؛ 1969 Apollo 11 بە کۆدی تیمەکەی Hamilton دەنیشێتەوە؛ 2001 بەیاننامەی ئەجایڵ، 17 کەس لە Utah؛ 2005 Git بۆ کڕۆکی Linux دروست دەکرێت؛ 2008 GitHub لە 10ی نیسان دەکرێتەوە؛ 2024 وەشانی 4ی SWEBOK بە 18 بواری زانین.
From a provocative conference title to a field with its own body of knowledge.لە ناوی کۆنفرانسێکی وروژێنەرەوە بۆ بوارێک کە کۆمەڵە زانیاریی خۆی هەیە.CêIT

1968: the software crisis gets a name⁦1968⁩: قەیرانی نەرمەواڵە ناوی لێ دەنرێت

Margaret Hamilton and the Apollo softwareMargaret Hamilton و نەرمەواڵەی Apollo

One person who showed what software engineering could be was Margaret Hamilton (1936–2026). She led the Software Engineering Division of the MIT Instrumentation Laboratory, later called Draper Laboratory. Her team wrote the on-board flight software for Apollo's command module and lunar module: the software that took astronauts to the Moon in 1969.

یەکێک لەو کەسانەی پیشانی دا دەتوانێت چی بێت Margaret Hamilton بوو ⁦(1936–2026)⁩. سەرۆکایەتیی بەشی تاقیگەی ئامێرەکانی MITـی دەکرد، کە دواتر ناوی بوو بە تاقیگەی Draper. تیمەکەی فڕینی ناو کەشتیی فەرماندە و کەشتیی مانگی Apolloـیان نووسی: ئەو لە ⁦1969⁩دا ئاسمانەوانانی برد بۆ سەر مانگ.

NASA credits her with making the idea of software engineering popular, at a time when many people did not take software seriously as engineering. She received the US Presidential Medal of Freedom in 2016 and died on 30 September 2026, aged 90.

NASA ئەو بە کەسێک دادەنێت کە بیرۆکەی بەناوبانگ کرد، لە کاتێکدا زۆر کەس وەک ئەندازیارییەکی ڕاستەقینە نەدەبینی. لە ⁦2016⁩دا مەدالیای ئازادیی سەرۆکایەتیی ئەمریکای وەرگرت و لە ⁦30⁩ی ئەیلوولی ⁦2026⁩دا لە تەمەنی ⁦90⁩ ساڵیدا کۆچی دوایی کرد.

When software fails: Ariane 5 flight 501کاتێک نەرمەواڵە شکست دەهێنێت: گەشتی ⁦501⁩ـی ⁦Ariane 5⁩

On 4 June 1996 the first Ariane 5 rocket, flight 501, lifted off from Kourou in French Guiana. About 37 seconds later it turned sharply off course and broke apart. An inquiry board led by Professor Jacques-Louis Lions found the cause in the software.

لە 4ی حوزەیرانی ⁦1996⁩دا یەکەم ڕۆکێتی ⁦Ariane 5⁩، گەشتی ⁦501⁩، لە Kourou لە گوایانای فەرەنسی هەڵسا. نزیکەی ⁦37⁩ چرکە دواتر توند لە ڕێگاکەی لایدا و پارچە پارچە بوو. لیژنەیەکی لێکۆڵینەوە بە سەرۆکایەتیی پرۆفیسۆر ⁦Jacques-Louis Lions⁩ هۆکارەکەی لە دۆزییەوە.

A part of the navigation software was reused from Ariane 4. It turned a 64-bit floating-point number into a 16-bit integer. On Ariane 4 the number always fitted. Ariane 5 flew a different path, the number grew too big, and nobody had planned for that.

بەشێک لە ڕێنیشاندان لە ⁦Ariane 4⁩ـەوە بەکارهێنرابووەوە. ⁦64⁩ بیتی دەکرد بە ⁦16⁩ بیت. لە ⁦Ariane 4⁩ـدا ژمارەکە هەمیشە جێی دەبووەوە. ⁦Ariane 5⁩ بە ڕێگایەکی جیاوازدا فڕی، ژمارەکە زۆر گەورە بوو و کەس پلانی بۆ ئەوە دانەنابوو.

Five steps in a chain, 4 June 1996, Kourou, French Guiana. 1: code reused from Ariane 4, kept running after lift-off, though not needed. 2: Ariane 5 gains sideways speed about 5 times faster, so one value, BH, grows far bigger than on Ariane 4. 3: a 64-bit floating-point number is turned into a 16-bit integer; it is too big to fit, an exception that nobody handled. 4: both navigation units (SRI) stop; the backup had the same software, so it failed too. 5: error data is read as flight data; the rocket turns hard and breaks up about 39 seconds after lift-off. Lesson: reused code carries old assumptions; check them, and test with the real flight data.پێنج هەنگاو لە زنجیرەیەکدا، 4ی حوزەیرانی 1996، Kourou، گوایانای فەرەنسی. 1: کۆدێک لە Ariane 4ـەوە بەکارهێنرایەوە و دوای هەڵسان هەر کاری دەکرد، هەرچەندە پێویست نەبوو. 2: خێرایی Ariane 5 بە لادا نزیکەی 5 ئەوەندە خێراتر زیاد دەکات، بۆیە بەهایەک (BH) زۆر گەورەتر دەبێت لە Ariane 4. 3: ژمارەیەکی کەرتیی 64 بیت دەکرێت بە ژمارەیەکی تەواوی 16 بیت؛ گەورەترە لەوەی جێی ببێتەوە: هەڵاوێردەیەک کە کەس چارەسەری نەکرد. 4: هەردوو یەکەی ڕێنیشاندان (SRI) دەوەستن؛ یەدەگەکەش هەمان نەرمەواڵەی هەبوو، بۆیە ئەویش وەستا. 5: زانیاریی هەڵە وەک زانیاریی گەشت دەخوێندرێتەوە؛ ڕۆکێتەکە توند لادەدات و نزیکەی 39 چرکە دوای هەڵسان پارچە پارچە دەبێت. وانە: کۆدی کۆن گریمانە کۆنەکانی لەگەڵ خۆی دەهێنێت؛ بیانپشکنە و بە زانیاریی ڕاستەقینەی گەشتەکە تاقیی بکەرەوە.
The chain of causes found by the inquiry board (report of 19 July 1996).زنجیرەی هۆکارەکان بەپێی لیژنەی لێکۆڵینەوە (ڕاپۆرتی ⁦19⁩ی تەمموزی ⁦1996⁩).CêIT

The board's advice still reads like a software engineering lesson: do not run code that is not needed, check the ranges of every value, and test the whole system with real trajectory data.

ئامۆژگارییەکانی لیژنەکە هێشتا وەک وانەیەکی دەخوێندرێنەوە: کۆدێک کە پێویست نییە کاری پێ مەکە، سنووری هەموو بەهایەک بپشکنە و هەموو سیستەمەکە بە زانیاریی ڕاستەقینەی ڕێڕەوی فڕین تاقی بکەرەوە.

When software fails: Ariane 5 flight 501کاتێک نەرمەواڵە شکست دەهێنێت: گەشتی ⁦501⁩ـی ⁦Ariane 5⁩

July 2024: one update, 8.5 million computersتەمموزی ⁦2024⁩: یەک نوێکردنەوە، ⁦8.5⁩ ملیۆن کۆمپیوتەر

Failures still happen. In July 2024 the security company CrowdStrike released a faulty update for its software on Windows computers. Microsoft estimated that it affected 8.5 million Windows devices: less than one percent of all of them, yet enough to be felt around the world, because so many companies depend on the same products.

شکست هێشتا ڕوودەدات. لە تەمموزی ⁦2024⁩دا کۆمپانیای ئاسایشی CrowdStrike هەڵەی بۆ سەر کۆمپیوتەرەکانی Windows بڵاو کردەوە. Microsoft مەزەندەی کرد کە کاری کردە سەر ⁦8.5⁩ ملیۆن ئامێری Windows: کەمتر لە یەک لە سەدی هەموویان، بەڵام بەس بوو بۆ ئەوەی لە هەموو جیهان هەستی پێ بکرێت، چونکە کۆمپانیایەکی زۆر پشت بە هەمان بەرهەم دەبەستن.

The lesson is not to blame one company. It is a rule for every team: test each change, release it in stages to a few computers first, watch what happens, and keep a way back. Microsoft's DevOps guide calls these safe deployment practices.

وانەکە تاوانبارکردنی یەک کۆمپانیا نییە. یاسایەکە بۆ هەموو تیمێک: هەر گۆڕانکارییەک تاقی بکەرەوە، قۆناغ بە قۆناغ بڵاوی بکەرەوە و سەرەتا بۆ چەند کۆمپیوتەرێکی کەم، چاودێری بکە چی ڕوودەدات و ڕێگەیەکی گەڕانەوەت هەبێت. ڕێبەری Microsoft بەمانە دەڵێت ڕێوشوێنی سەلامەت.

Two ways to release a change. Left, all at once: a box v2 sends the update to 28 computers, all marked with a cross: a hidden bug reaches every computer before anyone can stop it. Right, in stages: circles 1%, 10% and 100% joined by arrows; a cross under 10% says a problem shows up here, then stop and fix; only a few computers are hurt. Bottom: safe releases go out in steps, watched at every step, with a way back.دوو ڕێگا بۆ بڵاوکردنەوەی گۆڕانکارییەک. چەپ، هەموو پێکەوە: سندوقی v2 نوێکردنەوەکە دەنێرێت بۆ 28 کۆمپیوتەر و هەموویان خاچیان لەسەرە: باگێکی شاراوە پێش ئەوەی کەس بتوانێت ڕایبگرێت دەگاتە هەموو کۆمپیوتەرێک. ڕاست، قۆناغ بە قۆناغ: بازنەکانی 1%، 10% و 100% بە تیر پێکەوە بەستراون؛ خاچێک لە ژێر 10% دەڵێت کێشەیەک لێرە دەردەکەوێت، پاشان بوەستە و چاکی بکە؛ تەنیا چەند کۆمپیوتەرێک زیانیان پێ دەگات. خوارەوە: بڵاوکردنەوەی سەلامەت هەنگاو بە هەنگاو دەڕوات، لە هەر هەنگاوێکدا چاودێری دەکرێت و ڕێگەی گەڕانەوەی هەیە.
A staged release limits the damage of a hidden bug.بڵاوکردنەوەی قۆناغ بە قۆناغ زیانی شاراوە سنووردار دەکات.CêIT

What makes software good?چی نەرمەواڵە باش دەکات؟

“Good software” means more than “it runs”. The international standard ISO/IEC 25010 (second edition, November 2023) describes the quality of a software product with nine characteristics. Together they are called software quality.

« باش» واتای زیاتر لە «کار دەکات» دەدات. ستانداردی نێودەوڵەتیی ⁦ISO/IEC 25010⁩ (چاپی دووەم، تشرینی دووەمی ⁦2023⁩) جۆرایەتیی بەرهەمێکی بە نۆ تایبەتمەندی وەسف دەکات. هەموویان پێکەوە پێیان دەوترێت .

A wheel with nine segments around the words product quality: functional suitability, performance efficiency, compatibility, interaction capability, reliability, security, maintainability (highlighted in green), flexibility and safety. Bottom: maintainability matters a lot for software that lives for years.بازنەیەک بە نۆ بەش لە دەوری وشەکانی جۆرایەتیی بەرهەم: تەواوی و دروستیی کار، خێرایی و کەمخەرجی، گونجان، ئاسانیی کارپێکردن، پشتپێبەستراوی، ئاسایش، ئاسانیی چاککاری (بە سەوز دیار کراوە)، نەرمی و سەلامەتی. خوارەوە: ئاسانیی چاککاری بۆ نەرمەواڵەیەک کە چەند ساڵ دەژی زۆر گرنگە.
The nine product quality characteristics of ISO/IEC 25010:2023.نۆ تایبەتمەندیی جۆرایەتیی بەرهەم لە ⁦ISO/IEC 25010:2023⁩دا.CêIT

For a program that lives for years, one of them matters every single week: maintainability, how easily people can understand, fix, change and test it.

بۆ کە چەند ساڵ دەژی، یەکێکیان هەموو هەفتەیەک گرنگە: ، واتە خەڵک تا چەند بە ئاسانی لێی تێدەگەن، چاکی دەکەنەوە، دەیگۆڕن و تاقیی دەکەنەوە.

What makes software good?چی نەرمەواڵە باش دەکات؟

The nine, with Bazaar Cart examplesنۆ تایبەتمەندییەکە، بە نموونەی Bazaar Cart

The names are the standard's; the examples are CêIT's.ناوەکان هی ستانداردەکەن؛ نموونەکان هی CêITـن.
CharacteristicتایبەتمەندیIn plain wordsبە وشەی سادەIn Bazaar Cartلە Bazaar Cartـدا
Functional suitabilitydoes the right things, completely and correctlyکارە دروستەکان دەکات، بە تەواوی و بێ هەڵەprices follow R1–R5نرخەکان پەیڕەوی ⁦R1–R5⁩ دەکەن
Performance efficiencyfast enough; uses little memory, battery and dataبەس خێرایە؛ ، و ئینتەرنێتی کەم دەخواتopens quickly on a cheap phoneلەسەر مۆبایلێکی هەرزان خێرا دەکرێتەوە
Compatibilityworks next to other systems and shares data with themلە تەنیشت سیستەمی ترەوە کار دەکات و لەگەڵ هاوبەش دەکاتsends orders to Soran's accounts programداواکارییەکان دەنێرێت بۆ حسابەکانی سۆران
Interaction capabilityeasy to learn and use, for everyone (it was called usability)فێربوون و بەکارهێنانی ئاسانە بۆ هەمووان (پێشتر پێی دەوترا )Kurdish and Arabic text, large buttonsدەقی کوردی و عەرەبی، دوگمەی گەورە
Reliabilitykeeps working, and recovers after a failureبەردەوام کار دەکات و دوای شکستێک دەگەڕێتەوەno lost orders on a busy Thursdayهیچ داواکارییەک لە پێنجشەممەیەکی قەرەباڵغدا ون نابێت
Securityprotects data from people who should not see or change it لەو کەسانە دەپارێزێت کە نابێت بیبینن یان بیگۆڕنphone numbers stay privateژمارەی مۆبایلەکان نهێنی دەمێننەوە
Maintainabilityeasy to understand, change and testتێگەیشتن، گۆڕین و تاقیکردنەوەی ئاسانەa new discount takes a day, not a monthداشکانێکی نوێ ڕۆژێک دەخایەنێت، نەک مانگێک
Flexibilityadapts to new places and can grow (it was called portability)لەگەڵ شوێنی نوێ دەگونجێت و دەتوانێت گەورە بێت (پێشتر پێی دەوترا portability)runs on Android and iPhone; more shops laterلەسەر Android و iPhone کار دەکات؛ دواتر دووکانی زیاتر
Safetydoes not put people, property or the environment in dangerخەڵک، موڵک یان ژینگە ناخاتە مەترسییەوەsmall for a shop app; vital in a hospitalبۆ دووکان کەمە؛ لە نەخۆشخانەدا ژیانییە

What makes software good?چی نەرمەواڵە باش دەکات؟

Technical debt: the price of hurryingقەرزی تەکنیکی: نرخی پەلەکردن

Sometimes a team takes a shortcut: it copies code instead of organising it, or skips tests to finish sooner. In 1992 Ward Cunningham compared this to borrowing money, and the name stuck:

هەندێک جار تیمێک ڕێگەیەکی کورت دەگرێتەبەر: لەبری ڕێکخستنی کۆد کۆپیی دەکات، یان تاقیکردنەوە دەهێڵێت بۆ ئەوەی زووتر تەواو بکات. لە ⁦1992⁩دا Ward Cunningham ئەمەی بە قەرزکردنی پارە چواند و ناوەکە مایەوە:

Definitionپێناسە

The extra work a team will have to do later because it chose a quick, messy solution now. Like borrowed money it grows "interest": every new feature built on messy code takes longer.

ئەو کارە زیادەیەی تیمێک دواتر دەبێت بیکات چونکە ئێستا چارەسەرێکی خێرا و ناڕێکی هەڵبژارد. وەک قەرزی پارە «سوو» دەهێنێت: هەر تایبەتمەندییەکی نوێ کە لەسەر کۆدی ناڕێک دروست دەکرێت کاتی زیاتری دەوێت.

Martin Fowler gives numbers: a feature takes 4 days in clean code but 6 days in messy code, so 2 days are interest. Cleaning up costs 5 days. For one feature that does not pay (9 days instead of 6). For three similar features it does: 17 days instead of 18, and every later feature is faster too.

Martin Fowler ژمارە دەدات: تایبەتمەندییەک لە کۆدی ڕێکدا 4 ڕۆژ دەخایەنێت، بەڵام لە کۆدی ناڕێکدا 6 ڕۆژ، ئەو 2 ڕۆژە زیادەیە سووی قەرزەکەیە. ڕێکخستنەکە 5 ڕۆژی دەوێت. بۆ یەک تایبەتمەندی ناهێنێت (⁦9⁩ ڕۆژ لەبری ⁦6⁩). بۆ سێ تایبەتمەندیی وەک یەک دەهێنێت: ⁦17⁩ ڕۆژ لەبری ⁦18⁩ و هەموو تایبەتمەندییەکی دواتریش خێراتر دەبێت.

Two bars for three features. Keep the mess: 6 plus 6 plus 6 days, 18 days. Clean up first: 5 days of cleaning, then 4 plus 4 plus 4 days, 17 days. Legend: a feature in messy code 6 days; the same feature in clean code 4 days; cleaning up, paying back the debt, 5 days. The 2 extra days on every feature are the interest on the debt. Numbers from Martin Fowler's example (2019).دوو ستوون بۆ سێ تایبەتمەندی. ناڕێکییەکە بهێڵە: 6 و 6 و 6 ڕۆژ، 18 ڕۆژ. سەرەتا ڕێکی بخە: 5 ڕۆژ ڕێکخستن، پاشان 4 و 4 و 4 ڕۆژ، 17 ڕۆژ. ڕوونکردنەوە: تایبەتمەندییەک لە کۆدی ناڕێکدا 6 ڕۆژ؛ هەمان تایبەتمەندی لە کۆدی ڕێکدا 4 ڕۆژ؛ ڕێکخستن، واتە دانەوەی قەرزەکە، 5 ڕۆژ. ئەو 2 ڕۆژە زیادەیەی هەر تایبەتمەندییەک «سوو»ی قەرزەکەیە. ژمارەکان: نموونەکەی Martin Fowler (2019).
Paying back the debt early is cheaper when more changes are coming.دانەوەی زووی قەرز هەرزانترە کاتێک گۆڕانکاریی زیاتر لە ڕێدایە.CêIT
Everyday analogyنموونەیەک لە ژیانی ڕۆژانەوە

Buying sugar on credit from the corner shop is fine if you pay at the end of the month. If you never pay, the debt grows, and one day the shop stops giving you credit.

کڕینی شەکر بە قەرز لە دووکانی گەڕەک باشە ئەگەر لە کۆتایی مانگدا بیدەیتەوە. ئەگەر هەرگیز نەیدەیتەوە، قەرزەکە گەورە دەبێت و ڕۆژێک دووکانەکە ئیتر قەرزت پێ نادات.

Where the analogy stops workingسنووری ئەم نموونەیە

Technical debt charges interest only when you change the messy part. Messy code that nobody touches costs little; clean up the parts you change often.

تەنیا کاتێک سوو دەهێنێت کە بەشە ناڕێکەکە بگۆڕیت. کۆدی ناڕێک کە کەس دەستی لێ نادات تێچووی کەمە؛ ئەو بەشانە ڕێک بخە کە زۆر دەیانگۆڕیت.

Who is on a software team?کێ لە تیمێکی نەرمەواڵەدایە؟

Software is built by teams. Job titles differ between companies, but these roles appear almost everywhere:

تیم دروستی دەکەن. ناوی کارەکان لە کۆمپانیایەکەوە بۆ یەکێکی تر جیاوازن، بەڵام ئەم ئەرکانە نزیکەی لە هەموو شوێنێک هەن:

Five role cards with a person icon each. Product owner: decides what to build next; in Bazaar Cart, Aram. Developers: design, write and review the code; Shilan and Karwan. Tester: finds problems before users do; Dilan. Designer: plans the screens and the user's path; Dilan. Operations (DevOps): releases and watches the running app; the whole team. Bottom: one person may hold two roles; what matters is that every job is done by someone.پێنج کارتی ئەرک، هەریەکە بە وێنەی کەسێک. خاوەنی بەرهەم: بڕیار دەدات دواتر چی دروست بکرێت؛ لە Bazaar Cartـدا ئارام. بەرنامەسازەکان: کۆد دیزاین دەکەن، دەینووسن و پێیدا دەچنەوە؛ شیلان و کاروان. تاقیکەرەوەی نەرمەواڵە: کێشەکان پێش بەکارهێنەرەکان دەدۆزێتەوە؛ دیلان. دیزاینەر: شاشەکان و ڕێگای بەکارهێنەرەکە پلان دادەنێت؛ دیلان. کارپێکردن (DevOps): ئەپەکە بڵاو دەکاتەوە و چاودێری دەکات؛ هەموو تیمەکە. خوارەوە: دەکرێت کەسێک دوو ئەرکی هەبێت؛ گرنگ ئەوەیە هەموو کارێک کەسێک بیکات.
The roles of a small software team, and who holds them in Bazaar Cart.ئەرکەکانی تیمێکی بچووکی و کێ لە Bazaar Cartـدا هەڵیانگرتووە.CêIT

Small teams share roles: in Bazaar Cart, Dilan both tests and designs. Bigger teams add more, such as a Scrum Master (next lesson) or security specialists. IT jobs in general are in Roles you will see in job ads today, and their English names in Key words: IT jobs.

تیمە بچووکەکان ئەرکەکان بەش دەکەن: لە Bazaar Cartـدا دیلان هەم تاقی دەکاتەوە هەم دیزاین دەکات. تیمە گەورەکان زیاتر زیاد دەکەن، وەک (وانەی داهاتوو) یان پسپۆڕی . کارەکانی IT بە گشتی لە ئەو ئەرکانەی ئەمڕۆ لە ڕیکلامی کاردا دەیانبینیتدان و ناوە ئینگلیزییەکانیان لە وشە سەرەکییەکان: کارەکانی ITدا.

18 areas of knowledge⁦18⁩ بواری زانین

What must a software engineer know? SWEBOK, the Guide to the Software Engineering Body of Knowledge of the IEEE Computer Society, answers with 18 knowledge areas. Version 4 came out in 2024 (corrected as v4.0a in September 2025). It added software architecture, operations and security, and it brings agile methods and DevOps into almost every area.

ئەندازیارێکی دەبێت چی بزانێت؟ SWEBOK، کە ڕێبەری کۆمەڵە زانیاریی و کۆمەڵەی کۆمپیوتەری IEEE دەریدەکات، بە ⁦18⁩ بواری زانین وەڵام دەداتەوە. 4 لە ⁦2024⁩دا دەرچوو (لە ئەیلوولی ⁦2025⁩دا وەک ⁦v4.0a⁩ ڕاست کرایەوە). ، کارپێکردن و زیاد کرد و ڕێگاکانی و دەهێنێتە ناو نزیکەی هەموو بوارێکەوە.

Six boxes, three knowledge areas in each. Decide what to build: requirements, architecture, design. Build it and check it: construction, testing, security. Run it and change it: operations, maintenance, configuration management. Organise the work: engineering management, engineering process, models and methods. Quality, people, money: software quality, professional practice, engineering economics. Foundations: computing, mathematical and engineering foundations. Note: the grouping is CêIT's; the 18 names are SWEBOK's, 2024.شەش سندوق، لە هەریەکەیاندا سێ بواری زانین. بڕیار بدە چی دروست بکەیت: پێداویستییەکان، تەلارسازیی نەرمەواڵە، دیزاین. دروستی بکە و بیپشکنە: دروستکردن، تاقیکردنەوەی نەرمەواڵە، ئاسایش. کاری پێ بکە و بیگۆڕە: کارپێکردن، چاککاری، بەڕێوەبردنی وەشان و ڕێکخستن. کارەکە ڕێک بخە: بەڕێوەبردنی ئەندازیاری، پرۆسەی ئەندازیاری، مۆدێل و ڕێگاکان. جۆرایەتی، خەڵک، پارە: جۆرایەتیی نەرمەواڵە، کاری پیشەیی، ئابووریی ئەندازیاری. بنەماکان: بنەماکانی ژمێرکاری، بیرکاری و ئەندازیاری. تێبینی: ناوەکان لە SWEBOK v4 (2024)ن؛ دابەشکردنە شەشییەکە هی CêITـە.
SWEBOK v4's 18 knowledge areas, grouped into six families by CêIT.⁦18⁩ بواری زانینی ⁦SWEBOK v4⁩، کە CêIT کردوونی بە شەش خێزان.CêIT

This course takes them in the order many university courses use, such as Carnegie Mellon's Foundations of Software Engineering: process first, then requirements, version control, quality and architecture.

ئەم کۆرسە بەو ڕیزەیە دەیانخوێنێت کە زۆر کۆرسی زانکۆ بەکاری دەهێنن، وەک کۆرسی Foundations of Software Engineering لە زانکۆی Carnegie Mellon: سەرەتا پرۆسە، پاشان ، ، جۆرایەتی و .

Software engineering with AI assistants (2026)ئەندازیاریی نەرمەواڵە لەگەڵ یاریدەدەرەکانی ژیریی دەستکرد ⁦(2026)⁩

In 2026 most developers work with AI assistants: tools built on large language models that suggest code, tests and explanations. In the 2026 Stack Overflow Developer Survey, over 70% of the people who answered used AI every day, but only 48% said they trust its answers, and only when they can easily check them.

لە ⁦2026⁩دا زۆربەی لەگەڵ یاریدەدەرەکانی کار دەکەن: ئامرازگەلێک کە لەسەر مۆدێلە گەورەکانی زمان دروست کراون و کۆد، تاقیکردنەوە و ڕوونکردنەوە پێشنیار دەکەن. لە ڕاپرسیی گەشەپێدەرانی Stack Overflowـی ⁦2026⁩دا، زیاتر لە ⁦70%⁩ـی وەڵامدەرەوەکان هەموو ڕۆژێک بەکار دەهێنا، بەڵام تەنیا ⁦48%⁩ گوتیان متمانە بە وەڵامەکانی دەکەن، ئەویش تەنیا کاتێک بە ئاسانی بتوانن بیانپشکنن.

An assistant can be wrong. It may invent facts () or write code that runs but breaks a rule. GitHub's own advice for its Copilot assistant is: understand a suggestion before you use it, review it carefully, and check it with automated tests and security tools. The engineer, not the tool, is responsible.

یاریدەدەرێک دەکرێت هەڵە بێت. لەوانەیە زانیاری هەڵبەستێت () یان کۆدێک بنووسێت کە کار دەکات بەڵام یاسایەک دەشکێنێت. ئامۆژگاریی خودی GitHub بۆ یاریدەدەرەکەی، Copilot، ئەمەیە: پێش بەکارهێنانی پێشنیارێک لێی تێبگە، بە وردی پێیدا بچۆوە و بە و ئامرازەکانی بیپشکنە. ئەندازیارەکە بەرپرسیارە، نەک ئامرازەکە.

An AI assistant box (suggests code, tests, explanations) sends an arrow to a large box, The engineer checks, with five ticks: does it meet the real requirements? do I understand every line? do the tests pass, and new ones too? is it safe, with no secrets and no private data? may we use it: licences and rules? An arrow then leads to: only then, commit, with your name on it. Bottom: the tool can be wrong; the person who ships the code is responsible for it.سندوقی یاریدەدەری AI (کۆد، تاقیکردنەوە و ڕوونکردنەوە پێشنیار دەکات) تیرێک دەنێرێت بۆ سندوقێکی گەورە، ئەندازیارەکە دەپشکنێت، بە پێنج نیشانەی ڕاست: ئایا پێداویستییەکان ڕاستەقینەکان جێبەجێ دەکات؟ ئایا لە هەموو دێڕێکی تێدەگەم؟ ئایا تاقیکردنەوەکان، کۆن و نوێ، سەردەکەون؟ سەلامەتە، نهێنی و زانیاریی تایبەتی تێدا نییە؟ ڕێگەپێدراوە: مۆڵەتەکانی بەکارهێنان و یاساکان؟ پاشان تیرێک دەچێت بۆ: تەنیا ئەوکات کۆمیت بکە، بە ناوی خۆتەوە. خوارەوە: ئامرازەکە دەکرێت هەڵە بێت؛ ئەو کەسەی کۆدەکە بڵاو دەکاتەوە بەرپرسیارە لێی.
Suggestions go through the same checks as any other code.پێشنیارەکان بە هەمان پشکنینی هەر کۆدێکی تردا تێدەپەڕن.CêIT

Never paste customers' data, passwords or keys into an online tool, check whether you may use the code (AI and copyright), and in class follow your school's rules on using AI. How assistants and agents work is taught in Agents and loops and Limits and safety. A real 2026 case of apps built with AI coding agents, and the project rules that keep them trustworthy, is Case Study: ArtCraft.

هەرگیز کڕیاران، یان کلیلەکان لە ئامرازێکی ئۆنلاین مەلکێنە، بپشکنە ئایا ڕێگەت پێدراوە کۆدەکە بەکاربهێنیت (ژیریی دەستکرد و مافی لەبەرگرتنەوە) و لە پۆلدا پەیڕەوی یاساکانی قوتابخانە یان زانکۆکەت بکە لەبارەی (). یاریدەدەر و بریکارەکان چۆن کار دەکەن لە بریکار و خولەکان و سنوور و سەلامەتیدا دەخوێنرێت. نموونەیەکی ڕاستەقینەی ⁦2026⁩ لە کە بە دروستکراون، لەگەڵ ئەو یاسایانەی پڕۆژەکە کە جێی متمانەیان دەهێڵنەوە، لە نموونەیەکی ڕاستەقینە: ArtCraft دەبینیت.

Meet Bazaar Cart and the teamناسینی Bazaar Cart و تیمەکەی

Every lesson of this course builds one app: Bazaar Cart, an order app for Soran's dried-fruit and spice shop in the Sulaimani bazaar. Aram is the team lead and product owner, Shilan and Karwan are developers, and Dilan tests and designs. Two side examples appear too: Lana's school-timetable app for a high school in Duhok, and Hana and Rebin's taxi app, Hawler Ride.

هەموو وانەیەکی ئەم کۆرسە یەک دروست دەکات: Bazaar Cart، داواکاری بۆ دووکانی میوەی وشک و بەهاراتی سۆران لە بازاڕی سلێمانی. ئارام سەرۆکی تیم و ، شیلان و کاروان و دیلان تاقی دەکاتەوە و دیزاین دەکات. دوو نموونەی لاوەکیش دەردەکەون: خشتەی وانەکانی لانا بۆ ئامادەییەک لە دهۆک و تەکسیی هانا و ڕێبین، Hawler Ride.

Prices per kilogram (made up): walnuts 18,000, sumac 8,000, dried figs 12,000, black tea 14,000 and honey 30,000 IQD. The shop's five rules are its business logic: the reason the software exists.

نرخی کیلۆیەک (دەستکرد): گوێز ⁦18,000⁩، سماق ⁦8,000⁩، هەنجیری وشک ⁦12,000⁩، چای ڕەش ⁦14,000⁩ و هەنگوین ⁦30,000⁩ دینار. پێنج یاساکەی دووکانەکە (چینەکان و لۆجیکی کاروبار): ئەو هۆیەی لە پێناویدا هەیە.

Left, a phone screen titled Bazaar Cart with three lines: sumac 350 g 3,000; walnuts 500 g 9,000; dried figs 1 kg 12,000; goods 24,000, delivery 3,000, total 27,000 IQD, and a Place order button. Right, five rules. R1: line price is price per kg times grams divided by 1000, rounded up to the next 250. R2: each line 100 g to 10,000 g. R3: never sell more than the stock. R4: delivery in Sulaimani 3,000 IQD, free from 50,000. R5, from version 1.1.0: 5% off from 100,000 IQD. Prices are made up.چەپ، شاشەی مۆبایلێک بە ناونیشانی Bazaar Cart و سێ دێڕ: سماق 350 گرام 3,000؛ گوێز 500 گرام 9,000؛ هەنجیری وشک 1 کیلۆ 12,000؛ کاڵاکان 24,000، گەیاندن 3,000، کۆی گشتی 27,000 دینار و دوگمەی داواکردن. ڕاست، پێنج یاسا. R1: نرخی دێڕ = نرخی کیلۆ × گرام ÷ 1000، بەرەو سەرەوە بۆ 250ی دواتر. R2: هەر دێڕێک لە 100 گرام تا 10,000 گرام. R3: هەرگیز زیاتر لە کۆگا مەفرۆشە. R4: گەیاندن لە سلێمانی 3,000 دینار، لە 50,000ـەوە بێبەرانبەرە. R5، لە وەشانی 1.1.0ـەوە: 5% داشکان لە 100,000 دینارەوە. نرخەکان دەستکردن.
Bazaar Cart's order screen and the five rules R1–R5.شاشەی داواکاریی Bazaar Cart و پێنج یاساکەی ⁦R1–R5⁩.CêIT

Meet Bazaar Cart and the teamناسینی Bazaar Cart و تیمەکەی

The road through this courseڕێگای ئەم کۆرسە

  1. How teams work: life cycles and agile, then requirements and design.
  2. Git, branches and GitHub: every change saved and shared.
  3. Versions and builds, including what 1.0.0 means, and automated tests.
  4. Organising the code: layers and business logic, MVC, MVP and MVVM, dependency injection.
  5. The course project: ship Bazaar Cart 1.0.0.
  1. تیمەکان چۆن کار دەکەن: سووڕی ژیانی گەشەپێدان و ئەجایڵ، پاشان پێداویستییەکان و دیزاین.
  2. Git، لقەکان و GitHub: هەموو گۆڕانکارییەک پاشەکەوت و هاوبەش دەکرێت.
  3. وەشانەکان و بیلدەکان (لەوانە واتای ⁦1.0.0⁩) و تاقیکردنەوەی خۆکار.
  4. ڕێکخستنی کۆد: چینەکان و لۆجیکی کاروبار، MVC، MVP و MVVM، تێخستنی وابەستەیی.
  5. پڕۆژەی کۆرسەکە: بڵاوکردنەوەی ⁦Bazaar Cart 1.0.0⁩.
A winding road with five numbered stops. 1, How teams work: life cycle, agile, requirements. 2, Git and GitHub: every change saved. 3, Versions, builds and tests: what 1.0.0 means. 4, Organising the code: layers, MVC, MVP, MVVM, DI. 5, Ship 1.0.0: the course project. Bottom: every chapter adds one piece to Bazaar Cart, from version 0.1.0 to 1.0.0 and beyond.ڕێگایەکی پێچاوپێچ بە پێنج وێستگەی ژمارەدار. 1، تیمەکان چۆن کار دەکەن: سووڕی ژیان، ئەجایڵ، پێداویستییەکان. 2، Git و GitHub: پاشەکەوتی هەموو گۆڕانکارییەک. 3، وەشان، بیلد و تاقیکردنەوە: 1.0.0 واتای چییە. 4، ڕێکخستنی کۆد: چینەکان، شێوازەکان، DI. 5، بڵاوکردنەوەی 1.0.0: پڕۆژەی کۆرسەکە. خوارەوە: هەر بەشێک پارچەیەک بۆ Bazaar Cart زیاد دەکات، لە وەشانی 0.1.0ـەوە تا 1.0.0 و دواتر.
Five chapters, one app.پێنج بەش، یەک .CêIT

Bazaar Cart's versions tell a story: 0.1.0 prices one line, 0.2.0 adds the delivery fee, 0.3.0 keeps products in SQLite, 1.0.0 is the first release, 1.0.1 fixes a rounding bug, 1.1.0 adds the discount and 2.0.0 changes what placing an order returns.

Bazaar Cart چیرۆکێک دەگێڕنەوە: ⁦0.1.0⁩ نرخی یەک دێڕ حساب دەکات، ⁦0.2.0⁩ کرێی گەیاندن زیاد دەکات، ⁦0.3.0⁩ کاڵاکان لە هەڵدەگرێت، ⁦1.0.0⁩ یەکەم بڵاوکردنەوەیە، ⁦1.0.1⁩ خڕکردنەوە چاک دەکات، ⁦1.1.0⁩ داشکانەکە زیاد دەکات و ⁦2.0.0⁩ ئەوە دەگۆڕێت کە داواکردن چی دەگەڕێنێتەوە.

Common mistakesهەڵە باوەکان

Two circles of people with a line between every pair. Four people make 6 pairs; eight people make 28 pairs. Bottom: each pair of people is one more line of communication: twice the team, almost five times the lines.دوو بازنەی خەڵک کە هێڵێک لە نێوان هەر جووتێکیاندایە. چوار کەس 6 جووت دروست دەکەن؛ هەشت کەس 28 جووت. خوارەوە: هەر جووتێک لە خەڵک هێڵێکی تری پەیوەندییە: تیمەکە دوو هێندە، هێڵەکان نزیکەی پێنج هێندە.
Communication lines grow much faster than the team.هێڵەکانی پەیوەندی زۆر خێراتر لە تیمەکە زیاد دەکەن.CêIT

Common mistakesهەڵە باوەکان

“It works on my machine”«لەسەر کۆمپیوتەرەکەی من کار دەکات»

Karwan's program worked with numbers he typed into the code. In the shop, the grams come from a form, and a form always gives text:

کاروان بەو ژمارانە کاری دەکرد کە خۆی لە ناو کۆدەکەدا نووسیبوونی. لە دووکانەکەدا گرامەکان لە دێن و هەمیشە دەق دەدات:

Common mistake: text where a number is neededهەڵەی باو: دەق لە شوێنی ژمارەorder_form.pyPYTHONType in a terminalلە تێرمیناڵدا بینووسە
def line_price(price_per_kg, grams):
    return price_per_kg * grams / 1000

grams = input("Grams: ")       # text typed by a customer
print(line_price(8000, grams))
Explain the codeڕوونکردنەوەی کۆدەکە
Lineدێڕی 4

input() always returns a string, here "350".

input() هەمیشە دەگەڕێنێتەوە، لێرە "350".

Lineدێڕی 2

8000 * "350" repeats the text 8,000 times; dividing text by 1000 is impossible, so Python stops with a TypeError.

8000 * "350" دەقەکە ⁦8,000⁩ جار دووپاتە دەکاتەوە؛ دابەشکردنی دەق بەسەر ⁦1000⁩دا مەحاڵە، بۆیە بە TypeError دەوەستێت.

The fix is one word: turn the text into a number with int(). A real app would also check R2 (100 g to 10,000 g) and show a friendly message; automated tests check such cases every time the code changes.

چارەسەرەکە یەک وشەیە: بە int() دەقەکە بکە بە ژمارە. ڕاستەقینە ⁦R2⁩ـیش دەپشکنێت (⁦100⁩ گرام تا ⁦10,000⁩ گرام) و پەیامێکی ڕوون پیشان دەدات؛ تاقیکردنەوەی خۆکار هەموو جارێک کە کۆدەکە دەگۆڕێت ئەم حاڵەتانە دەپشکنێت.

The fixچارەسەرەکەorder_form.pyPYTHONType in a terminalلە تێرمیناڵدا بینووسە
def line_price(price_per_kg, grams):
    return price_per_kg * grams / 1000

grams = int(input("Grams: "))  # turn the text into a number
print(line_price(8000, grams))

Exercisesڕاهێنانەکان

ExerciseڕاهێنانProgramming or software engineering?بەرنامەسازی یان ئەندازیاریی نەرمەواڵە؟

Decide whether each job is mostly programming or needs software engineering, and say why: (a) a script that renames 30 photos once; (b) Hawler Ride, built by five people and used by 500 drivers for three years; (c) a homework program that prints a multiplication table; (d) Lana's timetable app, which the school will use every year.

بڕیار بدە هەر کارێک زیاتر یان پێویستی بە هەیە و بڵێ بۆچی: ⁦(a)⁩ کە یەک جار ناوی ⁦30⁩ وێنە دەگۆڕێت؛ ⁦(b)⁩ Hawler Ride، کە پێنج کەس دروستیان کردووە و ⁦500⁩ شۆفێر بۆ سێ ساڵ بەکاری دەهێنن؛ ⁦(c)⁩ ئەرکی ماڵەوە کە خشتەی لێکدان چاپ دەکات؛ ⁦(d)⁩ خشتەی وانەکانی لانا، کە قوتابخانەکە هەموو ساڵێک بەکاری دەهێنێت.

Show answerوەڵامەکە پیشان بدە
  • (a) Programming: one user, one night.
  • (b) Software engineering: many people, many users, years of changes.
  • (c) Programming: short life, one user.
  • (d) Software engineering: it lives for years, rules change every school year, and teachers depend on it.
  • ⁦(a)⁩ : یەک ، یەک شەو.
  • ⁦(b)⁩ : چەند کەسێک، زۆر، چەند ساڵ گۆڕانکاری.
  • ⁦(c)⁩ : تەمەنی کورت، یەک .
  • ⁦(d)⁩ : چەند ساڵ دەژی، یاساکان هەموو ساڵێکی خوێندن دەگۆڕێن و مامۆستاکان پشتی پێ دەبەستن.
ExerciseڕاهێنانName the quality characteristicتایبەتمەندیی جۆرایەتییەکە ناو ببە

For Hawler Ride, name the ISO/IEC 25010 characteristic for each complaint: (a) the app shows the wrong fare; (b) it takes 20 seconds to open; (c) passengers can see a driver's home address; (d) it cannot be installed on older Android phones.

بۆ Hawler Ride، تایبەتمەندیی ⁦ISO/IEC 25010⁩ بۆ هەر سکاڵایەک ناو ببە: ⁦(a)⁩ کرێی هەڵە پیشان دەدات؛ ⁦(b)⁩ کردنەوەی ⁦20⁩ چرکە دەخایەنێت؛ ⁦(c)⁩ سەرنشینان دەتوانن ناونیشانی ماڵی شۆفێرێک ببینن؛ ⁦(d)⁩ لەسەر مۆبایلی Androidـی کۆن دانامەزرێت.

Show answerوەڵامەکە پیشان بدە
  • (a) Functional suitability (functional correctness).
  • (b) Performance efficiency (time behaviour).
  • (c) Security (confidentiality).
  • (d) Flexibility (installability).
  • ⁦(a)⁩ تەواوی و دروستیی کار ⁦(functional suitability)⁩.
  • ⁦(b)⁩ خێرایی و کەمخەرجی ⁦(performance efficiency)⁩.
  • ⁦(c)⁩ (نهێنیپارێزی).
  • ⁦(d)⁩ نەرمی ⁦(flexibility)⁩، بەشی دامەزراندن.
ExerciseڕاهێنانSixteen bits, like Ariane 5شازدە بیت، وەک ⁦Ariane 5⁩

What does this program print? Which value would have crashed like the number on flight 501?

ئەم چی چاپ دەکات؟ کام بەها وەک ژمارەکەی گەشتی ⁦501⁩ دەبووە هۆی هەڵە؟

sixteen_bits.pyPYTHON
import struct

for value in (20_000, 32_767, 40_000):
    try:
        struct.pack(">h", value)   # "h" = a 16-bit signed integer
        print(value, "fits in 16 bits")
    except struct.error as e:
        print(value, "does not fit:", e)
Show answerوەڵامەکە پیشان بدە
Output (Python 3.13)دەرئەنجام ⁦(Python 3.13)⁩
20000 fits in 16 bits
32767 fits in 16 bits
40000 does not fit: 'h' format requires -32768 <= number <= 32767

A 16-bit signed integer holds only −32,768 to 32,767. 40,000 does not fit. Python stops with a clear error; on flight 501 the same kind of error was not handled, and both navigation units stopped.

⁦16⁩ بیت کە دەتوانێت سالب بێت تەنیا لە ⁦−32,768⁩ تا ⁦32,767⁩ هەڵدەگرێت. ⁦40,000⁩ جێی نابێتەوە. بە هەڵەیەکی ڕوون دەوەستێت؛ لە گەشتی ⁦501⁩دا هەمان جۆر هەڵە چارەسەر نەکرا و هەردوو یەکەی ڕێنیشاندان وەستان.

ExerciseڕاهێنانPay the debt or not?قەرزەکە بدەیتەوە یان نا؟

In Hawler Ride, the fare rules are copied in three files. Each fare change takes 3 days instead of 1. Cleaning up would take 4 days, and 5 fare changes are planned this year. Should Hana and Rebin clean up first?

لە Hawler Rideـدا یاساکانی کرێ لە سێ فایلدا کۆپی کراون. هەر گۆڕینێکی کرێ 3 ڕۆژ دەخایەنێت لەبری 1. ڕێکخستن 4 ڕۆژی دەوێت و ئەمساڵ 5 گۆڕینی کرێ پلانی بۆ دانراوە. ئایا هانا و ڕێبین سەرەتا ڕێکی بخەن؟

Show answerوەڵامەکە پیشان بدە

Yes. Keeping the mess: 5 × 3 = 15 days. Cleaning first: 4 + 5 × 1 = 9 days. Cleaning saves 6 days this year, and the code stays easier to change.

بەڵێ. هێشتنەوەی ناڕێکی: ⁦5 × 3 = 15⁩ ڕۆژ. سەرەتا ڕێکخستن: ⁦4 + 5 × 1 = 9⁩ ڕۆژ. ڕێکخستن ئەمساڵ 6 ڕۆژ دەگەڕێنێتەوە و گۆڕینی کۆدەکەش ئاسانتر دەمێنێتەوە.

ExerciseڕاهێنانCheck the assistantیاریدەدەرەکە بپشکنە

An AI assistant suggests a delivery_fee() function for Bazaar Cart. Write three checks you will do before you commit it.

یاریدەدەرێکی delivery_fee() بۆ Bazaar Cart پێشنیار دەکات. سێ پشکنین بنووسە کە پێش دەیکەیت.

Show answerوەڵامەکە پیشان بدە
  • Compare it with R4: 3,000 IQD, free when goods total 50,000 or more; test 49,750 and 50,000.
  • Read every line until you can explain it to Shilan.
  • Run all the existing tests, and make sure no secret or customer data was pasted into the tool.
  • بەراوردی بکە لەگەڵ ⁦R4: 3,000⁩ دینار، بێبەرانبەر کاتێک کاڵاکان ⁦50,000⁩ یان زیاتر بن؛ ⁦49,750⁩ و ⁦50,000⁩ تاقی بکەرەوە.
  • هەموو دێڕێک بخوێنەرەوە تا بتوانیت بۆ شیلانی ڕوون بکەیتەوە.
  • هەموو تاقیکردنەوە هەبووەکان کار پێ بکە و دڵنیا بە کە هیچ نهێنییەک یان کڕیار لە ئامرازەکەدا نەلکێنراوە.

Summaryکورتە

  • Software engineering is programming over time: it keeps software working while time, people and users grow.
  • The name was born at the 1968 NATO conference in Garmisch, during the software crisis; Margaret Hamilton's Apollo work made it popular.
  • Failures such as Ariane 5 flight 501 (1996) and the July 2024 update teach checking assumptions, testing and releasing in stages.
  • ISO/IEC 25010:2023 describes software quality with nine characteristics; maintainability keeps change cheap, and technical debt makes it expensive.
  • A team has a product owner, developers, testers, designers and operations; SWEBOK v4 lists 18 knowledge areas.
  • AI assistants suggest; the engineer checks, tests and stays responsible.
  • واتە بە درێژایی کات: بە کارکردوویی دەهێڵێتەوە لە کاتێکدا کات، خەڵک و زیاد دەبن.
  • ناوەکە لە کۆنفرانسی NATO لە Garmisch لە ⁦1968⁩دا لە دایک بوو، لە کاتی ؛ کاری Margaret Hamilton لە Apollo بەناوبانگی کرد.
  • شکستی وەک گەشتی ⁦501⁩ـی ⁦Ariane 5 (1996)⁩ و تەمموزی ⁦2024⁩ پشکنینی گریمانەکان، تاقیکردنەوە و بڵاوکردنەوەی قۆناغ بە قۆناغ فێر دەکەن.
  • ⁦ISO/IEC 25010:2023⁩ بە نۆ تایبەتمەندی وەسف دەکات؛ گۆڕانکاری هەرزان دەهێڵێتەوە و گرانی دەکات.
  • تیمێک ، ، ، دیزاینەر و کارپێکردنی هەیە؛ ⁦SWEBOK v4 18⁩ بواری زانین ڕیز دەکات.
  • یاریدەدەرەکانی پێشنیار دەکەن؛ ئەندازیار دەپشکنێت، تاقی دەکاتەوە و بەرپرسیار دەمێنێتەوە.

Next: The Development Life Cycle shows how a team orders its work, from waterfall to agile.

دواتر: سووڕی ژیانی گەشەپێدانی نەرمەواڵە پیشان دەدات تیمێک چۆن کارەکانی ڕیز دەکات، لە تا .

Lesson complete!وانەکە تەواو بوو!

Well done. Review the key terms, then go on to the next lesson.دەستخۆش. سەیرێکی زاراوە سەرەکییەکان بکەرەوە، پاشان بڕۆ بۆ وانەی داهاتوو.

Key termsزاراوە سەرەکییەکان

Next lessonوانەی داهاتوو

The Development Life Cycle: Waterfall, Iterative and Agileسووڕی ژیانی گەشەپێدانی نەرمەواڵە: مۆدێلی تاڤگە، خول‌بەخول و ئەجایڵ

References and further readingسەرچاوەکان و خوێندنەوەی زیاتر

This lecture is a first edition. The Kurdish text and terminology are waiting for review by Kurdish IT teachers.ئەم وانەیە چاپی یەکەمە. دەقە کوردییەکە و زاراوەکانی چاوەڕێی پێداچوونەوەی مامۆستایانی کوردی بواری IT ن.

Appearanceڕووکار

Modeدۆخ
Styleشێواز
Coloursڕەنگەکان

Saved on this device only.تەنیا لەسەر ئەم ئامێرە پاشەکەوت دەکرێت.