소프트웨어 엔지니어링 분야에 대해 설명해보세요.
소프트웨어 엔지니어링(software engineering)
소프트웨어 공학은 소프트웨어의 개발, 운용, 유지보수 등의 생명 주기 전반을 체계적이고 서술적이며 정량적으로 다루는 학문이다. 즉, 공학을 소프트웨어에 적용하는 것이다.
소프트웨어 공학이라는 용어가 처음 나타난 곳은 1968년 나토 소프트웨어 공학 학회로, 당시에는 소프트웨어 위기에 관해 사람들이 주의를 기울여 생각할 것을 장려하기 위해서였다. 최근의 흐름으로는 관점 지향(Aspect), 애자일(Agile), 모델 주도(Model-Driven) 등이 있다.
- 분야
(1) 소프트웨어 요구사항: 소프트웨어 요구 사항의 채집, 분석, 명세, 검증.
(2) 소프트웨어 설계: 보통 전산 지원 소프트웨어 공학(CASE) 도구로 이루어지고, UML과 같은 표준 형식을 사용.
(3) 소프트웨어 개발: 프로그래밍 언어로 소프트웨어를 구축.
(4) 소프트웨어 시험
(5) 소프트웨어 유지 보수: 소프트웨어 시스템은 때때로 처음 완료된 후 긴 시간이 지난 후에 문제를 일으켜 향상시켜야 할 필요가 있음.
(6) 소프트웨어 형상 관리: 소프트웨어 시스템은 매우 복잡하므로, 그 형상(버전과 소스 제어)이 표준화되고 구조적인 방법으로 관리 받아야 함.
(7) 소프트웨어 공학 관리: 프로젝트 관리에 매우 밀접하나, 다른 관리 분야와는 다른, 소프트웨어 고유의 미묘한 뉘앙스가 있음.
(8) 소프트웨어 개발 프로세스: 소프트웨어를 구축하는 과정에 관하여 실무 종사자들 사이에서는 열띤 논쟁이 오가고 있으며 주요한 패러다임은 애자일 과정과 폭포 과정이다.
(9) 소프트웨어 품질
현재 소프트웨어 엔지니어링 분야에서 가장 두드러진 흐름은 DevOps(개발+운영 통합)와 CI/CD(Continuous Integration/Continuous Deployment)의 보편화이다. DevOps는 개발팀과 운영팀 간의 협업을 강화하고, 코드 변경 사항을 자동화된 파이프라인을 통해 빠르게 배포함으로써 서비스의 품질과 출시 속도를 동시에 향상시킨다. Jenkins·GitHub Actions·GitLab CI 등의 도구가 국내외 IT 기업에서 표준적으로 활용되고 있으며, 쿠버네티스 기반 GitOps 방식도 빠르게 확산되고 있다.
커뮤니티 Q&A
위 이론과 관련된 게시글이에요.
이해가 안 되거나 궁금한 점이 있다면 커뮤니티에 질문해 보세요!
게시글 작성하기