- 소프트웨어 생명 주기 (Software Development Life Cycle, SDLC)
- 프로젝트 계획 : 어떤 프로젝트를 만들 것인지?
- 요구분석 : 해당 프로젝트에서 필요로 하는 기능, 기술, 지식 등이 어떻게 될 것 인지?
- 설계 : 분석한 사항을 바탕으로 아키텍쳐, 디자인, DB 등을 설계
- 구현 : 설계한 내용을 바탕으로 실제 구현
- 테스트 : 기능 단위 혹은 전체 프로젝트를 테스트
- 유지 보수 : 다른 기술의 도입, 효율성 측면, 기능 추가, 피드백 등의 유지보수
- 폭포수 모델 (Waterfall Model)
- 대규모에 사용되는 고전적인 SDLC 모델이다.
- SDLC의 프로세스를 선형적으로 처리한다.
- SW 프로세스는 선형적일 수 없다. 수정 사항이 생길 경우 이전 내역이 사라질 수 있다.
- 프로토 타입 모델 (Prototype Model)
- 인터페이스를 만들어둔다.
- 인터페이스에 명시된 기능을 견본/시제품으로 각 구현한다.
- 프로토타입(견본)을 제출하면서 변경되어야 할 요구사항을 빠르게 수정할 수 있다.
- Dev Class와 Release Class
- 나선형 모델 (Spiral Model)
- 폭포수 모델, 프로토 타입 모델의 이점에 위험 분석 기능을 추가한 방법이다.
- 계획 수립 : 프로젝트 계획 + 요구사항 분석
- 위험 분석 : 위험식별, 정량적/정성적 평가, 그에 따른 결과 + 설계
- 개발 및 검증 : 구현 + 테스트
- 고객 평가 : 유지보수
- 애자일 (Agile)
- 일정한 짧은 주기(Sprint or Iteration)만큼 반복해서 개발을 진행한다.
- 고객과의 소통을 중시해서 고객 요구사항에 유연하게 대응할 수 있다.
- XP, Scrum, Function Driven Design, Lean, Dynamic System Development Method 등이 있다.
- XP(eXtream Programming)
- 5가지의 가치와 12개의 실천 항목이 있고 의사소통을 개선하고 즉각적인 피드백을 하기위한 설계 방법론
- 즉, 고객 요구사항을 유연하게 대응하기 위해 24시간 상주할 수 있는 고객과 함께 신속한 개발을 한다.
- 5가지 핵심 가치
- 용기 (Courage)
- 단순성 (Simplicty)
- 의사소통 (Commnuication)
- 피드백 (Feedback)
- 존중 (Respect)
- 12가지 기본 원리
- Planning Process
- Pair Programming
- CI
- Refactoring
- On Suit Customer
- Coding standard
- TDD
- Simple Design
- Small Release
- Metaphore
- Collective Ownership
- 하향식 설계 (Top-down)
- 절차 지향의 순차적 설계법
- 최상위 컴포넌트 -> 하위 기능 부여 -> 테스트 초기부터 사용자에게 구조 제시 가능
- main 또는 객체에서 필요한 것들을 순서대로 코드로 작성하는 것
- 상향식 설계 (Bottom-up)
- 객체 지향의 설계
- 최하위 모듈 설계 -> 결합 및 검사 -> 인터페이스 구조 변경 시 상위 모듈도 같이 변경이 필요
- 사칙연산을 하는 프로그램은 숫자 2개의 입력을 필요로 한다. 제곱근을 구하는 모듈을 추가한다면 숫자 1개의 입력을 필요로 한다. 이로 인해 인터페이스의 구조가 변경되고 이를 사용하던 상위 모듈 또한 변경해줘야 한다.
# command 에 따라 사칙연산
def inputNum():
a = int(input());
b = int(input());
return a, b;
command = input();
a, b = inputNum();
print(cal(a, b, command));
# 위 코드에서 command 제곱근을 추가했을 경우
def inputNum(command):
a = int(input());
if (command == 'sqrt') return a;
b = int(input());
return a, b;
if command == 'sqrt':
num = inputNum(command);
print(cal(num, 0, command));
else:
a, b = inputNum(command);
print(cal(a, b, command));
이런식으로 막 쓸데 없는 코드도 추가 된다. 이런 부분을 개선하기 위해 나타난게 디자인 패턴이다.
'자격증 > 정보처리기사' 카테고리의 다른 글
[실기] 소프트웨어 구축 - 요구사항 분석 (0) | 2024.07.25 |
---|---|
[실기] 소프트웨어 구축 - 프로젝트 계획 (0) | 2024.07.25 |
정보처리기사 필기 합격 (0) | 2024.02.22 |
정보처리기사 필기 - 2021년 08월 14일 기출문제 (1) | 2024.02.12 |
정보처리기사 필기 - 2021년 05월 15일 기출문제 (0) | 2024.02.02 |