소프트웨어 공학
- 학문적 의미
- 높은 품질의 소프트웨어를 효율적으로 개발하는 방법을 탐구하는 학문/연구 분야
- 실천적 의미
- 소프트웨어를 제품화함에 있어서 적용할 수 있는 품질보증 및 개선 활동을 규현하는 프로세스
CMMI (Capability Maturity Model Integrated)
- 미국 국방부에 의하여 개발되어 지금까지 수천 개의 기업이 평가/인증받고 있음
- Level 존재
SPICE(Software Process Improvement and Capability Determination)
- ISO/IEC 15504에 의하여 규정되어 프로세스 개선과 조직 평가 모델로 활용
소프트웨어 개발 및 유지관리 프로세스
- 개발 방법론
- 소스코드를 포함한 형상관리
- 단계별 산출물 관리
- 요구사항 관리
- 테스트 및 검증
소프트웨어 개발 방법론
폭포수 모델
- 요구사항 분석 => 설계 => 구현 => 검증(테스트) => 유지보수
- 장점 : 수직적으로 진행되기에 각 과정에 대한 이해가 용이함
- 단점 : 수직적으로 진행되기 때문에 개발 도중에 요구사항이 변경되었을 경우, 추가적인 비용과 시간이 들게 됌
애자일 모델
- 개발 단계를 명확하게 구분하지 않고 각 단계를 반복적으로 수행하면서 진행
- 위의 과정을 통해 요구사항을 추가하거나 제외하면서 소프트웨어를 개발
- 잦은 요구사항의 변경 / 큰 프로젝트에서 요구사항 분석 및 설계를 완벽하기 어려운 경우 적합
코드 리뷰
- 소프트웨어의 품질을 향상, 보장하기 위한 중요한 활동
좋은 코드란
- 의도된 기능을 올바르게 수행한다고 해서 좋은 코드가 만들어진 것은 아님
- 코드는 기능적 역할도 중요하지만, 외관도 중요
- 코드의 형태적 명확성
- "나는 우아하고 효율적인 코드를 좋아한다"
- "논리가 간단해야 버그가 숨어들지 못한다"
- "깨끗한 코드는 한 가지를 제대로 한다"
- "깨끗한 코드는 단순하고 직접적이다"
- "깨끗한 코드는 잘 쓴 문장처럼 읽힌다"
- "깨끗한 코드는 결코 설계자의 의도를 숨기지 않는다"
- "깨끗한 코드는 언제나 누군가 주의 깊게 짰다는 느낌을 준다"
- "코드를 읽으면서 짐작했던 기능을 각 루틴이 그대로 수행한다면 깨끗한 코드라 부를 수 있다."
좋은 엔지니어란
- 대화가 되는 사람
- 함께 일하는 것이 즐거운 사람
- 끈기와 호기심을 가진 사람
- 컴퓨터 시스템에 대해 넓고 깊게 아는 사람
- 좋은 습관을 가지고 있는 사람
Jira Git 협업 관련 링크
헤이딜러 개발팀 모두가 행복한 개발/PR관리 방법 7가지
헤이딜러에서 팀으로 개발하면서 효율적으로 코딩하고 PR을 만들고 이 PR들을 관리하는 방식에 대해서 소개합니다.
medium.com
앱 배포후 Jira에서 버전 Release처리 자동으로 하는 방법(feat. GitHub Action)
- 앱개발하면서 Jira를 사용하고 계신다면 필수로 적용해야 할 GitHub Action을 소개 해드립니다. - 더이상 수동으로 Jira Version을 관리하지 마세요
medium.com
헤이딜러 안드로이드팀은 어떻게 일하나요?(1) — 팀문화
- 팀회고, 코딩 컨벤션, 라이브러리 배포, 기술블로그 등의 다양한 활동 - 잘하는애 옆에 잘하는애, 최고의 복지는 좋은 동료들
medium.com
'프로그래밍' 카테고리의 다른 글
[프로그래밍] 기술 스택 / 개념 / 툴 / 등등 정리 (0) | 2024.10.29 |
---|