본문 바로가기

전체 글571

SW 아키텍쳐 구조&활용 (1) 오픈소스기반 임베디드 시스템 (리눅스/안드로이드) 이해 S/W 아키텍처 개요 및 시스템에서 S/W 동작 하드웨어 : 메모리 장치(롬, 램), 주변장치 소프트웨어 : 부트로더, 운영체제, 응용 앱 Fetch -> Decode -> Excecute Firmware는 하드웨어를 제어하는 가장 로우 레이어의 software임 OS기반 시스템은 메모리, 입출력 장치 등의 공통자원들을 사용할 수 있도록 서비스를 제공함/멀티프로세싱을 지원함 그리고 일반적인 부팅 순서는 부트로더 -> OS -> 앱임. 부트로더는 H/W초기화, CMD 처리를 함(OS 실행 등). 프로그램 번역과 실행 컴파일러는 C코드를 기계어로 변경해주는 것임. 크로스 컴파일러는 예를 들어 ARM기반의 임베디드 시스템 장치를 개발하려면 ARM 프로세서.. 2021. 6. 9.
SW 요구사항 개발 (1) 개발을 진행하면서 변경 요청에 대해 힘들었던 경험 2021. 6. 8.
SW 공학 기초 (3) 품질 메트릭 조건 분기의 수/조건 분기의 깊이 정도/분기문으로 발생하는 실행 경로/논리연산자 개수 TDD의 원칙 테스트를 통과할 만큼만 코드를 생성함 Validation : 올바른 제품을 만들고 있는가 Verification : 올바른 방향으로 빌딩하고 있는가 명세서에 없는 기능이 포함된 것을 찾아내는 것은 Verification 명세서에 누락된 사용자 요구사항을 발견하는 것은 Validation 단계별 테스트 가장 기본적인 단위 테스트 Integration test 알파 테스트/베타 테스트 블랙박스 테스트 화이트박스 테스트 : 구조 기반 테스트 코드 커버리지 프로세스 모델 프로세스 : 왓 방법론 : 왓 + 하우 스크럼에서 Sprint의 의미 : 작은 단위의 개발 업무를 단기간 내에 전력 질주하여 개발한.. 2021. 6. 8.
SW 공학 기초 (2) 아키텍처 패턴 레이어의 재사용성 향상, 레이어 간의 명확한 분리가 어려움, 레이어의 적절한 개수나 규모를 정하는 것이 어려움. MVC pattern 이 해결책을 적용할 때 고려해야 하는 제한 사항이 있는지/해결 과정에서 발생하는 단점을 수용할 수 있는지를 고민해야 함 예제로 보는 아키텍쳐 Cloud 기반의 MSA 환경에서는 모든 것이 변화 함. 설계 우연적 응집. 논리적, 시간적, 절차적, 교환적, 순차적, 기능적 응집 모듈 간의 결합은 느슨하게, 모듈 내 구성 요소들 간의 응집은 강하게 객체 지향 설계의 원칙 디자인 패턴 많은 개발자들이 경험상 체득한 설계 지식을 검증하고 이를 추상화함 상세 설계 정확도/효율성/가독성 클린 코드 개발자에 의해서 명명이 가능한 모든 식별을 위한 이름 작성 규칙 코드리뷰/.. 2021. 6. 8.
SW 공학 기초 (1) 소프트웨어공학의 필요성 sw code lines 수 https://www.visualcapitalist.com/millions-lines-of-code/ How Many Millions of Lines of Code Does It Take? How many lines of code does it take to run a fighter jet, the Large Hadron Collider, a web browser, or Facebook? See the amounts compared in this data viz. www.visualcapitalist.com 소프트웨어 프로세스 요구사항 -> 아키텍쳐 -> 설계 -> 구현 -> 테스트 요구사항 요구사항의 역할 기능 요구 사항 비기능 요구 사항 : 시스템이.. 2021. 6. 8.
SW 품질 향상을 위한 코드 정적분석 (2) 오픈소스를 활용한 코드 규모 분석 cloc 오픈소스를 활용한 함수 라인수 및 복잡도 분석 PWD graphiz doxygen 룰 기반 정적분석 CppCheck 2021. 6. 7.
SW 품질 향상을 위한 코드 정적분석 (1) 소프트웨어 제품 품질 보증 소프트웨어 품질 : 소프트웨어가 기능, 성능 및 만족도에 있어서 명시된 요구사항 및 내재된 요구사항을 얼마나 충족하는 가를 나타내는 소프웨어 특성의 총체 Verification : 소프트웨어가 정확한 요구사항에 부합하여 구현되었음을 보장하는 활동 Validation : 소프트웨어가 고객이 의도한 요구사항에 따라 구현되었음을 보장하는 활동 정적인 방법 : 동료검토 (인스펙션, 워크스루, 데스크체크) / 도구를 이용한 정적 분석 (룰 기반) 규모 관련 지표 라인 수 : 보통 공백을 제외한 라인 수 의미 주석 비율 : 특정 도메인에서 주로 측정 함수 라인 수 : 길면 소스코드 이해의 어려움 복잡도와 테스트 커버리지 지표 순환 복잡도가 높으면 코드 이해가 어려움 자동차 분야 기능 안전.. 2021. 6. 7.
연산자 오버로딩 #include using namespace std; class NUMBOX { private: int num1, num2; public: NUMBOX(int num1, int num2) : num1(num1), num2(num2) { } void ShowNuber() { cout 2021. 5. 29.
안드로이드 하드웨어 서비스 03 텔레포니 프레임워크 (4) 3.5 RIL.java 의 RIL req처리의 예제 텔레포니 프레임워크의 RIL는 RIL데몬과 유닉스 도메인 소켓을 통해 통신하며 모뎀에 서비스를 요청하는 중요한 역할을 수행함. 릴을 이해하려면 RILSender쓰레드와 RILReceiver쓰레드의 동작을 이해함. CallManager, GSMPhone, GsmCallTracker, RILjava, RILSEnder, RILReceiver, RIL데몬. 3.5.1 Phone APP의 텔레포니 프레임워크 API호출 CallController -> PhoneUtils -> CallManager- -> GSMPhone -> GsmCallTracker -> RIL java 현재 phone객체와 발신 전화를 걸 전화번호를 받음. Phone객체는 Phone app .. 2021. 5. 27.