2022. 2. 15. 16:34

정적 분석

 

프로그램을 실행하지 않고 코드를 검사하여 수행하는 컴퓨터 프로그램 디버깅의 방법

이 방법론의 핵심은 실행의 부재

 

정적 분석의 다른 범주

 

1. 패턴 기반 정적 분석 (Pattern-based static analysis)

 

이 범주는 하나의 코드에서 패턴들을 본다

 

이것은 분석의 바이너리 형태이다

 

즉 패턴은 존재하거나 존재하지 않는다

 

이것은 거짓 양성(false positive)에 대하여 기억할 좋은 것이다

 

패턴 기반 분석은 CWE, MISRA, OWASP와 같은 프로그래밍 표준에 기반한 

 

소프트웨어 결함을 생성하는 것을 아는 소스 코드에서 단어를 검출한다

 

패턴 기반 정적 분석은 개발자들이 조직의 개발 정책뿐만 아니라 

 

최적의 패턴을 집행하는 동안 위험한 패턴을 피하고 최고의 실행을

 

하는 코딩을 보장하는데 도움을 준다

 

 

2. 흐름 기반 정적 분석 (Flow-based static analysis)

 

분석의 이 타입은 오직 런타임동안 나타나는 잠재적인 결함을  검출하기 위한 

 

가상적인 실행 경로를 실행하기 위한 코드의 심볼릭 실행을  한다

 

응용프로그램 코드의 매우 큰 부분을 걸치는 복잡한 경로를 분석함으로써 

 

패턴 기반 분석에 의해 검출될 수 없는 이슈를 발견할 수 있다

 

이것은 런타임 버그를 강조할 것이다

 

그 분석은 물론 거짓 양성의 불가피한 가능성이 있는 많은 경로를 검사한다

 

그러나 거짓 양성의 처리는 생산 코드에서 버그를 다루는 것보다 훨씬 쉽다

 

 

3. 계량적 분석 (Metrics)

 

계량적 분석은 코드에 수치의 시야를 제공한다 

 

그것은 코드 구성에서 잠재적 약점을 검사하기 위한 순환 복잡성(cyclomatic complexity), 

부채꼴(fan out), 응집력 부족(lack of cohesion) 과 같은 코드 특성을 측정한다

 

이것은 코드가 그들의 정책을 준수하지 않을 때 사용자가 경고되기 위해

계량적 분석(metrics)에 대한 적합한 범위를 구성할 수 있다

2016. 2. 25. 00:01

* 아키텍처가 튼튼한 시스템이 결국에는 성공

- 아키텍처가 튼튼한 시스템

- 결합성이 적다

- 응집력이 강한 시스템


* 품질 속성


* 시스템의 소프트웨어 아키텍처

- 시스템을 추론하는 데 필요한 구조의 집합

- 시스템은 소프트웨어 요소와 이들 사이의 관계, 

   그리고 이들 요소와 관계의 속성으로 구성


1. 아키텍처는 소프트웨어 구조의 집합이다

- 구조란 단순히 관계로 서로 얽혀 있는 요소들의 집합이다

- 소프트웨어 시스템은 여러 구조로 구성

- 어떤 하나의 구조가 아키텍처인 것은 아니다


- 아키텍처의 구조는 3가지

- 이들은 아키텍처의 설계와 문서화, 분석에서 중요한 역할을 수행


1. 모듈

- 모듈의 구현 단위로 시스템을 분할

- 모듈에는 특정한 컴퓨팅 책임이 할당

- 프로그래밍 팀의 작업을 할당하는 기반

- 대규모 프로젝트에서 이들 요소들은 분할되어 서브 팀에 배정

- 정적인 구조


2. 컴포넌트

- 동적인 구조

- 이 구조는 시스템의 기능을 수행하기 위해 런타임에 요소가 서로 상호작용하는 방식에 집중


3. 할당 구조

- 소프트웨어 구조로부터 시스템의 구성, 개발, 설치, 실행환경으로 매핑

- 모듈은 개발할 팀에 배정

- 구현과 통합, 테스트를 위해 파일 구조의 위치에 할당

- 컴포넌트는 실행하기 위해 하드웨어에 배포


* 아키텍처적 구조

- 시스템과 시스템의 속성에 대해 추론할 수 있게 해준다

- 추론은 이해 당사자에게 중요한 시스템의 특성에 관한 것

- 시스템에 의해 달성되는 기능성

- 결함에 맞서는 시스템의 가용성

- 시스템의 적정한 변경을 어렵게 하는 것

- 사용자 요청에 대한 시스템의 반응성

- 그 밖의 많은 것들 등등



*  시스템 아키텍처(system architecture)

- 시스템의 표현

- 하드웨어 및 소프트웨어 컴포넌트와 기능 매핑

- 하드웨어 아키텍처와 소프트웨어 아키텍처의 매핑

- 이들 컴포넌트와 사람의 상호작용

- 하드웨어, 소프트웨어, 사람을 포함하는 전체 시스템에 관심


* 전사적 아키텍처(enterprise architecture)

- 조직의 핵심 목표와 전략적인 방향이 연계된 조직의 프로세스와 정보 흐름

- 인력 및 조직 단위의 구조와 행위를 서술

- 전사적 아키텍처가 반드시 정보 시스템을 포함할 필요는 없음