Software Engineering Flashcards Preview

PE > Software Engineering > Flashcards

Flashcards in Software Engineering Deck (131)
Loading flashcards...
1

SW공학 개념

⦿ 특징 (비복유 무장복)
- 비가시성, 복잡성, 유연성, 무형, 장수, 복제가능
⦿ 위기 (신고생 일품)
- 신뢰도 저하, 고비용, 생산성 저하, 일정지연, 품질저하
⦿ SW공학정의
- 품질확보, 생산성향상을 위한 학문
⦿ 목표 (고사효프생)
- 고품질 소프트웨어 : IEEE 730
- 사용자 만족 향상 : 요구공학
- 효율적 프로젝트 관리 : PMO
- SW 프로세스 개선 : CMMi
- 생산성 향상 : Case Tool
⦿ 구성요소 (언기원도)
- 언어, 기법, 원리, 도구
⦿ SW위기 해결방안 (공표자품)
- 공학적 접근
- 표준화
- 자동화 도구 활용
- 품질보증체계

2

소프트웨어 공학 언어

- DFD(Data Flow Diagram)
- ERD(Entity Relationship Diagram)
- UML(Unified Modeling Language)

3

소프트웨어 공학 기법

(요설구데객)
- 요구분석방법
- 설계방법
- 구조적 분석기법
- 데이터 흐름 중심
- 객체지향 분석기법

4

소프트웨어 공학 원리

(단추정모일분)
- 단계적 상세화
- 추상화
- 정보은닉
- 모듈화
- 일바화
- 분할과 정복

5

소프트웨어 공학 도구

- 통합 Case Tool
- 요구사항 자동화
- 테스트 자동화

6

소프트웨어 위기 해결방안

(공표자품)
- 공학적 접근 : 구조적, 정보공학, 객체지향, CBD, 프로젝트 관리
- 표준화 : 역공학, 재공학, 데이터표준화, 재사용성 체계화
- 자동화 도구 활용 : CASE, Repository, 형상관리 도구
- 품질보증체계 : ISO품질보증체계, CMMi/SPICE, 정보시스템 감리

7

모듈화

⦿ 정의
- 기능 단위의 루틴으로 분해 및 추상화를 통한 설계 기법
⦿ 원리(정자독분비)
- 정보은닉
- 자료추상화
- 독립성
- 분할과 정복
- 비용과 모듈의 관계
⦿ 특성
- 비즈니스 확장성 : 민첩한 대응
- 관리 효율성 : 유지보수 기간 단축
- 기술적 재사용 : 모듈의 컴포넌트화
⦿ 장점
- 유지보수 편리
- 생산성 향상
- 가독성 향상
- 오류 최소화
⦿ 기법의 종류
- 설계기법 : 모듈, 컴포넌트, 서비스
- 구현기법 : Macro, Function, inLine
⦿ 응집도
- 우연, 논리, 일시, 절차, 통신, 순차, 기능
⦿ 결합도
- 내용, 공통, 외부, 제어, 스템프, 자료

8

응집도 (기능)

- 하나의 모듈이 하나의 기능만 수행

9

응집도 (순차)

- 모듈내의 동일한 요소에 값을 출력하고 다시 입력 값으로 사용
A = update();
Delete(A);

10

응집도 (통신)

- 모듈 내 요소들이 동일한 자료를 이용하여 서로 다른 기능을 수행
DB에 저장된 name
print(name);
select(name);

11

응집도 (절차)

- 모듈 내 요소간에 실행되어야 하는 순서 존재
Init();
Listen()
Request()

12

응집도 (일시)

- 변수 초기화 처럼 1회 실행되는 요소. 요소들 동시 수행
Init();
Memset();

13

응집도 (논리)

- 논리적으로 유사기능을 수행 하나 밀접한 관련은 없음
Switch(1);
Case : 1
Case : 2
Case : 3

14

응집도 (우연)

- 모듈내 요소들의 연관관계가 거의 없음

15

결합도 (내용)

- 다른 모듈의 내부 데이터를 직접 수정하는 경우
void main() {
Go To LOCAL;
}
void local(int x, int y) {
LOCAL;
}

16

결합도 (공통)

- 전역변수 등 모듈간 동일자료영역 공통조회
Static in A;
void main() {
A = i;
}
void local() {
A = 2;
}

17

결합도 (외부)

- config 등 모듈간 공통적인 SW외부 환경과 정의 공유
void main() {
#include config.dat;
}
void local() {
#include config.dat;
}

18

결합도 (제어)

- 제어문을 이용 타 모듈의 내부 제어
void main() {
local(1);
}
void local(int isExec) {
if(isExec) { }
else { }
}

