요구사항 확인 1
- 소프트웨어 생명 주기
- 소프트웨어를 개발하기 위한 설계, 운용, 유지보수 등의 과정을 각 단계 별로 나눈 것
- 나선형 모형
- 여러 번의 소프트웨어 개발 과정을 거쳐 점진적으로 완벽한 최종 소프트웨어를 개발하는 모형
- 4가지 주요 활동
계획 수립 -> 위험 분석 -> 개발 및 검증 -> 고객 평가
- 폭포수 모형
- 각 단계를 확실히 매듭짓고 그 결과를 철저하게 검토하여 승인 과정을 거친 후에 다음 단계를 진행하는 개발 방법론
- 고전적 생명 주기 모형
- 프로토타입 모형
- 실제 개발될 소프트웨어에 대한 견본품을 만들어 최종 결과물을 예측하는 모형
- 애자일 모형
- 고객의 요구사항 변화에 유연하게 대응할 수 있도록 일정한 주기를 반복하면서 개발하는 모형
- 대표적인 개발 모형
- 스크럼, XP, 칸반, Lean, 기능 중심 개발(FDD)
- 애자일 개발 4가지 핵심 가치
- 개인과 상호작용, 실행되는 SW, 고객과 협업, 변화에 반응하는 것
- 소프트웨어 공학
- 소프트웨어의 위기를 극복하게 위한 방안으로 연구된 학문
- 소프트웨어 공학의 기본 원칙
- 현대적 프로그래밍 기술 계속적 적용,
- 개발된 소프트웨어 품질 유지를 위한 지속적인 검증,
- 개발 관련 사항 및 결과에 대한명확한 기록 유지
- 스크럼
- 팀이 중심이 되어 개발의 효율성을 높이는 기법
- 스크럼 팀의 구성원 및 역할
- 재품 책임자(PO) - 요구사항이 담긴 제품 백로그를 작성함
- 스크럼 마스터(SM) - 스크럼 팀의 가이드 역할을 수행함
- 개발팀(DT) - 제품 책임자 및 스크럼 마스터를 제외한 팀원, 제품 개발을 수행함
- 스크럼 개발 프로세스
- 스프린트 계획 회의 -> 스프린트 -> 일일 스크럼 회의 -> 스프린트 검토 회의 -> 스프린트 회고
- XP
- 고객의 요구사항에 유연하게 대응하기 위해 고객의 참여와 개발 과정의 반복을 극대화하여 개발 생산성을 향상시키는 방법
- XP의 5가지 핵심 가치
- 의사소통 - 단순성 - 용기 - 존중 - 피드백
- XP의 주요 실천 방법
- 짝 프로그래밍 - 다른 사람과 함께 프로그래밍을 수행, 개발 책임을 공동으로 나눠 갖음
- 공동 코드 소유 - 개발 코드에 대한 권한과 책임을 공동으로 소유
- 테스트 주도 개발 - 실제 코드 작성전 테스트 케이스를 먼저 작성
- 전체 팀 - 개발에 참여하는 모든 구성원들이 각자 자신의 역할과 책임을 가짐
- 계속적인 통합 - 모듈 단위로 나눠서 개발된 코드들을 지속적으로 통합
- 리팩토링 - 프로그램 기능의 변경 없이 시스템을 재구성
- 소규모 릴리즈 - 릴리즈 기간을 짧게 반복함
- 데이터베이스 관리 시스템
- 사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해 주고, 데이터베이스를 관리해 주는 소프트웨어
- DBMS 관련 요구사항 식별 시 고려사항
- 가용성, 성능, 기술 지원, 상호 호환성, 구축 비용
- 웹 애플리케이션 서버
- 사용자의 요구에 따라 변하는 동적인 콘텐츠를 처리하기 위해 사용되는 미들웨어
- 웹 애플리케이션 서버 관련 요구사항 식별 시 고려사항
- 가용성, 성능, 기술 지원, 구축 비용
- 오픈 소스
- 제한 없이 사용할 수 있도록 소스 코드를 공개한 소프트웨어
- 오픈 소스 관련 요구사항 식별 시 고려사항
- 라이선스의 종류, 사용자 수, 기술의 지속 가능성
- 요구사항
- 소프트웨어가 어떤 문제를 해결하기 위해 제공하는
- 기능 요구사항
- 시스템이 무엇을 하는지, 어떤 기능을 하는지 등의 기능이나 수행과 관련된 요구사항
- 비기능 요구사항
- 품질이나 제약사항과 관련된 요구사항
- 품질 요구사항
- 가용성, 정합성, 상호 호환성, 대응성, 이식성, 확장성, 보안성 등
- 요구사항 개발 프로세스
- 개발 대상에 대한 요구사항을 체계적으로 도출하고 분석한 후 명세서에 정리한 다음 확인 및 검증하는 일련의 구조화된 활동
- 도출 -> 분석 -> 명세 -> 확인
- 요구사항 명세
- 분석된 요구사항을 바탕으로 모델을 작성하고 문서화하는 것
- 요구사항 명세 기법
- 정형 명세 기법
- 기법 - 수학적 원리 기반, 모델 기반
- 작성 방법 - 수학적 기호, 정형화된 표기법
- 특징 - 요구사항을 정확하고 간결하게 표현, 표기법이 어려워 사용자가 이해하기 어려움
- 종류 - VDM, Z, Petri-net, CSP 등
- 비정형 명세 기법
- 기법 - 상태/기능/객체 중심
- 작성 방법 - 일반 명사, 동사 등의 자연어를 기반으로 서술 또는 다이어그램 작성
- 특징 - 내용의 이해가 쉬워 의사소통이 용이함
- 종류 - FSM, Decision Table, ER모델링, State Chart(SADT) 등
- 자료 흐름도
- 요구사항 분석에서 자료의 흐름 및 변환 과정과 기능을 도형 중심으로 기술하는 방법
- 자료 흐름 그래프, 버블 차트
- 자료 흐름도의 구성 요소
- 프로세스 - 자료를 변환 시키는 시스템의 한 부분
- 자료 흐름 - 자료의 이동이나 연관 관계를 나타냄
- 자료 저장소 - 시스템에서의 자료 저장소를 나타냄
- 단말 - 시스템과 교신하는 외부 개체, 입력데이터가 만들어지고 출력데이터를 받음
- 자료 사전
- 자료 흐름도에 있는 자료를 더 자세히 정의하고 기록한 것
- = 자료의 정의, + 자료의 연결, () 자료의 생략, [] 자료의 선택, {} 자료의 반복, * * 자료의 설명
- 요구사항 분석용 CASE
- 요구사항을 자동으로 분석하고, 요구사항 분석 명세서를 기술하도록 개발된 도구
- 대표적인 요구사항 분석용 CASE
- SADT, SREM(=RSL/REVS), PSL/PSA, TAGS
- SADT
- 시스템 정의, 소프트웨어 요구사항 분석, 시스템/소프트웨어 설계를 위한 도구
- HIPO
- 시스템의 분석 및 설계, 또는 문서화에 사용되는 기법, 시스템 실행 과정인 입력 . 처리 . 출력의 기능을 표현한 것
- UML
- 시스템 개발 과정에서 의사소통이 원활하게 이루어지도록 표준화한 대표적인 객체지향 모델링 언어
- UML의 구성 요소
- 사물, 관계, 다이어그램
- 관계
- 사물과 사물 사이의 연관성을 표현하는 것
- 관계의 종류
- 연관 관계, 집합 관계, 포함 관계, 일반화 관계, 의존 관계, 실체화 관계
- 연관 관계
- 2개 이상의 사물이 서로 관련되어 있는 관계
- 실선 화살표
- 집합 관계
- 하나의 사물이 다른 사물에 포함되어 있는 관계
- 실선 속이 빈 마름모
- 포함 관계
- 포함하는 사물의 변화가 포함되는 사물에게 영향을 미치는 관계
- 실선 속이 채워진 마름모
- 일반화 관계
- 하나의 사물이 다른 사물에 비해 더 일반적이거나 구체적인 관계
- 실선 속이 빈 화살표, 하위 여러개에서 상위 한개 쪽으로
- 의존 관계
- 서로에게 영향을 주는 짧은 시간 동안만 연관을 유지하는 관계
- 점선 화살표
- 실체화 관계
- 사물이 할 수 있거나 해야하는 기능으로, 서로를 그룹화 할 수 있는 관계
- 점선 속이 빈 화살표, 하위 여러개에서 상위 한개 쪽으로
- 다이어그램
- 사물과 관계를 도형으로 표현한 것
- 정적 모델링 - 구조적 다이어그램
- 동적 모델링 - 행위 다이어그램
- 구조적 다이어그램의 종류
- 클래스 다이어그램 - 클래스와 클래스가 가지는 속성, 클래스 사이의 관계를 표현
- 객체 다이어그램 - 클래스에 속한 사물들, 즉 인스턴스를 특정 시점의 객체와 객체 사이의 관계로 표현
- 컴포넌트 다이어그램 - 실제 구현 모듈인 컴포넌트 간의 관계나 컴포넌트 간의 인터페이스를 표현
- 배치 다이어그램 - 결과물, 프로세스, 컴포넌트 등 물리적 요소들의 위치를 표현
- 복합체 구조 다이어그램 - 클래스나 컴포넌트가 복합 구조를 갖는 경우 그 내부 구조를 표현
- 패키지 다이어그램 - 유스케이스나 클래스 등의 모델 요소들을 그룹화한 패키지들의 관계를 표현
- 행위 다이어그램의 종류
- 유스케이스 다이어그램 - 사용자의 요구를 분석하는 것, 기능 모델링 작업에 사용
- 시퀀스 다이어그램 - 상호작용 시스템이나 객체들이 주고받는 메시지를 표현
- 커뮤니케이션 다이어그램 - 동작에 참여하는 객체들이 주고받는 메시지와 객체들 간의 연관 관계를 표현
- 상태 다이어그램 - 하나의 객체가 자신이 속한 클래스의 상태 변화 혹은 다른 객체와의 상호작용에 따라 상태가 어떻게 변화하는지를 표현
- 활동 다이어그램 - 시스템이 어떤 기능을 수행하는지 객체의 처리 로직이나 조건에 따른 처리의 흐름을 순서에 따라 표현
- 상호작용 개요 다이어그램 - 상호작용 다이어그램 간의 제어 흐름을 표현
- 타이밍 다이어그램 - 객체 상태 변화와 시간 제약을 명시적으로 표현
- 스테레오 타입
- UML에서 표현하는 기본 기능 외에 추가적인 기능을 표현하는 것
겹화살괄호 « »
요구사항 확인 2
- 유스케이스 다이어그램
- 사용자와 다른 외부 시스템들이 개발될 시스템을 이용해 수행할 수 있는 기능을 사용자의 관점에서 표현한 것
- 유스케이스 다이어그램의 구성요소
- 시스템 / 시스템 범위 - 시스템 내부의 유스케이스들을 사각형으로 묶어 시스템의 범위를 표현한 것
- 액터 - 시스템과 상호작용을 하는 모든 외부 요소
- 주액터 - 시스템을 사용함으로써 이득을 얻는 대상, 주로 사람
- 부액터 - 주액터의 목적 달성을 위해 시스템에 서비스를 제공하는 외부 시스템, 조직이나 기관 등
- 유스케이스 - 사용자가 보는 관점에서 시스템이 액터에게 제공하는 서비스나 기능을 표현한 것
- 관계 - 유스케이스에서 나타날 수 있는 관계 - 포함 관계, 확장 관계, 일반화 관계
- 유스케이스에서 나타날 수 있는 관계
- 포함 관계 - 두 개 이상의 유스케이스에 공통적으로 적용되는 기능을 별도로 분리하여 새로운 유스케이스로 만든 경우, 원래의 유스케이스와 새롭게 분리된 유스케이스와의 관계
- 점선 화살표, «include»
- 확장 관계 - 유스케이스가 특정 조건에 부합되어 유스케이스의 기능이 확장될 때 원래의 유스케이스와 확장된 유스케이스와의 관계
- 점선 화살표, «extends»
- 활동 다이어그램
- 사용자의 관점에서 시스템이 수행하는 기능을 처리 흐름에 따라 순서대로 표현한 것
- 활동 다이어그램의 구성 요소
- 액션 / 액티비티 - 액션 - 더이상 분해할 수 없는 단일 작업, 액티비티 - 몇 개의 액션으로 분리될 수 있는 작업
- 시작 노드 - 액션이나 액티비티가 시작됨을 표현한 것
- 종료 노드 - 액티비티 안의 모든 흐름이 종료됨을 표현한 것
- 조건 노드 - 조건에 따라 제어의 흐름이 분리됨을 표현한 것
- 병합 노드 - 여러 경로의 흐름이 하나로 합쳐짐을 표현한 것
- 포크 노드 - 액티비티의 흐름이 분리되어 수행됨을 표현한 것
- 조인 노드 - 분리되어 수행되던 액티비티의 흐름이 다시 합쳐짐을 표현한 것
- 스윔레인 - 액티비티 수행을 담당하는 주체를 구분하는 선
- 클래스 다이어그램
- 클래스와 클래스가 가지는 속성, 클래스 사이의 관계를 표현한 것
- 클래스 다이어그램의 구성 요소
- 클래스 - 각각의 객체들이 갖는 속성과 오퍼레이션을 표현한 것
- 속성 - 클래스의 상태나 정보를 표현
- 오퍼레이션 - 클래스가 수행할 수 있는 동작, 함수(메소드)라고도 함
- 제약조건 - 속성에 입력될 값에 대한 제약조건, 오퍼레이션 수행 전후에 지정해야할 조건 기술
- 관계 - 클래스와 클래스 사이의 연관성을 표현
- 연관 관계, 집합 관계, 포함 관계, 일반화 관계, 의존 관계
- 연관 클래스
- 연관 관계에 있는 두 클래스에 추가적으로 표현해야 할 속성이나 오퍼레이션이 있는 경우 생성하는 클래스
- 시퀀스 다이어그램
- 시스템이나 객체들이 메시지를 주고받으며 상호작용하는 과정을 그림으로 표현한 것
- 시퀀스 다이어그램의 구성 요소
- 액터 - 시스템으로 부터 서비스를 요청하는 외부 요소, 사람이나 외부 시스템을 의미
- 객체 - 메시지를 주고받는 주체
- 생명선 - 객체가 메모리에 존재하는 기간
- 실행 상자 - 객체가 메시지를 주고받으며 구동되고 있음을 표현
- 메시지 - 객체가 상호 작용을 위해 주고받는 메시지
- 객체 소멸 - 해당 객체가 더 이상 메모리에 존재하지 않음을 표현한 것
- 프레임 - 다이어그램의 전체 또는 일부를 묶어 표현한 것
- 커뮤니케이션 다이어그램
- 시스템이나 객체들이 메시지를 주고 받으며 상호작용하는 과정과 객체들 간의 연관을 그림으로 표현한 것
- 커뮤니케이션 다이어그램의 구성 요소
- 액터 - 시스템으로부터 서비스를 요청하는 외부 요소로, 사람이나 외부 시스템을 의미함
- 객체 - 메시지를 주고받는 주체
- 링크 - 객체들 간의 관계를 표현한 것
- 메시지 - 객체가 상호 작용을 위해 주고받는 내용
- 상태 다이어그램
- 객체들 사이에 발생하는 이벤트에 의한 객체들의 상태 변화를 그림으로 표현한 것
- 상태 - 객체의 상태를 표현한 것
- 시작 상태 - 상태의 시작을 표현한 것
- 종료 상태 - 상태의 종료를 표현한 것
- 상태 전환 - 상태 사이의 흐름, 변화를 화살표로 표현한 것
- 이벤트 - 상태에 변화를 주는 현상
- 프레임 - 상태 다이어그램의 범위를 표현한 것
- 패키지 다이어그램
- 유스케이스나 클래스 등의 요소들을 그룹화한 패키지 간의 의존 관계를 표현한 것
- 패키지 다이어그램 구성 요소
- 패키지 - 객체들을 그룹화한 것
- 단순 표기법 - 패키지 안에 패키지 이름만 표현
- 확장 표기법 - 패키지 안에 요소까지 표현
- 객체 - 유스케이스 클래스, 인터페이스, 테이블 등 패키지에 포함될 수 있는 다양한 요소들
- 의존 관계 - 점선 화살표
- «import» - 패키지에 포함된 객체들을 직접 가져와서 이용하는 관계
- «access» - 인터페이스를 통해 패키지 내의 객체에 접근하여 이용하는 관계
- 구조적 방법론
- 정형화된 분석 절차에 따라 사용자 요구사항을 파악하여 문서화하는 처리 중심의 방법론
- 구조적 방법론의 개발 절차
- 타당성 검토 단계 -> 계획 단계 -> 요구사항 단계 -> 설계 단계 -> 구현 단계 -> 시험 단계 -> 운용/유지보수 단계
- 객체지향 방법론
- 객체들을 조립해서 필요한 소프트웨어를 구현하는 방법론
- 객체지향 방법론의 개발 절차
- 요구 분석 단계 -> 설계 단계 -> 구현 단계 -> 테스트 및 검증 단계 -> 인도 단계
- 컴포넌트 기반 방법론
- 기존의 시스템이나 소프트웨어를 구성하는 컴포넌트를 조합하여 하나의 새로운 애플리케이션을 만드는 방법론
- 컴포넌트 기반 방법론의 개발 절차
- 개발 준비 단계 -> 분석 단계 -> 설계 단계 -> 구현 단계 -> 테스트 단계 -> 전개 단계 -> 인도 단계
- 소프트웨어 재사용
- 이미 개발되어 인정받은 소프트웨어를 다른 소프트웨어 개발이나 유지에 사용하는 것
- 소프트웨어 재사용 방법
- 합성 중심 - 전자 칩과 같은 소프트웨어 부품, 즉 블록을 만들어서 끼워 맞춰 소프트웨어를 완성시키는 방법, 블록 구성 방법
- 생성 중심 - 추상화 형태로 써진 명세를 구체화하여 프로그램을 만드는 방법, 패턴 구성 방법
- 소프트웨어 재공학
- 기존 시스템을 이용하여 보다 나은 시스템을 구축하고, 새로운 기능을 추가하여 소프트웨어 성능을 향상시키는 것
- CASE
- 소프트웨어 개발 과정에서 사용되는 요구 분석, 설계, 구현, 검사 및 디버깅 과정 전체 또는 일부를 컴퓨터와 전용 소프트웨어 도구를 사용하여 자동화 하는 것
- CASE의 주요 기능
- 소프트웨어 생명 주기 전 단계의 연결
- 다양한 소프트웨어 개발 모형 지원
- 그래픽 지원
- 하향식 비용 산정 기법
- 과거의 유사한 경험을 바탕으로 전문 지식이 많은 개발자들이 참여한 회의를 통해 비용을 산정하는 방법
- 하향식 비용 산정 기법
- 전문가 감정 기법 - 조직 내에 있는 경험이 많은 두 명 이상의 전문가에게 비용 산정을 의뢰하는 기법
- 델파이 기법 - 전문가 감정 기법의 주관적인 편견을 보완하기 위해 많은 전문가의 의견을 종합하여 산정하는 기법
- 상향식 비용 산정 기법
- 프로젝트의 세부적인 작업 단위 별로 비용을 산정한 후 집계하여 전체 비용을 산정하는 방법
- 주요 상향식 비용 산정 기법
- LOC(원시 코드 라인 수) 기법
- 개발 단계 인월수 기법
- 수학적 산정 기법
- LOC 기법
- 소프트웨어 각 기능의 원시 코드 라인 수의 비관치, 낙관치, 기대치를 측정하여 예측치를 구하고 이를 이용하여 비용을 산정하는 기법
- 산정 공식
- 노력(인월) = 개발 기간 X 투입 인원 = LOC / 1인당 월 평균 생산 코드 라인 수
- 개발 비용 = 노력(인월) X 단위 비용(1인당 월평균 인건비)
- 생산성 = LOC / 노력(인월)
- 수학적 산정 기법
- 경험적 추정 모형, 실험적 추정 모형
- 주요 수학적 산정 기법
- COCOMO 모형
- Putnam 모형
- 기능 점수(FP) 모형
- COCOMO 모형
- 원시 프로그램의 규모인 LOC(원시 코드 라인 수)에 의한 비용 산정 기법, 보헴이 제한
- COCOMO의 소프트웨어 개발 유형
- 조직형 - 중 . 소 규모 소프트웨어, 5만 라인 이하의 소프트웨어를 개발하는 유형
- 사무 처리용, 업무용, 과학용 응용 소프트웨어 개발에 적합
- 반분리형 - 조직형과 내장형의 중간형 소프트웨어, 30만 라인 이하의 소프트웨어를 개발하는 유형
- 컴파일러, 인터프리터와 같은 유틸리티 개발에 적합
- 내장형 - 초대형 규모 소프트웨어, 30만 라인 이하의 소프트웨어를 개발하는 유형
- 신호기 제어 시스템, 미사일 유도 시스템, 실시간 처리 시스템 등의 시스템 프로그램 개발에 적합
- Putnam 모형
- 소프트웨어 생명 주기의 전 과정 동안에 사용될 노력의 분포를 예상하는 모형
- Rayleigh-Norden 곡선의 노력 분포도를 기초로 함
- 기능 점수 모형
- 소프트웨어의 기능을 증대시키는 요인별로 가중치를 부여, 요인별 가중치를 합산하여 총 기능 점수 산출, 총 기능 점수와 영향도를 이용하여 기능 점수(FP)를 구한 후 이를 이용해서 비용을 산정하는 기법
- 소프트웨어 기능 증대 요인
- 자료 입력(입력 양식)
- 정보 출력(출력 보고서)
- 명령어(사용자 질의수)
- 데이터 파일
- 필요한 외부 루틴과의 인터페이스
- 비용 산정 자동화 추정 도구
- SLIM - Reyleigh-Norden 곡선과 Putnam 예측 모델을 기초로 하여 개발된 자동화 추정 도구
- ESTIMACS - 다양한 프로젝트와 개인별 요소를 수용하도록 FP 모형을 기초로 하여 개발된 자동화 추정 도구
- PERT
- 프로젝트에 필요한 전체 작업의 상호 관계를 표시하는 네트워크
- 각 작업별로 낙관적인 경우, 가능성이 있는 경우, 비관적인 경우를 나누어 종료 시기를 결정
- CPM
- 프로젝트 완성에 필요한 작업을 나열하고 작업에 필요한 소요 기간을 예측하는데 사용하는 기법
- 간트 차트
- 프로젝트의 작업 일정을 막대 도표를 이용하여 표시하는 프로젝트 일정표
- 시간선 차트
- ISO/IEC 12207
- ISO(국제표준화기구)에서 만든 표준 소프트웨어 생명 주기 프로세스
- ISO/IEC 12207 구분
- 기본 생명 주기 프로세스 - 획득, 공급, 개발, 운영, 유지보수 프로세스
- 지원 생명 주기 프로세스 - 품질 보증, 검증, 확인, 활동, 검토, 감사, 문서화, 형상관리, 문제 해결 프로세스
- 조직 생명 주기 프로세스 - 관리, 기반 구조, 훈련, 개선 프로세스
- CMMI
- 소프트웨어 개발 조직의 업무 능력 및 조직의 성숙도를 평가하는 모델
- CMMI의 소프트웨어 프로세스 성숙도
- 초기 - 작업자 능력에 따라 성공 여부 결정
- 관리 - 특정한 프로젝트 내의 프로세스 정의 및 수행
- 정의 - 조직의 표준 프로세스를 활용하여 업무 수행
- 정량적 관리 - 프로젝트를 정략적으로 관리 및 통제
- 최적화 - 프로세스 역량 향상을 위해 지속적인 프로세스 개선
- SPICE
- 정보 시스템 분야에서 소프트웨어의 품질 및 생산성 향상을 위해 소프트웨어 프로세스를 평가 및 개선하는 국제 표준
- ISO/IEC 15504
- SPICE의 프로세스 수행 능력 단계
- 0 불완전 - 프로세스가 구현되지 않았거나 목적을 달성하지 못한 단계
- 1 수행 - 프로세스가 수행되고 목적이 달성된 단계
- 2 관리 - 정의된 자원의 한도 내에서 그 프로세스가 작업 산출물을 인도하는 단계
- 3 확립 - 소프트웨어 공학 원칙에 기반하여 정의된 프로세스가 수행되는 단계
- 4 예측 - 프로세스가 목적 달성을 위해 통제되고, 양적인 측정을 통해서 일관되게 수행되는 단계
- 5 최적화 - 프로세스 수행을 최적화하고, 지속적인 개선을 통해 업무 목적을 만족시키는 단계
- 소프트웨어 개발 방법론 테일러링
- 프로젝트의 상황 및 특성에 맞도록 정의된 소프트웨어 개발 방법론의 절차, 사용기법 등을 수정 및 보완하는 작업
- 소프트웨어 개발 방법론 테일러링 고려사항
- 내부적 기준 - 목표 환경, 요구사항, 프로젝트 규모, 보유 기술
- 외부적 기준 - 법적 제약사항, 표준 품질 기준
- 소프트웨어 개발 프레임워크
- 소프트웨어 개발에 공통적으로 사용되는 구성 요소와 아키텍처를 일반화하여 손쉽게 구현할 수 있도록 여러가지 기능들을 제공해주는 반제품 형태의 소프트웨어 시스템
- 스프링 프레임워크
- 자바 플랫폼을 위한 오픈 소스 경량형 애플리케이션 프레임워크
- 소프트웨어 개발 프레임워크의 특성
- 모듈화 - 캡슐화를 통해 모듈화를 강화, 설계 및 구현에 따른 영향을 최소화 함으로 소프트웨어 품질 향상
- 재사용성 - 재사용 가능한 모듈들을 제공함으로 예산 절감, 생산성 향상, 품질 보증 가능
- 확장성 - 다형성을 통한 인터페이스 확장이 가능하여 다양한 형태와 기능을 가진 애플리케이션 개발 가능
- 제어의 역흐름 - 개발자가 관리하고 통제해야 하는 객체들의 제어를 프레임워크에 넘김으로써 생산성을 향상시킴
댓글남기기