일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Security
- DP
- RBAC
- 언리얼엔진
- dtft
- AINCAA
- 게임개발
- 유스케이스
- MLFQ
- 유니티
- 배경 그림
- 메카님
- dirty cow
- ret2libc
- TSet
- DSP
- sampling theory
- STCF
- 운영체제
- Race condition
- 게임 개발
- frequency-domain spectrum analysis
- Unity #Indie Game
- MAC
- Double free
- CTF
- stride
- Rr
- linear difference equation
- pdlc
- Today
- Total
다양한 기록
구현과 재사용 (Implementation & Reuse) 본문
구현(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 |