관리 메뉴

개발공부기록

1강 / CHAPTER 01 - 소프트웨어 개발 방법론 (일부만 작성) 본문

2024 정보처리기사 2차 합격/실기 1,2강 - 요구사항 확인, 화면설계

1강 / CHAPTER 01 - 소프트웨어 개발 방법론 (일부만 작성)

소소한나구리 2024. 7. 26. 11:23
728x90

2024년도 수제비 실기책(6판) 내용 정리


1. 소프트웨어 개발 방법론

1) 소프트웨어 생명주기 모델 (SDLS) 종류

종류 설명
폭포수 모델
(Waterfall Model)
소프트웨어 개발 시 각 단계를 확실히 마무리 지은 후 다음 단계로 넘어감

절차 : 타당성 검토 > 계획 > 요구사항 분석 > 설계 > 구현 > 테스트 > 유지보수
프로토타이핑 모델
(Prototyping Model)
고객 요구사항의 주요 기능을 프로토타입으로 구현 -> 고객피드백 반영하여 소프트웨어 만듦
나선형 모델
(Spiral Model)
위험을 최소화 하기위해 점진적으로 완벽한 시스템으로 개발해 나가는 모델

절차 : 계획 및 정의 > 위험 분석 > 개발 > 고객평가
반복적 모델
(Iteration Model)
구축 대상을 나누어 병렬적으로 개발 후 통합하거나 반복적으로 개발하여 완성
사용자의 요구사항 및 제품의 각 일부분을 반복적으로 개발하여 최종 시스템으로 완성\

다른 책에선 애자일 모델이라고 나와있음

2) 소프트웨어 개발 방법론 종류

(1) 구조적 방법론 (Structured Development) 

 

  • 전체 시스템을 기능에 따라 나누어 개발 하고 통합 (분할과 정복 접근 방식)
  • 프로세스 중심의 하향식 방법론
  • 나씨-슈나이더만 차트 사용 (차트의 세부는 중요하지 않는것 같아 패스)

(2) 정보공학 방법론 (Information Engineering Development)

 

  • 정보시스템 개발에 필요한 관리 절차와 작업 기법을 체계화한 방법론
  • 개발 주기를 이용해 대형 프로젝트를 수행

(3) 객체 지향 방법론 (Object - Oriented Development)

 

  • '객체'라는 기본 단위로 시스템을 분석 및 설계하는 방법론
  • 복잡한 현실 세계를 사람이 이해하는 방식으로 시스템에 적용 -> 객체, 클래스 ,메세지를 사용

(4) 컴포넌트 기반 방법론(CBD; Component Based Development)

 

  • 기존 소프트웨어를 구성하는 컴포넌트를 조립해서 하나의 새로운 응용프로그램을 작성하는 방법론
  • 개발기간 단축 -> 생산성 향상, 새로운 기능 추가 쉬움(확장성), 소프트웨어 재사용가능의 특징

(5) 애자일 방법론(Agile Development)

 

  • 절차보다는 사람중심, 변화에 유연하고 신속하게 적응하면서 효율적으로 시스템을 개발할 수 있는 신속 적응적 경량 개발 방법론
  • 개발 기간이 짧고 신속하며 폭포수 모형에 대비되는 방법론 -> 개발과 함께 즉시 피드백을 받아서 유동적으로 개발
  • 기존 개발 방법론의 한계를 극복하기 위해 등장함(전통적인 방법론은 문서, 및 절차 위주로 신속한 변화에 대응이 어려움)
  • XP, 스크럼, 린 등이 있음

(6) 제품 계열 방법론 (Product Line Development)

 

  • 특정 제품에 적용하고 싶은 공통된 기능을 정의하여 개발하는 방법론 -> 임베디드 소프트웨어를 작성하는데 유용함

3) 객체 지향 설계 원칙 (SOLID)

