구현

원래벌레·2022년 5월 11일
0
post-custom-banner

💎 구현이란?

  • 설계 명세를 토대로 구현한다.

  • 분리하여 구현할 수 있는 작은 단위별로 프로그래밍 하는 것

  • 구현 단계의 로드맵
    1) 코딩 표준을 작성
    2) 아키텍처 설계 결과 프레임워크 패키지와 응용 패키지를 결정
    3) 클래스 구현이 끝나는 대로 검사를 함
    4) 클래스 단위로 테스트함
    5) 클래스나 패키지를 릴리즈하여 다음 단계인 응용시스템으로 통합함

  • 구현 단계 이전 준비사항
    1) 설계서 확인
    2) 시간 측정 양식 작성 - 구현의 각 작업에 소요되는 시간
    3) 결함 기록 양식 작성 - 결함마다 심각도 수준, 오류 유형을 기록 할 수 있도록 양식 준비
    4) 코딩 표준 숙지
    5) 과거 자료 참고

💍 객체지향 구현 모델

  • 객체지향 방법론 :
    1) 요구분석 -> 설계 -> 구현 -> 테스트 단계를 반복
    2) 통합 프로세스 :
    개념정립 -> 발전 -> 구축 -> 전환
    구현에서 가장 많은 비중을 두는 것은 구축 단계
    3) 구현모델
    - 구현 모델에는 설계 모델의 각 요소가 실제로 구현된 후 생성되는 파일에 어떻게 매핑 되는 지가 나타나 있음
    - 구현 모델은 구현 단계의 생산물이 어떻게 구성되며, 설계요소와 어떤 식으로 연관되는지를 나타냄

💍 객체지향 프로그래밍 언어와 구현



💎 코딩원리

💍 구현 단계의 작업 절차

1) 코딩 작업을 계획, 코딩하기 위해 설계서를 확인하고 부족한 부분을 보충함
- 사전 조건과 결과 조건을 확인
- 코딩에 걸리는 시간을 예측
2) 설계나 구조를 검토 - 걸린시간, 결함 유형, 위치, 심각도를 기록
3) 코딩
4) 검사
5) 컴파일
6) 테스트

💍 좋은 코딩 원리

  • 재사용
    1) 이미 존재하는 믿을 만한 코드를 이용 ex) GUI 컴포넌트

  • 의도 확립
    1) 의도 확립의 원리를 반영한 프로그래밍 예
    final, const, abstract
    2) 상수, 변수, 클래스는 되도록 로컬로 만들어라
    3) 직접 접근키시려는 의도가 없는 것은 접근 할 수 없게 속성을 private로 만들어라
    4) 문서에 사례를 포함하라
    5) 메소드를 호출 순서대로 정리하기보다 알파벳 순으로 나열

  • 포인터와 레퍼런스
    1) 매개변수를 레퍼런스 타입을 이용하라 포인터로 사용하지 말고

  • 함수
    1) 타입에 대한 질의는 피해라
    2) 장점이 단점보다 더 많을때는 제외하고는 C++의 프렌드 함수는 피해라
    3) 중복 정의함수는 각별한 주의 - 오해를 일으킬 수 있다.

  • 예외처리
    1) 어떻게 예외 처리를 하는지 알 때만 catch 사용 모르면 throws
    2) 예외 처리시 유의사항
    - 현재 메소드에서 처리할 수 없다면, 다른 더 넓은 범위에서 다루어야 한다.
    - 테스트하는 과정이라면, 예외처리를 빼고 해야한다.

💍 오류 처리 방법

  • 구문 오류를 처리하는 방법
  • 오류를 사전에 배제하는 방법
  • 잘못된 입력을 처리하는 방법
  • 요구사항에 없는 메소드를 처리하는 방법

💍 객체지향 설계 원리 - SOLID 원칙

  • 단일 책임 : 클래스는 오직 한가지 이유로만 변경되어야 함
    1) 한 클래스는 한 가지 일만 해야한다.

  • 개방 폐쇄 : 모듈은 확장에는 개발되어야 하나, 변경에는 폐쇄되어야 함
    ex) Shape 클래스가 있다 할때 그 밑에있는 서브클래스를 바꾸는 것은 되나, Shape클래스를 바꿔서는 안된다.
    - 구현 방법 : 상속돠 다형성을 이용하라 shape라는 기본클래스를 추상클래스로 정의하고 Area를 추상 메소드로 정의하라.

  • 리스코프 대체 : 서브 타입은 자신의 베이스 클래스로 대체 가능해야 함
    ex) Shape 클래스의 서브클래스가 Circle이 있다 할 때, Circle을 Shape으로 표현 할 수 있어야 한다. 파생클래스를 만들 떄, 베이스 클래스의 기능을 교체해서는 아노니다. 단순히 확장해야함. 업캐스팅에 문제가 없어야 한다.

  • 인터페이스 분리 : 관심의 대상이 되는 인터페이스만 분리하여 제공하여야 함
    - 여러 클래스로 구성된 모듈을 클라이언트가 쉽게 사용하려면 추상화된 인터페이스를 제공하는 것이 좋음
    - 즉, 관심의 대상이 되는 인터페이스만 분리하여 제공하여야 한다.

  • 의존 관계 역전 : 자주 변경되는 구체적 클래스에 의존하지 말아야 함
    - 자주 변경되는 구체적 클래스에 의존하지 말아야 한다는 어ㅜㄴ칙
    1) 추상클래스나 인터페이스는 구체적 클래스보다 덜 변하기 때문에 가능하면 추상호된 클래스에 의존하게 하는 것이 좋음

참고 : 한빛아카데미, 소프트웨어공학설계

profile
학습한 내용을 담은 블로그 입니다.
post-custom-banner

0개의 댓글