다양한 기록

구현과 재사용 (Implementation & Reuse) 본문

소프트웨어공학

구현과 재사용 (Implementation & Reuse)

라구넹 2024. 12. 13. 22:03

구현(Implementation)

- 상세 설계를 코드로 변환하는 프로세스

프로덕트

- 프로덕트의 다른 컴포넌트를 동시에 팀이 맡아 구현

 

경우에 따라서는 코딩과 단위 테스팅을 합하여 구현이라 정의

 

구현 언어의 선택

- 비용-이익 분석을 사용하여 결정

- 추정 이익과 추정 비용 간의 차이가 커서 가장 기대가 되는 언어가 적합

 

1세대 언어

- 이진수 기계어 코드

2세대 언어

- 어셈블리어

3세대 언어

- 한 문장은 5~10개의 어셈블리어

- 포트란, 코볼부터 C, C++

4세대 언어

- 내가 원하는 것이 이거다 하면 알아서.. SQL

5세대 언어

- 그냥 툴, 드래그 앤 드랍

 

* 4세대 언어

- 30 ~ 50개의 기계 코드 명령어와 동등

- 비절차적 언어

 

자기문서화 코딩

- 다른 프로그래머와 품질 보증 활동을 하는 SQA 그룹, 또 많은 유지보수 프로그래머들에게 모듈이 읽기 쉽고 모호성 배제

- 모듈의 비문서화 코드는 경험있는 프로그래머도 부분적으로만 이해

- 모듈의 최상단에 제공되어야 하는 최소 정보:

    * 모듈 이름

    >> 모듈이 무엇을 하는지에 대한 서술

    * 프로그래머 이름

    >> 모듈이 작성된 날짜 : 모듈이 승인된 날짜와 승인한 사람

    >> 모듈 인수들

    >> 알파벳 순으로 작성된 변수명의 목록과 사용

    >> 접근한 파일명

    >> 모듈에 의해 변경된 파일명 등

 

파라미터 사용

가독성 좋게..

 

코딩 표준

- 모든 모듈은 35~50개 사이의 실행 가능한 문장으로 구성

- 모든 환경에서 적용할 수 있는 코딩 표준이 없음

- 자동화하여 체크

- 유지보수 용이성을 위해 존재


코드의 재사용

- 소프트웨어의 모든 프로세스 단계에서의 컴포넌트들은 명세, 계약, 계획, 설계, 그리고 모듈 등의 각 부분에서 재사용 가능

재사용은 다른 기능성을 갖는 프로덕트 개발을 쉽게 하기 위해 한 프로덕트의 컴포넌트들을 사용하는 것을 의미  

 

기회적(우연적) 재사용 (Opportunistic(accidental) reuse)

- 우선 프로덕트를 구축

- 컴포넌트들은 재사용을 위한 컴포넌트 데이터베이스에 저장

 

체계적(고의적) 재사용(Systemic(deliverate) reuse)

- 우선 재사용 가능한 컴포넌트를 구축하고

- 그 후 프로덕트들은 컴포넌트를 이용하여 구축

 

재사용의 제약 사항

- 재사용의 비용 .. 재사용 가능한 것을 만드는데 드는 비용, 재사용하는데 드는 비용, 재사용 프로세스를 정의하고 구현하는데 드는 비용

- 법적인 이슈들 (계약에 의한 소프트웨어)

- 상용 소프트웨어에 대한 소스 코드의 부족


설계와 구현시의 재사용

라이브러리 또는 툴킷

- 재사용 가능한 루틴의 집합- 사용자는 제어 로직을 지원받을 수 있음

 

애플리케이션 프레임워크

- 설계에 제어 로직을 통합한 것


설계의 재사용

디자인 패턴

- 일반적인 설계 문제의 해결책, 상호작용하는 클래스들의 형태로 표현

- 클래스들은 커스터마이즈가 필요


SRP (Single Responsibility Principle)

클래스는 한가지 책임만 가져야 함

클래스나 모듈을 변경할 이유가 하나 뿐이어야 함

 

OCP (Open Closed Principle)

변경에는 엄격하고 확장에는 관대해야 함

 

세로 밀집도

- 서로 밀접한 개념은 세로로 가까이 두어야 함

'소프트웨어공학' 카테고리의 다른 글

테스팅 (Testing)  (0) 2024.12.14
DevOps & CI/CD  (0) 2024.12.14
Software Design  (0) 2024.12.13
Requirement Engneering  (0) 2024.12.13
CMM, CMMI  (0) 2024.12.13