[Challenge / day-7] 소프트웨어 개발주기
오늘의 공부범위 : 강의 9-10강 내용(Part1. ch2. 5강 - 끝)
목차
1. 소프트웨어 개발주기
2. 사이드 프로젝트에서 적용할 것들
오늘도 필기하며 힘차게 시작..!!
소프트웨어 개발주기
왜 알아야 할까?
소프트웨어 개발 주기는 소프트웨어 개발에서 가장 근본적인 프로세스이자 프레임 워크입니다. 소프트웨어 개발 주기를 이해하면, 프로젝트의 각 단계를 체계적으로 관리하고, 소프트웨어 개발과 유지 보수의 업무를 보다 효율적으로 수행할 수 있습니다.
실무에서도 소프트웨어 개발 주기를 기반으로 프로젝트를 진행합니다. 이를 통해 팀원들은 프로젝트의 진행 상황을 파악하고, 업무를 효율적으로 수행할 수 있습니다.
또한, 사이드 프로젝트도 이 개발 주기를 기반으로 진행해야 체계적으로 진행하고, 더 좋은 품질의 제품을 개발할 수 있습니다. 개발 주기를 이해하면, 각 단계에서 무엇을 해야 하는지 명확히 알 수 있으며, 이는 제품의 품질 향상에 큰 영향을 미칩니다.
SDLC (Software Development Life Cycle)
1. 기획
- 요구사항을 수집하고 프로젝트를 기획하는 단계입니다. 여러 채널을 통해 데이터를 수집하는 과정은 매우 중요하며 기초적인 단계입니다. 사용자 설문, 마케팅 요구사항 등 다양한 채널을 활용하여 요구사항을 수집하는 방법이 있습니다.
- 이후 QA(Quality Assurance)를 위한 요구사항과 프로젝트가 가질 수 있는 리스크를 판단합니다. 미리 예측하여 대처할 수 있는 문제들을 파악하고 대처해나가는 것이 중요합니다.
2. 분석
- 제품의 요구사항을 정의하는 단계입니다.
- SRS (Software Requirement Specification)에 기록합니다. SRS란 디자인/구현해야 할 소프트웨어의 모든 요구사항을 기록해 둔 명세서입니다. IEEE에서 제공하는 SRS 템플릿을 활용할 수 있습니다. https://web.cs.dal.ca/~hawkey/3130/srs_template-ieee.doc
3. 디자인
- 시스템을 디자인하고 설계하는 단계입니다.
- 이 단계에서는 시스템의 구조와 인터페이스를 설계합니다. 안정적인 시스템을 만들기 위해서는 신중하게 설계해야 합니다.
4. 구현
- 디자인을 기반으로 개발자가 코드로 기능을 구현하는 단계입니다.
- 이 단계에서는 디자인한 시스템을 실제로 개발하며, 디자인 단계에서 정한 요구사항을 충족시키도록 코드를 작성합니다.
5. 테스팅 및 배포
- 구현 내용이 요구사항을 충족하는지 검증하는 단계입니다.
- 프로젝트/비지니스 성격에 따라 베타 오픈, 특정 시간에 오픈하거나, 프로젝트의 성격에 맞는 적절한 배포 방식을 선택합니다.
6. 유지 보수
- 제품을 마켓에 배포하고 서비스를 모니터링 하면서 유지보수 하는 단계입니다.
- 제품 출시 후에도 문제점이 발생할 수 있으므로 유지보수를 통해 제품의 안정성과 신뢰성을 유지합니다.
소프트웨어 개발 방법론
여러가지 방법론이 있지만 대표적인 두 가지 방법에 대해서 알아보도록 하자.
Agile을 적용한 방법 중에서도 여러가지 방법이 있으며 크게 두가지를 알아봤다.
Agile Development
- Agile 개발 방법론은 소프트웨어 개발 생명주기를 단계별로 진행하는 대신, 반복적으로 개발하며, 사용자의 요구사항을 반영해 나가는 방법을 사용합니다.
- Extreme Programming (XP)은 1~2주 단위로 개발-데모를 프로젝트가 끝날 때까지 반복합니다. 이 방법론은 설계, 구현, 프로토타이핑을 전체 개발 기간에 걸쳐 조금씩 자주 실시하도록 하는 개발 방법입니다.
- Scrum은 주기적인 데모 대신 Sprint 목표를 달성하는 것에 촛점을 둔 프로세스로, 2~4주 단위의 스프린트를 운영합니다. Grooming 미팅에서 Backlog에 쌓인 task들에 대해 팀원들끼리 논의를 해서, 해당 task의 size estimation과 우선 순위를 정합니다. Planning 미팅에서는 Product Backlog에서 Sprint 기간 동안 할 수 있는 일을 팀원들끼리 결정하고 할당합니다. Daily Scrum은 매일 팀원들 끼리 모여 전 날 어떤 일을 했는지, 오늘 어떤 일을 할 것인지, blocker가 있는지에 대해 간단하게 공유합니다. 회고 미팅에서는 스프린트가 끝난 후 팀원들 끼리 모여 스프린트에서 잘 된 것들, 개선되면 좋을 것들을 논의해서 다음 스프린트에 반영할 수 있도록, 협업을 더 잘 하기 위한 시간을 가집니다.
- 위 방법론들은 각각의 장점과 특징을 가지고 있기 때문에, 프로젝트의 성격에 맞게 선택하여 사용할 수 있습니다.
사이드 프로젝트에 적용할 것들..!!
여러가지 방법론을 배웠지만 무엇을 적용할지 선별해서 적합한 방법론을 적용하는 것이 성공적인 사이드 프로젝트 진행에 매우 중요할 것이다.
일단 이번 강의에서 소프트웨어 개발주기 한 사이클을 쭉 따라가면서 필요한 기술을 배우고, 과제(숙제 - homework 같은 느낌이다)를 수행하면서 사이드 프로젝트를 할 수 있는 힘을 기를 것이다.
지난번에 틀을 완성해놓은 노션 페이지에서 한 파트를 예로 들자면,
기획과정 중 아이디어를 정리하는 문서를 만들었는데 그 안을 이렇게 채워나가면서 기획 - 디자인 - 개발까지 전부해보고 배포 - 유지보수까지 배울 것이다.
배포나 유지보수까지 체계적으로 배울 기회는 많지 않아서 이번 기회에 집중해서 배우고 실제 사이드 프로젝트도 팀원들을 모아서 해보면서 실전경험까지 채우면 개발자로서 많은 성장을 할 수 있을 것 같아 기대된다..!!🙂🙂🙂
관련링크
패스트캠퍼스 : http://bit.ly/3Y34pE0
패스트캠퍼스 [직장인 실무교육]
프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.
fastcampus.co.kr
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
#패스트캠퍼스 #패캠챌린지 #수강료0원챌린지 #환급챌린지 #직장인인강 #직장인자기계발 #패캠인강후기 #패스트캠퍼스후기 #오공완 #사이드프로젝트10개기술스택으로구현하는풀스택서버리스프로젝트withReact