Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 자바의 정석 기초편 ch13
- 2024 정보처리기사 수제비 실기
- 스프링 mvc1 - 서블릿
- jpa 활용2 - api 개발 고급
- 게시글 목록 api
- 스프링 mvc2 - 로그인 처리
- 스프링 mvc1 - 스프링 mvc
- 자바의 정석 기초편 ch7
- 자바의 정석 기초편 ch1
- 자바의 정석 기초편 ch4
- 2024 정보처리기사 시나공 필기
- 자바 기본편 - 다형성
- 자바의 정석 기초편 ch8
- 스프링 mvc2 - 검증
- @Aspect
- 자바의 정석 기초편 ch14
- 스프링 db2 - 데이터 접근 기술
- 자바의 정석 기초편 ch6
- 스프링 고급 - 스프링 aop
- 자바의 정석 기초편 ch12
- 스프링 입문(무료)
- 자바의 정석 기초편 ch3
- 코드로 시작하는 자바 첫걸음
- 자바의 정석 기초편 ch2
- 자바의 정석 기초편 ch5
- 스프링 mvc2 - 타임리프
- 자바의 정석 기초편 ch9
- 자바의 정석 기초편 ch11
- 스프링 db1 - 스프링과 문제 해결
- jpa - 객체지향 쿼리 언어
Archives
- Today
- Total
나구리의 개발공부기록
1장 - 소프트웨어 개발 방법론 활용 | 섹션1. 소프트웨어 개발 방법론, 섹션2. S/W 공학의 발전적 추세 본문
2024정보처리기사 준비 정리(필기 - 시나공, 실기 - 수제비)/필기 5강 - 정보시스템 구축 관리
1장 - 소프트웨어 개발 방법론 활용 | 섹션1. 소프트웨어 개발 방법론, 섹션2. S/W 공학의 발전적 추세
소소한나구리 2024. 5. 7. 15:252024년도 시나공 필기 책 내용 정리
섹션1. 소프트웨어 개발 방법론
1. 소프트웨어 개발 방법론의 개요
- 소프트웨어 개발, 유지보수 등에 필요한 여러가지 일들의 수행 방법과 이러한 일들을 효율적으로 수행하려는 과정에서 필요한 각종 기법 및 도구를 체계적으로 정리하여 표준화 한 것
- 소프트웨어의 생산성과 품질의 향상을 목적으로 함
2. 구조적 방법론
- 정형화된 분석 절차에 따라 사용자 요구사항을 파악하여 문서화하는 처리 중심의 방법론
- 1960년대까지 가장 많이 적용되었던 소프트웨어 개발 방법론
- 쉬운 이해 및 검증이 가능한 프로그램 코드를 생성하는 것이 목적
- 복잡한 문제를 다루기 위해 분할과 정복(Divide and Conquer)원리를 적용함
구조적 방법론의 절차 (왼쪽부터 오른쪽으로 진행) | ||||||
타당성 검토 단계 | 계획 단계 | 요구사항 단계 | 설계 단계 | 구현 단계 | 시험 단계 | 운용/유지보수 단계 |
3. 정보공학 방법론
- 정보 시스템의 개발을 위해 계획, 분석, 설계, 구축에 정형화된 기법을들 상호 연관성 있게 통합 및 적용하는 자료(Data) 중심의 방법론
- 정보 시스템 개발 주기를 이용하여 대규모 정보 시스템을 구축하는데 적합
- 데이터베이스 설계를 위한 데이터 모델링으로 개체 관계도(ERD; Entity-Relationship Diagram)를 사용
정보공학 방법론의 절차 (왼쪽부터 오른쪽으로 진행) | |||
정보 전략 계획 수립 단계 | 업무 영역 분석 단계 | 업무 시스템 설계 단계 | 업무 시스템 구축 단계 |
4. 객체지향 방법론
- 현실 세계의 개체(Entity)를 기계의 부품처럼 하나의 객체로 만들어 소프트웨어를 개발할 때 기계의 부품을 조립하듯이 객체들을 조립해서 필요한 소프트웨어를 구현하는 방법론
- 구조적 기법의 문제점으로 인한 소프트웨어 위기의 해결책으로 채택되었음
- 설계 과정에서 주로 사용되는 모델링 언어에는 패키지 다이어그램(Package Diagram), 배치 다이어그램(Deployment Diagram), 상태 전이도(State Transition Diagram) 등이 있음
객체지향 방법론의 절차 (왼쪽부처 오른쪽으로 진행) | ||||
요구 분석 단계 | 설계 단계 | 구현 단계 | 테스트 및 검증 단계 | 인도 단계 |
5. 컴포넌트 기반(CBD; Component Based Design) 방법론
- 기존의 시스템이나 소프트웨어를 구성하는 컴포넌트를 조합하여 하나의 새로운 애플리케이션을 만드는 방법론
- 컴포넌트의 재사용이 가능하여 시간과 노력을 절감할 수 있음
- 새로운 기능을 추가하는 것이 간단하여 확장성이 보장됨
- 유지 보수 비용을 최소화하고 생산성 및 품질을 향상시킬 수 있음
컴포넌트 기반 방법론의 절차 (왼쪽부터 오른쪽으로 진행) | ||||||
개발 준비 단계 | 분석 단계 | 설계 단계 | 구현 단계 | 테스트 단계 | 전개 단계 | 인도 단계 |
6. 애자일(Agile) 방법론
- 민첩한, 기민한 이라는 의미로 고객의 요구사항 변화에 유연하게 대응할 수 있도록 일정한 주기를 반복하면서 개발 과정을 진행하는 방법론
- 소규모 프로젝트, 고도로 숙달된 개발자, 급변하는 요구사항에 적합
- 대표적인 종류에는 익스트림 프로그래밍(XP), 스크럼, 칸반, 크리스탈 등이 있음
애자일 방법론의 절차 (왼쪽부터 오른쪽으로 진행) | |||
사용자 스토리 | 반복 주기 | ||
계획 | 개발 | 승인 테스트 |
7. 제품 계열 방법론
- 특정 제품에 적용하고 싶은 공통된 기능을 정의하여 개발하는 방법
- 임베디드 소프트웨어를 만드는데 적합
- 영역공학 : 영역 분석, 영역 설계, 핵심 자산을 구현하는 영역
- 응용공학 : 제품 요구 분석, 제품 설계, 제품을 구현하는 영역
- 영역공학과 응용공학의 연계를 위해 제품의 요구사항, 이키텍처, 조립 생산이 필요
제품 계열 방법론의 절차
섹션2. S/W 공학의 발전적 추세
1. 소프트웨어 재사용의 개요
- 이미 개발되어 인정받은 소프트웨어의 전체 혹은 일부분을 다른 소프트웨어 개발이나 유지에 사용하는 것
- 소프트웨어 개발의 품질과 생산성을 높이기 위한 방법으로 기존에 개발된 소프트웨어와 경험, 지식 등을 새로운 소프트웨어에 적용
- 재사용의 이점
- 개발 시간과 비용을 단축
- 소프트웨어 품질을 향상
- 소프트웨어 개발의 생산성을 향상
- 프로젝트 실패의 위험을 감소
- 시스템 구축 방법에 대한 지식을 공유하게 됨
- 시스템 명세, 설계, 코드 등 문서를 공유하게 됨
2. 소프트웨어 재사용 방법
합성 중심 (Composition - Based) |
전자 칩과 같은 소프트웨어 부품, 즉 블록(모듈)을 만들어서 끼워 맞추어 소프트웨어를 완성시키는 방법으로 블록 구성 방법이라고도 함 |
생성 중심 (Generation - Based) |
추상화 형태로 쓰여진 명세를 구체화하여 프로그램을 만드는 방법으로 패턴 구성 방법이라고도 함 |
3. 소프트웨어 재공학의 개요
- 새로운 요구에 맞도록 기존 시스템을 이용하여 보다 나은 시스템을 구축하고 새로운 기능을 추가하여 소프트웨어 성능을 향상시키는 것
- 유지보수 비용이 소프트웨어 개발 비용의 대부분을 차지하는 문제를 염두에 두어 기존 소프트웨어의 데이터와 기능들의 개조 및 개선을 통해 유지보수성과 품질을 향상 시키려는 기술
- 기존 소프트웨어의 기능을 개조하거나 개선하므로 예방(Preventive) 유지보수 측면에서 소프트웨어 위기를 해결하는 방법임
- 소프트웨어의 수명이 연장되고 소프트웨어 기술이 향상될 뿐 아니라 소프트웨어 개발 기간도 단축됨
- 소프트웨어에서 발생할 수 있는 오류가 줄어들고 비용이 절감됨
분석 (Analysis) | 기존 소프트웨어의 명세서를 확인하여 소프트웨어의 동작을 이해하고 재공학할 대상을 선정하는 활동 |
재구성 (Restructuring) |
기존 소프트웨어의 구조를 향상시키기 위하여 코드를 재구성하는 활동 소프트웨어의 기능과 외적인 동작은 바뀌지 않음 |
역공학 (Reverse Engineering) |
기존 소프트웨어를 분석하여 소프트웨어 개발 과정과 데이터 처리 과정을 설명하는 분석 및 설계 정보를 재발견하거나 다시 만들어 내는 활동 일반적인 개발 단계와는 반대방향으로 기존 코드를 복구하거나 기존 소프트웨어의 구성 요소와 그 관계를 파악하여 설계도를 추출 |
이식 (Migration) | 기존 소프트웨어를 다른 운영체제나 하드웨어 환경에서 사용할 수 있도록 변환하는 활동 |
4. CASE의 개요
- CASE(Computer Aided Software Engineering)는 소프트웨어 개발 과정에서 사용되는 요구 분석, 설계, 구현, 검사 및 디버깅 과정 전체 또는 일부를 컴퓨터와 전용 소프트웨어 도구를 사용하여 자동화 하는것
- 객체지향 시스템, 구조적 시스템 등 다양한 시스템에서 활동되는 자동화 도구
- 요구 분석, 설계 과정을 지원하는 상위 CASE 도구와 구현, 테스트 과정을 지원하는 하위 CASE도구로 구분됨
- CASE 사용의 이점
- 소프트웨어 개발 기간을 단축하고 개발 비용을 절감할 수 있음
- 자동화된 기법을 통해 소프트웨어 품질이 향상됨
- 소프트웨어의 유지보수를 간편하게 수행할 수 있음
- 소프트웨어의 생산성이 향상되고 생산, 운용 활동을 효과적으로 관리 및 통제할 수 있음
- 품질과 일관성을 효과적으로 제어할 수 있음
- 소프트웨어 개발의 모든 단계에 걸친 표준을 확립할 수 있음
- 소프트웨어 모듈의 재사용성이 향상됨
- 소프트웨어의 개발 기법을 실용화할 수 있고 문서화를 쉽게 작성할 수 있음
- CASE의 주요 기능 : 소프트웨어 생명 주기 전 단계의 연결, 다양한 소프트웨어 개발 모형 지원, 그래픽 지원, 모델들의 모순 검사 및 오류 검증, 자료흐름도 작성 등
- CASE의 원천 기술: 구조적 기법, 프로토 타이핑, 자동 프로그래밍, 정보 저장소, 분산처리