19

결합도 (스템프)

- 모듈 간 매개변수로 구조체를 지정
Struct 좌표 (int x, int y);
void main() {
local(좌표 xy);
}

20

결합도 (자료)

- 모듈간 매개변수로 통신
void main() {
Local(int x, int y);
}

21

객체지향 설계 원리

⦿ 객체의 구성요소 : 객체, 클래스, 메소드, 메시지
⦿ 객체지향 설계 원리 : 캡슐화, 추상화, 다형성, 정보은닉, 상속성

22

객체지향 설계 5원칙

- SRP(Single Responsiliity Principle) : 단일 책임의 원칙
- OCP(Open-Closed Principle) : 개방-폐쇄 원칙
- LSP(Liskov Substitution Principle) : 리스코프 치환 원칙
- ISP(Interface Segregation Principle) : 인터페이스 분리 원칙
- DIP(Dependency Inversion Principle) : 의존관계 역전 원칙

23

SRP (Single Responsibility Principle)

⦿ 정의
- 클래스는 하나의 기능만 가짐
⦿ 특징
- 클래스 변경 이유는 오직 하나, 변경 연쇄작용에서 자유, 가독성/유지보수성 향상
⦿ SRP원칙 적용 기법
- Extract Class, Move Method, Move Field
⦿ 사례
- 비즈니스 로직과 DB처리 메소드 분리

24

OCP (Open Close Principle)

⦿ 정의
- 확장에는 열려있고, 변경에는 닫혀 있어야 함
⦿ 메커니즘
- 추상화(공통), 캡슐화
⦿ 적용절차
- 1단계(Class구분)
- 2단계(I/F정의)
- 3단계(코드작성)
⦿ 사례
- 인터페이스 추가

25

LSP (Liskov Substitution Principle)

⦿ 정의
- 자식 타입들은 부모 들이 사용되는 곳에 대체 가능
⦿ 메커니즘
- OCP, 다형성, 상속성
⦿ 사례
- Storage 인터페이스를 구현한 하위 클래스 FileStorage와 DBStorage 클래스는 Client의 write()인자인 Storage를 대체 가능

26

ISP (Interface Segregation Principle)

⦿ 정의 : 자신과 관련 없는 interface의 변화로 인해 영향받지 않는 원칙
⦿ 특징 : 여러개의 구체적 인터페이스 구현, 인터페이스 단일 책임
⦿ 적용방법 : 클래스 인터페이스를 통한 분리(상속), 객체 인터페이스를 통한 분리(위임)
⦿ 사례
- Animal interface를 bird interface와 reptile interface, fish interface로 나누어서 각각의 움직임을 나타내도록 분리
- frog class는 자신에게 맞는 reptile 과 fish를 implements하여 run()과 swim()만 구현

27

DIP (Dependency Inversion Principle)

⦿ 정의 : 구상 클래스에 의존하지 않도록 하는 원칙
⦿ 원리 : 구성(레이어), 의존(추상레벨), 추상화(공통부분)

28

추상 클래스

⦿ 개념 : 하나 이상의 추상 메소드와 일반 필드 및 일반 메소드를 포함하는 클래스
⦿ 키워드 : abstract class
⦿ 템플릿 : 일부 구현된 내용을 포함하는 미완성 템플릿
⦿ 목적 : 추상 메소드 기능 구현 및 재사용
⦿ 하위클래스 : Extends, 다중상속 불가
⦿ 추상화수준 : 클래스에 비해 높고, 인터페이스에 비해 낮음
⦿ 디자인패턴 : Template Method
⦿ 공통 : New 연산자를 사용한 인스턴스 생성 불가(하위 클래스에 위임)

29

인터페이스

⦿ 개념 : 추상 메소드와 상수(static final 필드)만을 포함하는 추상 클래스
⦿ 키워드 : interface
⦿ 템플릿 : 구현된 내용이 없이 밑그림만 그려지는 기본 템플릿
⦿ 목적 : 기능을 공통 타입으로 그룹핑
⦿ 하위클래스 : implements 후 추상 매소드 재정의, 다중상속 가능
⦿ 추상화수준 : 가장높은수준
⦿ 디자인패턴 : Strategy
⦿ 공통 : 유연한 설계

30

묵시적 형변환

⦿ 변환시점 : 하위타입을 상위타입으로 대체시
⦿ 목적 : 범용성, 확장성 보장
⦿ 연산자 : 불필요
⦿ 용도 : 높은 추상화, 프레임워크 개발시
⦿ 공통 : 상위, 하위 타입 관계가 아닌경우 Casting Exception 발생