블로그 이전했습니다. 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

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