SW공학 개념
⦿ 특징 (비복유 무장복) - 비가시성, 복잡성, 유연성, 무형, 장수, 복제가능 ⦿ 위기 (신고생 일품) - 신뢰도 저하, 고비용, 생산성 저하, 일정지연, 품질저하 ⦿ SW공학정의 - 품질확보, 생산성향상을 위한 학문 ⦿ 목표 (고사효프생) - 고품질 소프트웨어 : IEEE 730 - 사용자 만족 향상 : 요구공학 - 효율적 프로젝트 관리 : PMO - SW 프로세스 개선 : CMMi - 생산성 향상 : Case Tool ⦿ 구성요소 (언기원도) - 언어, 기법, 원리, 도구 ⦿ SW위기 해결방안 (공표자품) - 공학적 접근 - 표준화 - 자동화 도구 활용 - 품질보증체계
소프트웨어 공학 언어
소프트웨어 공학 기법
(요설구데객)
소프트웨어 공학 원리
(단추정모일분)
소프트웨어 공학 도구
소프트웨어 위기 해결방안
(공표자품)
모듈화
⦿ 정의 - 기능 단위의 루틴으로 분해 및 추상화를 통한 설계 기법 ⦿ 원리(정자독분비) - 정보은닉 - 자료추상화 - 독립성 - 분할과 정복 - 비용과 모듈의 관계 ⦿ 특성 - 비즈니스 확장성 : 민첩한 대응 - 관리 효율성 : 유지보수 기간 단축 - 기술적 재사용 : 모듈의 컴포넌트화 ⦿ 장점 - 유지보수 편리 - 생산성 향상 - 가독성 향상 - 오류 최소화 ⦿ 기법의 종류 - 설계기법 : 모듈, 컴포넌트, 서비스 - 구현기법 : Macro, Function, inLine ⦿ 응집도 - 우연, 논리, 일시, 절차, 통신, 순차, 기능 ⦿ 결합도 - 내용, 공통, 외부, 제어, 스템프, 자료
응집도 (기능)
응집도 (순차)
응집도 (통신)
응집도 (절차)
응집도 (일시)
응집도 (논리)
- 논리적으로 유사기능을 수행 하나 밀접한 관련은 없음 Switch(1); Case : 1 Case : 2 Case : 3
응집도 (우연)
결합도 (내용)
- 다른 모듈의 내부 데이터를 직접 수정하는 경우
void main() {
Go To LOCAL;
}
void local(int x, int y) {
LOCAL;
}결합도 (공통)
- 전역변수 등 모듈간 동일자료영역 공통조회
Static in A;
void main() {
A = i;
}
void local() {
A = 2;
}결합도 (외부)
- config 등 모듈간 공통적인 SW외부 환경과 정의 공유
void main() {
#include config.dat;
}
void local() {
#include config.dat;
}결합도 (제어)
- 제어문을 이용 타 모듈의 내부 제어
void main() {
local(1);
}
void local(int isExec) {
if(isExec) { }
else { }
}결합도 (스템프)
- 모듈 간 매개변수로 구조체를 지정
Struct 좌표 (int x, int y);
void main() {
local(좌표 xy);
}결합도 (자료)
- 모듈간 매개변수로 통신
void main() {
Local(int x, int y);
}객체지향 설계 원리
⦿ 객체의 구성요소 : 객체, 클래스, 메소드, 메시지
⦿ 객체지향 설계 원리 : 캡슐화, 추상화, 다형성, 정보은닉, 상속성
객체지향 설계 5원칙
SRP (Single Responsibility Principle)
⦿ 정의 - 클래스는 하나의 기능만 가짐 ⦿ 특징 - 클래스 변경 이유는 오직 하나, 변경 연쇄작용에서 자유, 가독성/유지보수성 향상 ⦿ SRP원칙 적용 기법 - Extract Class, Move Method, Move Field ⦿ 사례 - 비즈니스 로직과 DB처리 메소드 분리
OCP (Open Close Principle)
⦿ 정의 - 확장에는 열려있고, 변경에는 닫혀 있어야 함 ⦿ 메커니즘 - 추상화(공통), 캡슐화 ⦿ 적용절차 - 1단계(Class구분) - 2단계(I/F정의) - 3단계(코드작성) ⦿ 사례 - 인터페이스 추가