자주 등장하는 개념 정리 및 기출문제 풀이 정리
목차
1) 애자일 기법
2) 소프트웨어 개발 절차
3) UI 설계 원칙
4) 객체지향 4가지 특성 (캡슐화, 상속, 다형성, 추상화)
5) 설계방식
0. 소프트웨어 설계
계획 -> 분석 -> 설계 -> 구현 -> 테스트 -> 유지보수
1. 애자일 기법
애자일 기법은 소프트웨어 생명주기 모형 중 하나이다.
여기서,
소프트웨어 생명주기 모형
- 폭포수 모형 : 고전적, 전통적 모델 , 순차적개발이 특징, 이전 단계로 돌아갈 수 없음.
- 프로토타입 모형 : 견본/ 시제품을 통해 최종 결과 예측, 인터페이스 중심, 요구사항 변경 용이
- 나선형 모형 : 위험 분석 및 위험 최소화가 목적 [계획 > 위험분석 > 개발 및 검증 > 고객 평가 과정]
- 애자일 모형
1) 애자일(Agile) 모형
- 고객의 요구사항 변화에 빠르게 대응할 수 있는 모형
- 고객과 소통, 고객의 요구사항에 민첩하게 대응하는 모형
- 공정과 도구보다 개인과 상호작용을 더 중시
- 포괄적인 문서보다는 작동하는 소프트웨어
- 계약 협상보다는 고객과의 협력을
- 계획을 따르기보다는 변화에 대응하기
주황색으로 표시한 부분에 더 높은 가치를 둔다.
개발 주기는 짧고, 그 짧은 주기마다 도출된 결과에 대한 고객의 평가를 적극적으로 수용.
*애자일 개발 방법론
- XP
- SCRUM
- FDD
- 크리스탈
- Lean
관련 기출 문제)
04. 애자일 기법에 대한 설명으로 맞지 않는 것은?
(1) 절차와 도구보다 개인과 소통을 중요하게 생각한다.
(2) 계획에 중점을 두어 변경 대응이 난해하다.
(3) 소프트웨어가 잘 실행되는데 가치를 둔다.
(4) 고객과의 피드백을 중요하게 생각한다.
(2020.08.22 정보처리기사 필기 기출문제)
02. 다음 중 애자일(Agile) 소프트웨어 개발에 대한 설명으로 틀린 것은?
(1) 공정과 도구보다 개인과의 상호작용을 더 가치 있게 여긴다.
(2) 동장하는 소프트웨어보다는 포괄적인 문서를 가치있게 여긴다.
(3) 계약 협상보다는 고객과의 협력을 가치 있게 여긴다.
(4) 계획을 따르기보다 변화에 대응하기를 가치 있게 여긴다.
(2022.1회 필기 정보처리기사 필기 기출문제)
2) 애자일 모형을 기반으로 한 구체적인 소프트웨어 개발 모형 - 스크럼, XP
- 스크럼 : 30일마다 동작가능한 제품을 제공하는 스프린트를 중심으로 제공함.
- 매일 15분마다 회의를 진행하는 특징.
- 빠르게 변화하는 요구 사항에 대응하고 효율적으로 협업하기 위한 프레임워크
- 작은 팀이 짧은 시간 동안 일을 수행. 이를 반복하며 소프트웨어를 개발.
- 반복적이고 적응적이 개발 방법 채택
- 빠르게 변화하는 요구사항에 대응
- 제품의 가치 극대화에 초점
=> 개발 프로세스를 효율적으로 관리, 고객의 요구사항 빠르게 반영
- 스크럼 팀 (Scrum Team):
- 작업을 수행하는 데 필요한 모든 기술을 보유한 작은 규모의 팀입니다. 스크럼 팀은 자율성을 갖고 있으며, 팀원 간에 상호 협력하여 작업을 수행합니다.
- 스크럼 마스터 (Scrum Master):
- 스크럼 프로세스를 이해하고 팀이 스크럼을 올바르게 수행할 수 있도록 지원하는 역할을 맡습니다. 스크럼 마스터는 팀을 이끌고, 장애물을 제거하고, 스크럼 이벤트를 조직합니다.
- 제품 책임자 (Product Owner):
- 제품에 대한 비전을 정의하고 우선 순위를 관리하는 역할을 맡습니다. 제품 책임자는 사용자 요구 사항을 수집하고 관리하여 제품의 가치를 극대화합니다.
- 스프린트 (Sprint):
- 고정된 기간(일반적으로 2주에서 4주) 동안 팀이 작업하는 시간입니다. 스프린트 기간 동안에는 완전히 기능이 완성된 제품의 일부가 생성됩니다.
- 스크럼 이벤트 (Scrum Events):
- 스프린트 계획 회의(Sprint Planning Meeting), 일일 스탠드업 회의(Daily Stand-up Meeting), 스프린트 검토 회의(Sprint Review Meeting), 스프린트 회고 회의(Sprint Retrospective Meeting) 등의 이벤트가 있습니다. 이러한 이벤트를 통해 팀은 작업을 계획하고, 진행 상황을 확인하고, 피드백을 주고 받으며, 개선할 점을 도출합니다.
- 스크럼 팀 (Scrum Team):
- XP (eXtreme Programming)
- 의사소통 (Communication) : 개발자, 관리자, 고객 간의 원활한 의사소통
- 피드백 (Feedback) : 지속적인 테스트와 반복적 결함 수정, 빠른 피드백
- 존중 (Respect) : 모든 프로젝트 관리자는 팀원의 기여를 존중
- 용기 (Courage) : 고객의 요구사항 변화에 능동적인 대처
- 단순성 (Simplicity) : 부가적 기능, 사용되지 않는 구조와 알고리즘 배제
- (의사선생님 피존용기에 담아주세요)
관련 기출 문제)
11.XP(eXtreme Programming)의 5가지 가치로 거리가 먼 것은?
(1) 용기
(2) 의사소통
(3) 정형분석
(4) 피드백
(2020.06.06 필기 정보처리기사 필기 기출문제)
2. 소프트웨어 개발 절차
- 계획 : 비용산정, 일정산정, 타당성 검토
- 분석 : 고객의 요구사항을 다 꺼냄
- 설계 : 분석과 비슷 명확한 구분은 없음, 모델링(DFD, ERD,소단위명세서, 데이터딕셔너리,UML)
- 구현 : 실제 구현
- TEST
- 유지운영
2-1 . 요구사항 분석 절차
- 도출 (Elicitation) : 사용자의 머리속에 있는 것을 꺼냄
- 분석 (Analysis): 나온 내용들을 추림, 분석
- 명세 (Specification) : 문서화
- 확인 : 고객과 만나서 확인
관련 기출 문제)
11. 소프트웨어 설계에서 요구사항 분석에 대한 설명으로 틀린것은?
(1) 소프트웨어가 무엇을 해야하는가를 추적하여 요구사항 명세를 작성하는 작업이다.
(2) 사용자의 요구를 추출하여 목표를 정하고, 어떤 방식으로 해결할 것인지 결정하는 단계이다.
(3) 소프트웨어 시스템이 사용되는 동안 발견되는 오류를 정리하는 단계이다 -> 오류는 TEST단계에 해당
(4) 소프트웨어 개발의 출발점이면서 실질적인 첫 번째 단계이다.
-> 원래는 계획이 먼저이지만 보통은 클라이언트가 하는일이기때문에 실질적인 첫번째 단계
(2022.1회 필기 정보처리기사 필기 기출문제)
2-2 . CASE 도구(Computer Aided Software Engineering)
: 소프트웨어 개발과정 일부 또는 전체를 자동화하기 위한 도구. "개발할때, 나를 도와주는 도구"
- CASE 도구는 요구사항 검증 방법으로 Computer의 도움을 받는 방법
- 주요 기능:
- 요구 사항 분석 및 관리: 요구 사항을 식별하고 문서화하며, 요구 사항 간의 관계를 추적하는 기능을 제공합니다.
- 시스템 설계 및 모델링: 시스템의 아키텍처 및 디자인을 모델링하고 문서화하는 기능을 제공합니다. UML(Unified Modeling Language)을 사용하여 시스템을 다이어그램으로 표현할 수도 있습니다.
- 코드 생성 및 자동화: 모델링된 디자인을 기반으로 소스 코드를 자동으로 생성하거나 일부 코드 작성을 자동화하는 기능을 제공할 수 있습니다.
- 테스트 및 디버깅: 소프트웨어의 테스트 케이스를 생성하고 실행하며, 디버깅을 위한 도구를 제공합니다.
- 버전 관리 및 협업: 소프트웨어 개발 프로젝트의 버전 관리를 지원하고, 팀 간의 협업을 위한 기능을 제공합니다.
- 문서 생성 및 관리: 소프트웨어 개발과 관련된 문서를 생성하고 관리하는 기능을 제공합니다.
관련 기출 문제)
11. CASE (Computer Aided Software Engineering) 의 주요 기능으로 옳지 않은 것은 ?
(1) S/W 라이프 사이클 전 단계의 연결 : 개발주기를 표현해주기때문에 전단계를 아우름
(2) 그래픽 지원. : 화면이 보이는 프로그램
(3) 다양한 소프트웨어 개발 모형 지원 : 폭포수모형이든, 애자일모형이든 여러모형을 지원
(4) 언어 번역 : 개발 모형을 공유하기 위한 프로그램
(2020.09 필기 정보처리기사 필기 기출문제)
관련 기출 문제)
11. CASE (Computer Aided Software Engineering)에 대한 설명으로 틀린 것은 ?
(1) 소프트웨어 모듈의 재사용성이 향상된다.
(2) 자동화된 기법을 통해 소프트웨어 품질이 향상된다.
(3) 소프트웨어 사용자들에게 사용방법을 신속히 숙지시키지위해 사용된다. : 개발과 상관없음. 사용방법, 설치 메뉴얼에 해당
(4) 소프트웨어 유지보수를 간편하게 수행 할 수 있다.
(2020.09 필기 정보처리기사 필기 기출문제)
3. UI 설계 원칙
- 직관성 : 누구나 쉽게 이해하고 사용할 수 있어야 한다.
- 유효성 : 사용자의 목적을 정확하게 달성하여야 한다.
- 학습성 : 누구나 쉽게 배우고 익힐 수 있어야 한다.
- 유연성 : 사용자의 요구사황을 최대한 수용하면, 오류 최소화하여야 한다.
여기서 잠깐! UX와 UI의 차이점은?
UX : User Experience 사용자 경험 즉, 사용자가 직접 사용하는 경험을 토대로 구성하는 것.
UI : User Interface의 약자로 사용자 인터페이스를 의미 즉, 사용자가 시각적으로 마주하는 디자인.
관련 기출 문제)
10. UI 설계 원칙에서 누구나 쉽게 이해하고 사용할 수 있어야 한다는 것은?
(1) 유효성
(2) 직관성
(3) 무결성
(4) 유연성
(2020.06.06 필기 정보처리기사 필기 기출문제)
10. User Interface 설계 시 오류 메세지나 경고에 관한 지침으로 가장 거리가 먼 것은?
(1) 메세지는 이해하기 쉬워야 한다.
(2) 오류로부터 회복을 위한 구체적인 설명이 제공되어야 한다.
(3) 오류로 인해 발생 될 수 있는 부정적인 내용을 적극적으로 사용자들에게 알려야한다.
(4) 소리나 색의 사용을 줄이고 텍스트로만 전달하도록 한다.
-> Password오류일때, 색이나 소리 사용 권장해서 오류메세지를 확인하도록 함
(2020.06.06 필기 정보처리기사 필기 기출문제)
4. 객체지향 특징 5가지 (캡슐화, 정보은닉, 상속, 다형성, 추상화)
- 캡슐화 (Encapsulation) : 감싼다, 접근할 방법이 따로 있음.
- 정보은닉 (Information Hiding) : 정보를 숨김
둘이 비슷한 개념으로 이해할 수 있음.
: 안에 있는 정보를 감싼다.
[객체의 속성(data fields)과 행위(methods)를 하나로 묶고, 실제 구현 내용 일부를 외부에 감추어 은닉한다]
private로 선언한 변수를 숨기고, setter, getter로만 사용할 수 있게 한 것.
즉, 객체 내부의 속성이나 행위를 외부에서 직접 접근할 수 없게 하는 것.
'실제 구현 내용 일부를 외부에 감추는 효과'
private String userId;
private String userName;
public String getUserId(){
retrun userId;
}
public String setUserId(String userId){
this.userId = userId;
}
public String getUserName(){
retrun userName;
}
public String setUserName(String userName){
this.userName = userName;
}
- 상속 (Inheritance) / 일반화 :
- 부모에게 받은 모든 내용은 자식이 사용할 수 있음. BUT private은 부모만 사용(본인만 사용가능하니까)
- 과일 -> 바나나, 사과, 배, 오렌지의 공통 개념을 일반화(generalization)
- 다형성 (Polymorphism) : 형태가 다양하다
- Overloding (오버로딩) : 메소드를 여러개 선언하는 방법 → 메소드의 매개변수가 다른 채 여러개 생성
- 변수: 같은이름으로 생성 불가
- 메소드 : 같은 이름으로 여러개 선언 가능 (생성자 선언)
- 매개변수의 개수 or 타입이 다르다면, 매개변수로 각 메소드를 구분할 수 있기때문에 가능.
- 참고)
- a()
- a(int x)
- a(int x, int y)
- 생성자와 메소드
- 생성자(Constructor): 객체가 생성될 때 호출되는 특별한 종류의 메소드. 주로 객체 초기화에 사용됩니다.
- 메소드(Method): 객체의 동작을 정의하는 함수. 객체에 대한 특정 작업을 수행하거나 데이터를 조작하는 데 사용됩니다.
- Overriding(오버 라이딩) → 우선하다 : 재정의 (덮어씌우는 방법) /
- 상속관계에서만 가능(원본이 존재해야함.)
- 부모필드에 있는 a()메소드 존재 → 자식객체생성 시 a()존재 But 재정의 시 내용 변경가능(필수는 아님!!).
- 재정의 → 2개가 아닌 새롭게 정의한 내용 실행
- Overloding (오버로딩) : 메소드를 여러개 선언하는 방법 → 메소드의 매개변수가 다른 채 여러개 생성
- 추상화 (Abstraction) : 기본적인 틀을 만들어 두고 안에 상세 기능은 상황에 맞춰 만드는 것
class MyClass:
def __init__(self, x): # 생성자
self.x = x # 객체의 속성 초기화
def my_method(self): # 메소드
print("This is a method")
# 생성자 호출
obj = MyClass(5) # MyClass의 생성자가 호출되어 객체가 초기화됩니다.
# 메소드 호출
obj.my_method() # MyClass의 메소드가 호출되어 "This is a method"가 출력됩니다.
관련 기출 문제)
03. 객체지향 개념에서 연관된 데이터와 함수를 함께 묶어 외부와 경계를 만들고 필요한 인터페이스만 밖으로 드러내는 과정은?
(1) 메세지(Message) -> 두 객체가 있을때, 내가 만약 다른 객체를 호출하고 싶은때 , 메세지를 보냄.
(2) 캡슐화(Encapsulation)
(3) 다형성(Polymorphism) -> 형태가 다양하다.
(4) 상속(Inheritance) -> 부모로부터 받은걸 내가 사용할 수 있음.
(2021.1회 필기 정보처리기사 필기 기출문제)
5. 설계 기법
1. 하향식 설계방법 (Top Down Intergration Test)
- 구조적 설계 (절차적)
- 상위 모듈에서 하위모듈 방향으로 통합하며 검사
- 종속 모듈은 Stub으로 대체 (인터페이스를 사용안하는 경우)
- 모듈이 통합 될때마다 검사 실기
- 새로운 오류가 생기지 않음을 보증하기 위해 회귀 검사 실시
2. 상향식 설계방법 (Bottom up intergration Test)
- 객체지향 설계
- 하위 모듈에서 상위모듈 방향으로 통합하며 검사
- 밑에서 부터 말아올리는 방식!
- 가장 하위단계의 모듈부터 수행되기때문에 스터브(Stub)가 필요없음
- 하위모듈들을 클러스터(Cluster)로 결합
- 검사사례 입출력 조정을 위해 드라이버 작성(Driver) (인터페이스를 사용 안하는 경우)
*드라이버(Driver) : 검사 자료 입출력 제어 프로그램
*스텁(Stub): 임시 제공되는 가짜 모듈
관련 기출 문제)
05. 설계 기법 중 하향식 설계 방법과 상향식 설계방법에 대한 비교 설명으로 가장 옳지 않은 것은?
(1) 하향식 설계에서는 통합 검사 시 인터페이스가 이미 정의 되어있어 통합이 간단하다.
(2) 하향식 설계에서 레벨이 낮은 데이터 구조의 세부 사항은 설계초기 단계에서 필요하다.
(3) 상향식 설계는 최하위 수준에서 각각의 모듈들을 설계하고 이러한 모듈이 완성되면 이들을 결합하여 검사한다.
(4) 상향식 설계에서는 인터페이스가 이미 성립되어있지않더라도 기능 추가가 쉽다.
해설) 상향식 설계와 하향식 설계에 관계없이 모두 인터페이스가 설계되어있어야 함.
만들어있지않으면 → 하향식 : 스텁(Stub) 필요 / 상향식 : 드라이버 (driver)
(2022 1회 필기 정보처리기사 필기 기출문제)
관련 기출 문제)
20. 소프트웨어 설계 시 제일 상위에 있는 main user function에서 시작하여 기능을 하위기능들로 분할해 가면서 설계하는 방식은?
(1) 객체 지향 설계
(2) 데이터 흐름 설계
(3) 상향식 설계
(4) 하양식 설계
[자격증/정보처리기사] - 정보처리기사 필기 : 시험 직전에 보고가기!단순암기 TIP
'자격증 > 정보처리기사' 카테고리의 다른 글
[정보처리기사필기] 2과목 : 소프트웨어 개발02 - 기출에 나온 개념 (2) | 2024.04.28 |
---|---|
[정보처리기사필기 정리] 2과목 - 소프트웨어 개발 (2) | 2024.04.22 |
[정보처리기사 필기-암기용] : 시험 직전에 보고가기! (UML, 디자인패턴, XP 12가지 핵심가치 ) 단순암기 TIP (0) | 2024.04.13 |
[정보처리기사필기 정리] 1과목 - 소프트웨어 설계 02 (0) | 2024.04.02 |
[정보처리기사 필기 - 정렬] 버블정렬, 선택정렬, 삽입정렬 (0) | 2024.03.28 |