원칙 설명
단일 책임의 원칙 (SRP;
Single Responsibility Principle)
하나의 클래스는 하나의 목적을 위해 생성
클래스가 제공하는 서비스는 하나의 책임을 수행하는데 집중
나머지 4원칙의 기초 원칙
개방 폐쇄 원칙 (OCP;
Open Close Principle)
소프트웨어의 구성요소는 확장에는 열려있고 변경에는 닫혀있어야 한다는 원칙
리스코프 치환의 원칙(LSP;
Liskov Substitution Principle)
서브 타입(상속 받은 하위 클래스)은 어디서나 자신의 기반 타입(상위 클래스)로 교체할 수 있어야하는 원칙
인터페이스 분리의 원칙(ISP;
Interface Segregation Principle)
한 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다는 원칙
객체 설계 시 특정 기능에 대한 인터페이스는 그 기능과 상관없는 부분이 변해도 영향을 받지 않아야 함
의존관계 역전의 원칙(DIP;
Dependency Inversion Principle)
객체에서 어떤 클래스를 참조해서 사용하는 경우 클래스 직접 참조하지않고,
그 대상의 상위 요소인 인터페이스 혹은 추상클래스를 참조하라는 원칙

2. 프로젝트 관리

  • 하향식 산정방법으로는 델파이 기법, 전문가 판단이 있음

1) 비용산정 모형 종류(상향식 산정방법)

(1) LoC(Lines of Code) 모형

 

  • 소프트웨어 각 기느으이 원시 코드 라인 수의 낙관치, 중관치, 비관치를 측정하여 예측치를 구함 -> 이를 바탕으로 비용을 산정
  • 비관치 : 가장 많이 측정된 코드 라인수
  • 중간치 : 측정된 모든 코드 라인 수의 평균
  • 낙관치 : 가장 적게 측정된 코드 라인 수
  • 예측치 = (비관치 + 4*중간치 + 비관치) / 6

(2) Man Month 모형

 

  • 1사람이 1개월 동안 할 수 있는 일의 양을 기준으로 비용을 산정
  • Man Month = Loc / 프로그래머의 월간 생산성
  • 프로젝트 기간 = Man Month / 프로젝트 인력

(3) COCOMO 모형 (Constructive Cost Model)

 

  • 보헴이 제안 -> 프로그램의 규모에 따라 비용을 산정
  • 조직형(Organic Mode) : 5만 라인 이하의 소프트웨어를 개발하는 유형 -> 소규모의 소프트웨어로 일괄 자료 처리나 과학기술 계산용, 비즈니스 자료 처리 개발에 적용
  • 반 분리형(Semi-Detached Mode) : 30만 라인 이하의 소프트웨어를 개발하는 유형 -> 트랜잭션 처리 시스템이나 데이터베이스 관리 시스템, 컴파일러, 인터프리터와 같은 유틸 개발에 적용
  • 임베디드형(Embedded Mode) : 30만 라인 이상의 소프트웨어를 개발하는 유형 -> 초대형 규모의 트랜잭션 처리 시스템이나 운영체제, 실시간 처리 시스템등의 프로그램 개발에 적용

(4) 푸트남(Putnam)모형

 

  • 푸트남이 제안한 생명주기 예측 모형
  • 시간에 따른 함수로 표현되는 Rayleigh-Norden 곡선의 노력분포도를 기초로함

(5) 기능점수 모형(FP; Function Point)

 

  • 요구 기능을 증가시키는 인자별로 가중치를 부여하고 요인별 가중치를 합산하여 총 기능의 점수를 계산하여 비용을 산정하는 방식 , 경험을 바탕으로 정도에 따라 가중치를 부여하여 계산
  • 기능점수 = 총기능점수 X [0.65 + (0.1 X 총 영향도)]

2) 일정관리 모델 관련 용어

(1) 주 공정법(CPM; Critical Path Method)

 

  • 여러 작업의 수행 순서가 얽혀 있는 프로젝트의 일정을 계산하는 기법
  • 모든 자원 제약사항을 배제한 상태로 프로젝트의 시작과 끝을 나타내는 노드와 노드 간의 연결을 통해 공적을 계산하기 위한 액티비티 표기법
  • 주 공정 = 임계 경로 = 프로젝트의 시작에서 종료까지 가장 긴 시간이 걸리는 경로

(2) PERT(Program Evaluation and Review Technique)

 

  • 일의 순서를 계획적으로 정리하기 위한 수렴 기법
  • 비관치, 중간치, 낙관치의 3점 추정방식을 통해 일정을 관리

(3) 중요 연쇄 프로젝트 관리(CCPM; Critical Chain Project Management)

 

  • 자원제약사항을 고려하여 일정을 작성하는 기법
728x90