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 관련 정보 공유 가능
'정보처리기사 > 실기' 카테고리의 다른 글
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 |