소프트웨어 개발 방법론에 의한 이슈 트래커, 협업 도구, 생산성 도구 기초
목차
> 소프트웨어 개발 방법론
> 애자일(Agile), 스크럼(Scrum), 칸반(Kanban)
> 익스트림 프로그래밍(XP), 데브옵스(DevOps)
> 칸반과 데브옵스 결합
소프트웨어 개발 방법론
- 소프트웨어를 생산하는 데에 필요한 프로그래밍 개발 과정들을 표준화하여 프로그래머들이 프로그래밍 개발 과정에서 각 개인이 개발 과정에서 일관성을 유지하고 프로그래머들 간의 효과적인 협업이 이루어질 수 있도록 돕기 위한 방법론
- 소프트웨어를 어떻게 만들지에 대해 관심을 가지며 단계별 산출물 뿐만 아니라 산출물은 누가 어떤 순서로 어떻게 만들어야 하는지 그리고 어떤 도구를 사용해야 하는지 구체적으로 정의
- 소프트웨어 개발에 필요한 반복적인 과정(절차, 방법, 산출물, 기법, 도구)들을 체계적으로 정리
SW 개발 방법론의 주요 구성
SW 개발 방법론 상세 주요 항목
용어 설명
- R&R(Roles And Responsibilities) : 역할
- 요구사항정의서 : 고객의 요구사항을 정리한 내용(요구사항 명세서, 요구사항 기술서 등)
- QA(Quality Assurance) : 품질 보증 : 테스트를 통해 검증
- QC(Quality Control) : 품질 관리 : 불량품 찾기
- ERD(Entity Relationship Diagram) : 데이터베이스 내의 개체와 관계를 시각화
- DFD(Data Flow Diagram) : 데이터 흐름도(소프트웨어 내의 각 프로세스)
- CD(Continuous Delivery, Deployment) : 지속적 배포
- CI(Continuous Integration) : 지속적 통합 -> CI/CD : 지속적 통합 배포, DevOps 엔지니어링의 핵심업무
- CASE tool(Computer Aided Software Engineering tool) : 소프트웨어를 개발하는데 사용하는 자동화 도구
- UML(Unified Modeling Language) : 소프트웨어 공학에서 사용되는 표준 범용 모델링 언어
주요 소프트웨어 개발 방법론 유형
1. 구조적 방법론(~1970s) – Top-Down 방식
- 폭포수 모형이 대표적이며, 단계별 문서화와 검증을 강조합니다
- 요구사항 분석 - 설계 - 프로그래밍 - 검증 및 유지보수
- NASA의 아폴로 우주선 프로젝트, IBM의 OS/360 운영체제, 미국 국방부 소프트웨어 개발 프로젝트
2. 정보공학 방법론(~1980s) – 기업 전체, 주요부분을 계획, 분석, 설계, 구축
- 데이터 중심적 관점에서 설계를 강조하며, 데이터의 일관성과 효율성을 높입니다.
- 정보시스템에서 경영정보 시스템MID(Management Information System)으로 전환
- IBM의 BSP(Business Systems Planning), ERP(Enterprise Resource Planning)시스템 프로젝트
3. 객체지향 방법론(~1990s) – ‘객체’ 라는 기본 단위 시스템 분석
- 객체들의 상호작용과 협력에 중점을 둔 방법론으로,
- 코드 재사용성이 높고 시스템 확장에 유연합니다.
- CASE Tools을 사용한 UML사용 소프트웨어 개발과정의 일부 또는 전체를 자동화
- Smalltack 시스템, C++ 로 개발된 CAD 시스템, Java 기반의 EJB(Java Enterprise Edition) 프로젝트
4. 컴포넌트 기반 개발(CBD)(~1990s) – MSA 로 발전
- 시스템을 독립적인 컴포넌트로 분할하여 개발하는 방식으로,
- 재사용성과 유지보수성이 향상됩니다.
- 이전의 monolithic 방식에서 Component Based Development 전환
- Microsoft OS, Microsoft Office, EJB, SAP ERP, .NET Framework
5. 애자일 방법론(~2000s) – 절차보다 사람 중심
- 변화에 유연하게 대응하고 고객의 요구를 우선시하는 방법론으로,
- 빠른 피드백과 적응이 가능합니다.
- 기존과는 다르게 작은 주기(4 ~ 5주)로 프로토 타입을 만들어 지속적 피드백
- Netflix 추천 알고리즘, IBM DevOps Transformation, Facebook 기능 개발, Zara의 인벤토리 관리 시스템
6. 데브옵스(DevOps)(~2010s) - 개발문화의 변화
- 개발(Development)과 운영(Operations)의 통합을 강조하며,
- CI/CD 자동화를 통해 빠른 배포와 협업 강화를 실현합니다
- Netflix 플랫폼, AWS(Amazon Web Services), Google Kubernetes 프로젝트, Facebook 애플리케이션 배포 시스템,
- Microsoft Azure DevOps Services, GitHub Actions
칸반(Kanban)
- 비즈니스 프로세스를 시각화와 병목 현상을 해결하여 프로세스 효울성을 극대화하는 방법론으로 소프트웨어 개발 외에도 다양한 분야에서 활용
- 작업의 시각화
- 작업 항목을 칸반 보드에 표시
- 각 작업 상태(예 : To Do, Doing, Done)를 한눈에 확인
- WIP 제한(Work In Process Limit)
- 동시에 진행할 수 있는 작업 수를 제한(한 사람이 동시에 처리할 작업은 1~2개로 설정)
- 팀이 여러 작업을 동시에 진행하며 겪는 비효율성을 줄임 (칸반 보드 단계별로 작업량이 다르므로 단계별 WIP 제한을 다르게 설정한다.)
- 흐름 관리
- 작업이 칸반 보드에서 원활히 진행되도록 최적화
- 작업 주기 시간(Cycle Time)을 줄이고 낭비를 제거
- 지속적인 개선
- 팀 프로세스를 지속적으로 모니터링하고 개선
- 칸반 보드의 구성
- 열 : 작업의 상태를 나타냄 (예 : backlog, in process, review, done)
- 카드 : 특정 작업이나 기능을 나타내는 단위
- 수평선(Swimlane) : 작업을 분류하는 기준
- 칸반의 장점
- 작업 흐름을 쉽게 시각화
- 병목 현상을 빠르게 식별하고 해결
- 팀의 작업 속도 개선
- 유연성과 투명성 제공
- 칸반 보드 예시
애자일, 스크럼, 칸반, XP, DevOps 비교
각 방법론 선택 시 고려 사항
- 스크럼 : 정해진 팀 구조와 반복 주기를 따를 수 있는 환경에서 적합.
- 칸반 : 작업 흐름 최적화가 중요한 환경(예: 지속적 작업 흐름 유지)
- XP : 개발 품질이 매우 중요한 팀(특히 코드 중심 개발)
- DevOps : 빠른 배포 및 지속적 피드백 루프가 중요한 조직
- 애자일 : 철학적인 유연성이 필요한 모든 상황에서 시작점.
- 각 접근법을 상호보완적으로 사용할 수도 있음.
칸반 실습 해보기
'카카오x구름 풀스택 > 특강' 카테고리의 다른 글
[w/퍼실리테이터 이대희 강의] React 예제 살펴보기 (0) | 2024.12.02 |
---|---|
[w/퍼실리테이터 이대희 강의] TO-DO LIST 만들기, HTML/Javascript/CSS 관련 강의 -2 (0) | 2024.11.22 |
[w/퍼실리테이터 이대희 강의] TO-DO LIST 만들기, HTML/Javascript/CSS 관련 강의 -1 (1) | 2024.11.22 |