일단 씻고 나가자
23.10.11 본문
2023. 10. 11 수요일
- 프로세스 모델의 종류와 설명?
1. 폭포수 (waterfall) 모델
: 요구사항, 설계, 구현, 배포 각각의 과정을 정확한 수치로 설계하여 다음 단계로 넘어가는 방법. 너무 이상적이기도 하며, 개발 과정 중 추가 요구사항이 발생했을 때 대처하는 방법이 야근밖에 없다. 일정이 빡빡할 수밖에 없음.
2. 프로토타입 (prototype) 모델
: 핵심 기능만 구현된 산출물을 고객에게 보여주고, 만족했을 때 본격적인 개발에 들어감.
프로토타입은 간단한 프로그램 외에 스크린 샷이 될 수도 있다. (드롭박스 예)
단, 세부적인 부분에 대해서는 프로토타입에서 보여줄 수 없으므로 한계가 있음.
3. 나선형 (spiral) 모델
: 작은 기능을 제작하고 점차 기능을 추가하면서, 요구사항, 설계, 구현, 배포 과정을 나선형처럼 지속적으로 반복하는 모델.
- 최근 소프트웨어 개발 방식? 개발 방법론의 종류와 개략적인 설명?
최근 소프트웨어 업계에서는 mobile first로 개발하고, 웹 + 모바일 형태로 제공하며 클라우드 컴퓨팅 기반 서버와 통신으로 서비스한다. 기능 개발 시 AB test를 통해 공식 버전에 넣거나 넣지 않거나를 결정한다.
대표적으로 개발 방법론에서는 Agile, 유지보수 + 운영 자동화에서는 DevOps를 사용한다.
Agile은 기간 내에 모든 기능을 완성하는 방식이 아닌, 기능과 개발 기간을 작은 단위로 쪼개어 개발 후 반영했을 때 고객의 반응을 보고 확장하거나 다음 기능 개발에 들어가는 방식의 방법론이며, 이러한 방법에선 유지보수의 방식이 달라져야 하기에 DevOps 방식을 채택한다.
기존 회사의 경우 부서별로 팀이 나누어져 있고, 따라서 하나의 요구사항을 개발하는 데에 오랜 시간이 걸리고 각 팀끼리도 소통이 안 되어 빠른 반영이 안 되는 문제가 있다.
Agile은 Project Owner(Manager)을 중심으로 개발, 디자이너, 데이터 분석가 등이 한 팀으로 이루어져 요구사항에 대해 가장 기본적인 프로토타입을 만들고, 고객의 반응을 본 후, 우선순위를 정하여 추가적인 요구사항을 개발하는 방식으로 이루어진다.
Agile은 프로세스이지만 일종의 문화와 같다. 기존 회사의 체계 (하나의 요구사항을 개발하더라도 여러 결재 서류와 기획서를 동반하던) 에서 벗어나고자 하는, 기존 체계와 문화의 틀을 깨기 위한 방법론이며 선언문도 존재한다. Agile은 변화에 신속하고 효과적으로, 협업을 통해, 고객의 반응을 보며 개발하는 방법론이다.
- [Effective Java] 마커 인터페이스란? 마커 어노테이션과 차이?
: 아무 내용도, 메서드도 갖지 않은 인터페이스. 단지 종류 및 정보를 포함하기 위한 인터페이스이다. 개발자에게 해당 객체(클래스)는 어떠한 기능을 사용할 수 있다를 명시하기 위함이며, 내부에선 object instanceof markerInterface 와 같이 검사하여 true일 때만 기능을 수행하도록 한다.
예를 들어 클래스를 2개 만드는데, 하나는 ‘후라이드 치킨’ 클래스이고 하나는 ‘양념 치킨’ 클래스이다. ‘후라이드 치킨’ 클래스에만 소금을 추가할 수 있다고 알리고 싶을 때, ‘소금able’ 마커 인터페이스를 생성하고 class ‘후라이드 치킨’ implements ‘소금able’으로 구현한 뒤,
실제 로직을 수행하는 ‘치킨집’ 클래스에선 public boolean 소금 추가(Object obj) { if(obj instanceof ‘소금able’) return true; ... } 방식으로 작성할 수 있게 된다.
마커 어노테이션은 커스텀 어노테이션에 @Target(ElementType.TYPE) 선언을 통해 메서드, 필드 등 디테일한 곳에서 선언할 수 있다는 장점이 있고, 마커 인터페이스는 다형성 측면에서 쉽고 넓게 제한을 걸 수 있다는 이점이 있다.
https://recordsoflife.tistory.com/809