Програм хангамжийн инженерчлэлийн танилцуулга
Програм хангамжийн инженерчлэл нь програм хангамжийн системийг хөгжүүлэх, засвар үйлчилгээ хийдэг компьютерийн шинжлэх ухааны салбар юм. Энэ салбар нь компьютерийн шинжлэх ухаан, инженерчлэлээс эхлээд програм хангамжийн хэрэглээг зохион бүтээх, хөгжүүлэх, турших, удирдах зэрэг зарчмуудыг нэгтгэдэг. Програм хангамжийн инженерчлэлийн зорилго нь өндөр чанартай програм хангамжийг зардал багатай үйлдвэрлэх явдал юм.
Програм хангамж хөгжүүлэх амьдралын мөчлөгийг ойлгох нь (SDLC)
Програм хангамж хөгжүүлэх амьдралын мөчлөг (SDLC) нь програм хангамжийг хөгжүүлэх үйл явцад хамаарах үе шатуудыг тодорхойлсон хүрээ юм. Эдгээр үе шатуудад:
- Шаардлагын шинжилгээ: Програм хангамж юу хийх ёстойг ойлгож, баримтжуулах.
- Дизайн: Програм хангамжийн бүтэц, бүрэлдэхүүн хэсгүүдийг төлөвлөх.
- Хэрэгжилт: Загварын дагуу код бичих.
- Туршилт: Програм хангамж нь зориулалтын дагуу ажиллаж байгаа эсэхийг шалгах.
- Байршуулах: Програм хангамжийг ашиглах боломжтой болгох.
- Засвар үйлчилгээ: Асуудлыг засах, програм хангамжийг цаг хугацааны явцад шинэчлэх.
Програм хангамжийн инженерчлэлийн үндсэн зарчмууд
Програм хангамжийн инженерчлэл нь хэд хэдэн үндсэн зарчмуудыг баримталдаг бөгөөд үүнд:
- Модульчлал: Програм хангамжийг жижиг, удирдах боломжтой хэсгүүдэд хуваах.
- Хийсвэрлэл: Програм хангамжийн бүрэлдэхүүн хэсгүүдийг илүү өндөр түвшинд загварчлах замаар нарийн төвөгтэй бодит байдлыг хялбарчлах.
- Encapsulation: Тухайн өгөгдөл дээр ажилладаг аргуудтай өгөгдлийг багцлах.
- Өв залгамжлал: Кодын дахин хэрэглээг дэмжихийн тулд одоо байгаа ангиудаас шинэ анги гаргаж авах.
- Полиморфизм: Янз бүрийн ангиллын объектуудыг нийтлэг супер ангийн объект гэж үзэхийг зөвшөөрөх.
Програм хангамжийн дизайны загварууд
Програм хангамжийн дизайны загвар нь програм хангамжийн дизайны нийтлэг асуудлуудыг шийдвэрлэх ерөнхий, дахин ашиглах боломжтой шийдэл юм. Зарим алдартай дизайны загварууд нь:
- Singleton Pattern: Ангид зөвхөн нэг тохиолдол байгаа эсэхийг баталгаажуулж, түүнд хандах дэлхийн цэгийг өгдөг.
- Үйлдвэрийн аргын загвар: Объект үүсгэх интерфэйсийг тодорхойлдог боловч дэд ангиудад аль ангийг үүсгэхийг шийдэх боломжийг олгодог.
- Ажиглагчийн загвар: Объект хоорондын нэгээс олон хамаарал бөгөөд нэг объект төлөв өөрчлөгдөхөд түүний бүх хамаарал автоматаар мэдэгдэж, шинэчлэгддэг.
- Стратегийн загвар: Алгоритмуудын бүлгийг тодорхойлж, тус бүрийг багтааж, сольж болохуйц болгодог.
Agile програм хангамж хөгжүүлэх
Agile програм хангамжийн хөгжүүлэлт нь давталттай хөгжүүлэлт дээр суурилсан аргачлалын багц бөгөөд шаардлага, шийдлүүд нь өөрөө зохион байгуулалттай хөндлөн функциональ багуудын хамтын ажиллагааны үр дүнд өөрчлөгддөг. Agile програм хангамж хөгжүүлэх үндсэн үнэт зүйлс нь:
- Хувь хүн ба үйл явц, багаж хэрэгслийн харилцан үйлчлэл .
- Нарийвчилсан баримт бичиг дээр ажиллах програм хангамж .
- Гэрээний хэлэлцээр дээр хэрэглэгчийн хамтын ажиллагаа .
- Төлөвлөгөөний дагуу өөрчлөлтөд хариу үйлдэл үзүүлэх .
Програм хангамжийн инженерийн чанарын баталгаа
Чанарын баталгаа (QA) нь чанарын стандартыг хангаж байгаа эсэхийг баталгаажуулахын тулд төсөл, үйлчилгээ, байгууламжийн янз бүрийн талуудын системчилсэн хяналт, үнэлгээг хамардаг. Програм хангамжийн инженерчлэлийн хувьд QA нь програм хангамж боловсруулах үйл явцыг сайжруулах, програм хангамжийн бүтээгдэхүүний согогоос урьдчилан сэргийлэхэд чиглэдэг. QA практикт дараахь зүйлс орно.
- Кодын тойм: Компьютерийн эх кодын системчилсэн шалгалт нь програм хангамжийн ерөнхий чанар болон хөгжүүлэгчдийн ур чадварыг сайжруулах эхний хөгжлийн үе шатанд үл тоомсорлож байсан алдааг олж засварлах зорилготой.
- Тасралтгүй интеграци ба хүргэлт (CI/CD): Апп хөгжүүлэлтийн үе шатанд автоматжуулалтыг нэвтрүүлэх замаар хэрэглэгчдэд программыг байнга хүргэх арга. CI/CD-д хамаарах үндсэн ойлголтууд нь тасралтгүй нэгтгэх, тасралтгүй хүргэх, тасралтгүй байршуулах явдал юм.
- Автоматжуулсан туршилт: Програм хангамжийн хэрэгслүүдийг ашиглан хөгжүүлж буй программ хангамж нь хүлээгдэж буй байдлаар ажиллаж байгаа эсэхийг шалгах.
Програм хангамжийн хэмжүүр ба хэмжилт
Програм хангамжийн хэмжүүрүүд нь програм хангамжийн үйл явц, бүтээгдэхүүн, үйлчилгээний загварыг боловсруулах, баталгаажуулах тоон үндэслэлийг өгдөг хэмжүүрийн стандартууд юм. Програм хангамжийн нийтлэг хэмжүүрүүд нь:
- Кодын нарийн төвөгтэй байдал: Хөтөлбөрийн бүтцийг ойлгоход хэр хэцүү болохыг хэмждэг. Жишээ нь \(n\) хоёртын шийдвэр бүхий модулийн хувьд \(M = n + 1\) гэж тодорхойлж болох Цикломатик нийлмэл байдал багтана.
- Lines of Code (LOC): Програмын эх кодын текстийн мөрийг тоолох замаар програм хангамжийн хэмжээг хэмждэг.
- Функцийн цэгүүд (FP): Оролт, гаралт, асуулга, файл, интерфэйсийн файлуудын тоо, нарийн төвөгтэй байдалд үндэслэн хэрэглэгчдэд хүргэх функцийг хэмждэг.
Програм хангамжийн инженерчлэл нь програм хангамжийн үзэл баримтлал, дизайн, хөгжүүлэлт, туршилт, засвар үйлчилгээ зэргийг хамардаг цогц, олон талт салбар юм. Энэ талбар нь зөвхөн програмчлалын хэл, програм хангамж боловсруулах арга зүйн техникийн ур чадвар, мэдлэг шаарддаг төдийгүй програм хангамжийн дизайны загвар, чанарын баталгаа, багийн хамтын ажиллагаа, төслийн менежментийн талаархи ойлголтыг шаарддаг. Эдгээр ойлголт, практикийг үр дүнтэй ашиглах чадвар нь эцсийн эцэст програм хангамжийн төслүүдийн амжилтыг тодорхойлдог.