블로그 이전했습니다. https://jeongzero.oopy.io/
Section1. 알고리즘과 소프트웨어 개발
본문 바로가기
정보처리기사/실기

Section1. 알고리즘과 소프트웨어 개발

728x90

1. 소프트웨어 생명주기 : 

소프트웨어가 필요에 의하여 만들어진 후 운영되기까지의 전체 과정

(과정) 

개발 타당성 검토 -> 개발 계획 수립 -> 요구사항 분석 -> 소프트웨어 설계 -> 소프트웨어 구현 -> 테스트 -> 운용 -> 유지보수

 

 

2. 소프트웨어 관리

- 요구관리 : 고객의 요구를 정확하게 추출하고 이를 문서화하는 과정

- 형상관리 : 산출물을 시간의 흐름에 따라 시스템 형상을 만들어 가는 것

- 유지관리 : 변경사항이 발생할 경우 잘 수정

- 품질관리 : 개발 목적에 부합하며 요구를 만족하는 지 검증

 

 

3. 소프트웨어 품질 관리

- 기능성 : 고객이 요구하는 기능을 소프트웨어가 충분히 제공하고 있는가?

- 사용성 : 사용하기 어렵지는 않는가?

- 신뢰성 : 오류가 발생하지는 않는가?

- 유지보수성 : 일부가 변경되도 지속적인 운영이 가능한가?

- 이식성 : 기존 시스템 -> 다른 시스템 변경 가능?

- 효율성 : 소비하는 자원이 효율적인가?

 

 

4. 알고리즘 효율성 (공간, 시간 효율성)

- 시간 효율성 : 실행하여 종료되기까지 걸리는 시간의 효율성. 빅오 표기법 사용

 

 

5. 소프트웨어 아키텍처 :

개발하려는 소프트웨어의 전체적인 골격에 대한 논리적 구조.

 

 

(대표적인 아키텍처)

- MVC : 전체 어플리케이션을 MVC로 구분하여 사용자 인터페이스와 비즈니스 로직을 분리. -> 상호 독립적으로 구성요소 변경이 가능하기때문에 유지보수의 효율성 증대.

 

- C/S : 서비스를 요구하는 클라이언트, 서비스를 제공하는 서버로 구성되는 아키텍처 -> 네트워크 기반 분산 소프트웨어 아키텍처에 주로 적용됨. 예시) 클라이언트 : 사파리 크롬 등 / 서버 : 아파치 등.

 

- 다층 구조 : 클라이언트/서버의 단점을 해결하기 위해 클라이언트, 서버 사이에 비즈니스 로직을 담당하는 중간계층을 두는 구조 -> 중간계층은 스케줄링이 가능해지므로 다중 클라이언트로 인한 폭주시 서버의 부담을 줄여줄수 있다.

 

- 저장소 구조 : 특정한 서브 시스템에 공유 저장소를 두고 나머지 서브 시스템이 이곳을 통해 데이터를 공유하는 구조 

---------> 수동형 데이터 집중화 구조 vs 능동형 데이터 집중화 구조(블랙보드)

 

 

6. 객체지향설계의 개념

- 객체 :

- 속성 :

- 클래스 :

- 분류화 : 비슷한 객체들을 묶어내는 작업

- 캡슐화 : 객체의 상세한 내부 내용을 외부에 숨기고 필요사항만 보여주는 기능.

- 추상화 : 객체의 필요 속성이나 연산만을 추출해내고 복잡한 내부는 감추는 작업.

- 일반화 : 같은 속성을 가지고 유사한 클래스들을 분류하여 새로운 클래스를 정의하는 작업

- 상속 : 상위클래스의 속성과 연산을 하위클래스들이 다시 사용하는 것.

- 다형성 : 동일한 클래스 이름의 연산을 다른 목적으로 사용할 수 있게 해주는 것.

- 동적 바인딩 : 실행시간에 하위클래스의 객체 타입에 따라서 하위 클래스의 적합한 동작이 자동으로 정해지는 것.

- 소프트웨어 디자인 패턴 : 

- 리팩토링 : 수행 결과를 유지하면서도 내부 코드의 구조를 재조정하는 행위.

 

7. SOLID - 객체지향설계의 5대 원칙(로버트 마틴)

- S : 단일 책임 원칙 -> 하나의 클래스는 하나의 책임을 갖는다.

- O : 개방 폐쇄 원칙 -> 소프트웨어 각 요소는 확장에 열려있고 변경에는 닫혀있어야만 한다.

- L : 리스코프 교환 원칙 -> 상속은 다형성을 통하여 확장성을 극대화하려는 목적으로 사용해야 한다.

- I : 인터페이스 분리 원칙 -> 필요한 메서드만 인터페이스로 제공하고 사용하지 않는 메서드와는 제공x

- D : 의존관계 역전 원칙 -> 구체적인 클래스에 의존하지 말고 추상화된것에 의존하여 설계한다.

 

8. 소프트웨어 테스트 기법 :

1) 화이트 박스 테스트 : 소스코드 기반 테스트로써 단위 모듈 내의 결함을 발견하는 단위 테스트에서 주로 사용.

--> 구조적 기법, 루프 테스트

2) 블랙 박스 테스트 : 요구명세서 기반 테스트로써 실제 환경과 유사한 환경 아래 전체에서 주로 사용

--> 동등 분할 기법, 경계 값 분석 기법, 경험 기반 오류 예측 기법, 원인과 결과 그래프 기법

 

9. 소프트웨어 검증과 확인

- 검증 : 올바르게 만드는 것인가? 개발자의 입장에서 소프트웨어가 기능명세서 내용을 제대로 수행하는지를 입증

- 확인 : 우리가 올바른 제품을 만드는 것인가? 고객의 입장에서 소프트웨어가 제대로 개발되었는지를 입증

 

10. 소프트웨어 3R

- Re Engineering : 재공학으로서 기존 sw 기능을 변경하거나 개선 -> 유지보수 용이, 유지보수 비용 감소

- Reverse Engineering : 현재 운영 중인 소프트웨어를 분석하여 추정하는 것 -> 이미 개발된 sw 분석 쉽게해줌, 유지보수 비용 감소

- Reuse : 이미 개발한 소프트웨어를 나중에 반복하여 다시 사용할 수 있도록 함. -> sw 개발 총비용 감소, sw 관련 정보 공유 가능

 

 

728x90

'정보처리기사 > 실기' 카테고리의 다른 글

SQL 관련  (0) 2019.04.10
Section 2. 여러가지 분석 기법  (0) 2019.04.07
데이터베이스 관련 정리  (0) 2019.04.06
Section 1. 경영, 관리, 운용 관련 용어  (0) 2019.04.05
PART 04. 시스템 관리와 보안  (0) 2019.04.05