През годините ми опит в разработката на софтуер имах възможността да работя с няколко брилянтни изследователи и инженери от други области. Често те в крайна сметка използват своя опит, за да напишат някакъв много умен код, който в крайна сметка се превръща в неподдържана бъркотия, тъй като изискванията се променят и проектът расте.

Въпреки техния технически опит и способност да пишат код, забелязах обща празнина в тяхното разбиране на основните концепции за софтуерно инженерство и модели на проектиране. Тази поредица от статии, „Разработка на софтуер 1XX“, има за цел да преодолее тази празнина и да служи като ръководство за тези, които имат основно разбиране за програмиране и се стремят да разширят своя набор от умения, за да включат разработка на софтуер. Ресурси и препоръки за книги ще бъдат оставени за тези, които желаят да се задълбочат.

Програмист срещу софтуерен инженер: Каква е разликата?

Софтуерното инженерство е процес на проектиране, разработване, тестване и поддръжка на софтуерни системи. Софтуерното инженерство има толкова общо с хората, колкото и с кода.

Ключовите основи на софтуерното инженерство, които ще разгледам в тази серия, включват:

  1. Тестване: Тестването на софтуера е жизненоважен аспект от писането на добър софтуер. Той включва техники като тестване на единици, тестване за интеграция, тестване за приемане и разработка, управлявана от тестове (TDD).
  2. Модели за проектиране: Шаблоните за проектиране са решения за многократна употреба на често срещани проблеми с дизайна на софтуера. Примери за модели на проектиране включват модел-изглед-контролер (MVC), единичен и фабричен метод.
  3. Пригодност за поддръжка и документация:Пригодността за поддръжка е способността на софтуера да бъде лесно модифициран и актуализиран с течение на времето, за да отговаря на променящите се изисквания. Документацията е важен аспект на поддръжката.
  4. Сътрудничество и контрол на версиите: Контролът на версиите е система, която записва промените във файл или набор от файлове с течение на времето, което позволява на разработчиците да си припомнят конкретни версии и да проследяват промените, направени от множество сътрудници.
  5. Софтуерна архитектура: Софтуерната архитектура се отнася до структурата и организацията на „голямата картина“ на софтуерна система. Той включва дизайнерски решения на високо ниво, които оказват влияние върху поддръжката, скалируемостта и производителността на софтуера.
  6. Пакетиране и внедряване: Пакетирането е процесът на създаване на дистрибуторски пакет от софтуер, който включва всички необходими компоненти, библиотеки и зависимости, необходими, за да работи софтуерът на желаната от вас платформа. Опаковката помага да се гарантира, че софтуерът е лесен за разпространение и лесен за поддръжка и актуализиране.
  7. Процесът на разработка на софтуер: Процесът на разработка на софтуер включва поредица от стъпки, които разработчиците на софтуер следват, за да създадат висококачествен софтуер. Този процес включва събиране на изисквания, проектиране, разработка, тестване, внедряване и поддръжка. Процесът на разработка на софтуер включва също практики като прегледи на код и заявки за изтегляне, за да се гарантира, че кодът е с високо качество и отговаря на стандартите, определени от екипа за разработка.

Имайте предвид, че този списък не съдържа точка, наречена „програмиране“. Ако следвате горните атрибути, естествено ще последва добър, чист код, който е лесен за работа или оптимизиране.

Следва в поредицата: