728x90

분류 전체보기 80

003. 비용산정, 일정관리 모형

비용산정 모델 개념 : 소프트웨어 규모파악을 통한 투입자원, 소요시간을 파악하여 실행 가능한 계획을 수립하기 위해 비용을 산정하는 기법 분류 하향식 산정방법 경험이 많은 전문가에게 비용 산정을 의뢰하거나 여러 전문가와 조정자를 통해 산정하는 방식 전문가 판단 델파이 기법 상향식 산정방법 세부적인 요구사항과 기능에 따라 필요한 비용을 계산하는 방식 코드 라인 수(LOC: Lines of Code) Man Month COCOMO 모형 Putnam 모형 FP(Function Point) 모형 LoC 개념 - 소프트웨어 각 기능의 원시 코드 라인 수의 낙관치, 중간치, 비관치를 측정하여 예측치를 구하고 이를 이용하여 비용을 산정 - 측정이 쉽고 이해하기 쉬워 많이 사용 - 예측치를 이용하여 생산성, 노력, 개발..

002. 소프트웨어 개발방법론_2

애자일 방법론 개념 : 소프트웨어 개발방법론의 하나로서 개발과 함께 즉시 피드백을 받아서 유동적으로 개발하는 방법 애자일 방법론 등장 배경 : 기존 개발방법론의 한계를 극복하기 위해 등장 특징 - 프로젝트의 요구사항은 기능 중심으로 정의한다 - 절차와 도구보다 개인과 소통을 중요하게 생각한다 - 작업 계획을 짧게 세워 요구 변화에 유연하고 신속하게 대응할 수 있다 - 소프트웨어가 잘 실행되는데 가치를 둔다. - 고객과의 피드백을 중요하게 생각한다 XP 개념 : 의사소통 개선과 즉각적 피드백으로 소프트웨어 품질을 높이기 위한 방법론 특징 - 1 ~ 3주의 반복(Iteration) 개발 주기 - 5가지 가치와 12개의 실천 항목이 존재 XP 5가지 가치 - 용단의 피존 - 용기 / 단순성 / 의사소통 / 피..

001. 소프트웨어 개발방법론_1

SDLC (Software Development Life Cycle) 요설구테유 - 요구사항 분석 / 설계 / 구현 / 테스트 / 유지보수(비용이 가장 많이 소유) 폭포수 모델 (Waterfall) 개념 : 소프트웨어 개발 시 각 단계를 확실히 마무리 지은 후에 다음 단계로 넘어가는 모델 특징 - 가장 오래된 모델 - 선형 순차적 모형으로 고전적 생명주기 모형이라고도 함 - 모형의 적용 경험과 성공 사례가 많음 - 단계별 정의와 산출물이 명확 - 요구사항 변경이 어려움 프로토타이핑 모델 (Prototyping) 개념 : 고객이 요구한 주요 기능을 프로토타입으로 구현하여, 고객의 피드백을 반영하여 소프트웨어를 만들어가는 모델 특징 - 프로토타입은 발주자나 개발자 모두에게 공동의 참조 모델을 제공 - 프로토..

패스트캠퍼스 챌린지 최종 후기

드디어 이 날이 올까 싶었던 챌린지 최종 후기를 적게 되었습니다. 보시는 분들이 계실지는 모르겠지만!.. 혹시나 강의를 듣게 되시거나 추후 진행하는 챌린지에 참여하시는 분들에게 도움이 되셨으면 합니다. 아이폰 앱 개발자가 되겠다고 마음먹고 나서 어떤 것부터 공부해야 할지 감이 안 잡히던 저는 무작정 인터넷에 검색을 하여 iOS 도서 중 베스트셀러인 Swift 문법책과 앱 만들기 실습 책 두 권을 구매하여 공부했었는데요 당시 기초적인 내용을 포함하고 있는 앱 만들기 실습 책을 다 끝내고 나서 자신감이 붙어 있던 상태였지만 어느 날 문뜩 Swift 문법 공부 중 이렇게 준비해도 되는 걸까 하는 의문이 들었습니다. 주변에 물어볼 iOS 개발자 지인이 없어 구글링을 통해 선배님들의 과정을 찾아보기 시작했고 당연..

패스트캠퍼스 챌린지 50일차

3월 14일 월요일 / 50일 차 Part 5 - CH 05, 06 도서 리뷰 앱, 영화 평점 앱 마무리 Test 개발자가 작성한 코드가 의도한 대로 작동하는지 확인하는 과정 - UI 표시 - UI Layout 설정 - API request - UserDefaults 저장하기 / 가져오기 등등 Unit Test 특정 함수, 메서드의 동작에 대한 테스트 Scene을 테스트 대상으로 실행 UI Test UI Component의 표시와 동작이 의도한 대로 잘 작동하는지 확인하는 Test UI 표시 or UI Action에 대한 테스트 하나의 앱을 테스트 대상으로 실행 class XCUIApplication BDD (Behavior Driven Develop) 시나리오를 기반으로 테스트 케이스를 작성하는 테스트..

패스트캠퍼스 챌린지 49일차

3월 13일 일요일 / 49일 차 Part 5 - CH 08 트위터 앱 만들기 구현 순서 1. 트위터 글 게시 기능 구현하기 2. 피드 화면 구현하기 3. 트윗 상세 화면 구현하기 4. 글 작성 화면 구현하기 5. 프로필 화면 구현하기 6. 에러 메시지 표시 기능 구현하기 7. Unit Test 작성하기 - Test 작성용 파일, class 생성 - Mock 작성 - Unit Test 작성 8. 앱스토어 업로드, 심사, 배포 과정에 대해서 알아보기 9. 앱스토어에 개인 앱 업로드 하기 10. 앱스토어에 개인 앱 심사 신청하기 앱 등록 과정 앱 구현 - TestFlight에 QA용 빌드 배포 - QA 실시 - 앱스토어용 빌드 배포 - 앱 심사 신청 - 심사 통과 후 앱 스토어 공개 MVP Model 기존의..

패스트캠퍼스 챌린지 48일차

3월 12일 토요일 / 48일 차 Part 5 - CH 07 뉴스 앱 만들기 WebView UIWebView (현재는 사용되지 않음) - UIKit 프레임워크에 있는 UIView를 상속하는 class - 메모리 관리 방식이 WKWebView와 다름 - WKWebView에 비해 성능이 좋지 않음 SFSafariView - UIViewController를 상속하는 class - Safari 앱과 동일한 기능을 갖고 있는 ViewController - Safari와 동일한 쿠키, 웹사이트 데이터 등을 공유 WKWebView - WebKit 프레임워크의 class - 메모리가 앱과 별도의 스레드로 관리됨 (웹 페이지에 메모리가 많이 할당되더라도 앱은 죽지 않음) - UIWebView와 비교했을 때, 성능이 좋음..

패스트캠퍼스 챌린지 47일차

3월 11일 금요일 / 47일 차 Part 5 - CH 05 도서 리뷰 앱 마무리 MVP Model 기존의 Model 역할과 같다. 실제적 데이터를 가지고 있고 이것을 Presenter가 소유하고 갱신하는 역할을 한다. View와는 독립되어있다 View iOS의 UIView와 UIViewController가 여기에 속하며 모든 비즈니스 로직은 Presenter에 맡긴다. 그래서 Passive View라고도 불린다 Presenter UIKit을 사용하지 않는 비즈니스 로직을 모두 수행한다. 또 Model의 데이터를 가공해 View에서 보여주기 위한 UI 친화적인 포맥으로 바꾸는 역할도 한다. 장점 기존의 MVC 패턴이 가지고 있는 장점을 유지한 채 보여주는 부분과 비즈니스 로직 부분을 나눠 모듈화의 정도를..

패스트캠퍼스 챌린지 46일차

3월 10일 목요일 / 46일 차 Part 5 - CH 01 내 근처 편의점 찾기 앱 마무리 CLLocationManager - 앱에 대한 위치 관련 이벤트 전달을 시작하거나 중지하는 데 사용하는 객체 - 앱에 위치 서비스를 추가하려면 CLLocationManager을 사용해서 CLLocationManagerDelegate를 구현하고 앱에 필요한 위치 정보에 액세스 할 수 있는 권한을 부여할지 여부를 결정하게 됨 - 사용자가 권한을 거부했을 때 오류처리를 할 수 있음 - 앱에 필요한 승인 상태를 결정할 수 있음(항상 사용, 이번 한 번만 사용, 앱을 실행할 때만 사용) - 사용자의 현재 위치에서 크거나 작은 변화를 추적 - 나침반에서 방향 변경 추적 - 사용자 위치 기반 이벤트 생성 - 근거리 데이터 통..

패스트캠퍼스 챌린지 45일차

3월 9일 수요일 / 45일 차 Part 4 - CH 07 당근마켓 스타일 중고거래 앱 만들기 막혔던 부분 MVVM 역할 및 동작 원리 View iOS는 ViewController까지 View가 됩니다 사용자가 보여지는 View를 생각하면 된다. 유저 인터랙션을 받는 역할, 인터랙션을 받을 시 ViewModel에게 명령을 내립니다. ViewModel View를 표현하기 위해 만들어진 View를 위한 Model View와는 Binding을 하여 연결 후 View에게서 액션을 받고 또한 View를 업데이트합니다 ex) textView에 보여줄 내용을 담당하는 함수 등, View에서 변화가 일어나는 ViewController의 역할을 담당 Model 데이터, 비즈니스 로직, 서비스 클라이언트 등으로 구성 실제..

패스트캠퍼스 챌린지 44일차

3월 8일 화요일 / 44일 차 Part 5 - CH 06 영화 평점 앱 만들기 SwiftLint XCode내에서 Swift 코드 스타일을 통일시킬 수 있도록 도와줌 - class 내의 코드 수가 너무 길면 경고를 띄워줌(코드가 길면 유지보수가 힘들기 때문) - 변수명 뒤에 콜론의 위치 등 스타일을 지정해 줌 - 무의미한 공백을 알려주어 코드 정리를 도와줌 이번 강좌에서 수정한 점(Swiftlint 관련) disabled_rules: - leading_whitespace - trailing_whitespace 내용을 가진 .swiftlint.yml 파일을 추가하여 공백에 오류를 표시하는 swiftlint의 작동에 규칙을 정해줌 Naver Developers의 검색 API 이용 - JSON 파일에서 Dec..

패스트캠퍼스 챌린지 43일차

3월 7일 월요일 / 43일 차 Part 6 - CH 02 화면/기능을 개발하면서 발생할 수 있는 에러 대처 방법 Xcode에서 Build 하고자 하는 기기의 iOS 버전과 Xcode의 최대 서포트 OS 버전이 맞지 않을 때 - Xcode를 업데이트하거나 Xcode의 최대 버전과 맞는 기기에서 Build를 실행 Xcode Project의 최소 서포트 버전에서 사용할 수 없는 코드가 사용되었을 때의 컴파일 에러 - OS 버전별, 실행 코드를 분기 No such module - Product > Clean을 실행 - Xcode 종료 - Build 실행 or - 해당 모듈을 uninstall - Product > Clean을 실행 - uninstall 한 모듈을 다시 install IBOutlet 연결이 끊..

패스트캠퍼스 챌린지 42일차

3월 6일 일요일 / 42일 차 Part 5 - CH 06 영화 평점 앱 만들기 SwiftLint XCode내에서 Swift 코드 스타일을 통일시킬 수 있도록 도와줌 - class 내의 코드 수가 너무 길면 경고를 띄워줌(코드가 길면 유지보수가 힘들기 때문) - 변수명 뒤에 콜론의 위치 등 스타일을 지정해 줌 - 무의미한 공백을 알려주어 코드 정리를 도와줌 Naver Developers의 검색 API 이용 - JSON 파일에서 Decodable을 통해 title, image, pubDate, diretor, actor, userRating의 값을 받아옴 - 공식 도큐멘트에는 userRating이 Integer로 되어있지만 실제로 내려오는 값은 String이므로 개발에 주의 필요 복습할 내용 - API 사..

패스트캠퍼스 챌린지 41일차

3월 5일 토요일 / 41일 차 Part 5 - CH 05 도서 리뷰 앱 만들기 MVP Model 기존의 Model 역할과 같다. 실제적 데이터를 가지고 있고 이것을 Presenter가 소유하고 갱신하는 역할을 한다. View와는 독립되어있다 View iOS의 UIView와 UIViewController가 여기에 속하며 모든 비즈니스 로직은 Presenter에 맡긴다. 그래서 Passive View라고도 불린다 Presenter UIKit을 사용하지 않는 비즈니스 로직을 모두 수행한다. 또 Model의 데이터를 가공해 View에서 보여주기 위한 UI 친화적인 포맥으로 바꾸는 역할도 한다. 장점 기존의 MVC 패턴이 가지고 있는 장점을 유지한 채 보여주는 부분과 비즈니스 로직 부분을 나눠 모듈화의 정도를 ..

패스트캠퍼스 챌린지 40일차

3월 4일 금요일 / 40일 차 Part 5 - CH 04 번역기 앱 만들기 NSAtributedString 텍스트 자체에 스타일(색상, 자간, 행간 등)을 설정할 수 있는 텍스트 타입 [ class NSAttributedString : NSObject ] NSMutableAttributedString NSAttributedString의 특정 범위 NSRange에 다양한 스타일(색상, 자간, 행간 등)을 설정할 수 있는 텍스트 타입 [ class MSMutableAttributedString : NSObject ] 복습할 내용 - Delegate를 이용한 UI 작동 이해 오늘의 공부 후기 오늘은 강의 시간만 4시간가량 되는 번역기 앱을 구현해봤습니다. 앱을 만들어보기 전에는 UI만 보고 간단할 것 같다고..

패스트캠퍼스 챌린지 39일차

3월 3일 목요일 / 39일 차 Part 5 - CH 03 별다방 앱 만들기 HStack, LazyHStack ,List는 Cell의 재사용 여부와 정도에 따라 가장 크게 구분된다(Reuse) HStack 초기화 시점에 모든 View를 생성함 LazyHStack 초기화 시점에 모든 Cell을 생성하지 않음 최대 index 31까지 데이터의 Cell(View)를 생성 List 초기화 시점에 모든 Cell을 생성하지 않음 UITableView와 비슷함 보여질 필요가 있는 Cell(View)만 생성 Cell의 삭제/추가 기능이 있음 @State 화면 상태를 나타내거나 표시할 때 사용되는 타입 String, Int, Bool과 같은 간단한 값을 저장하고 View의 현재 상태를 표시하기 위해 사용 [ ex) @S..

패스트캠퍼스 챌린지 38일차

3월 2일 수요일 / 38일 차 Part 5 - CH 02 코로나19 예방 접종 센터 조회 앱 만들기 내용 요약 Combine - Combine 프레임워크는 시간이 지남에 따라 값을 처리하기 위한 선언적 스위프트 API를 제공한다. - 이러한 값은 여러 종류의 비동기 이벤트를 나타낼 수 있습니다. - 게시자를 결합하여 시간이 지남에 따라 변경될 수 있는 값을 노출시키고, 가입자는 게시자로부터 해당 값을 수신합니다 - Publishers (RxSwift로 비교하자면 Observable) 하나 이상의 Subscriber 인스턴스로 요소를 전달합니다. subscriber의 Input 및 Failure 관련 타입은 게시자가 선언한 Output 및 Failure 타입과 일치해야 합니다. subscriber를 받기..

패스트캠퍼스 챌린지 37일차

3월 1일 화요일 / 37일 차 Part 5 - CH 01 내 근처 편의점 찾기 앱 내용 요약 CLLocationManager - 앱에 대한 위치관련 이벤트 전달을 시작하거나 중지하는데 사용하는 객체 - 앱에 위치 서비스를 추가하려면 CLLocationManager을 사용해서 CLLocationManagerDelegate를 구현하고 앱에 필요한 위치 정보에 액세스 할 수 있는 권한을 부여할지 여부를 결정하게 됨 - 사용자가 권한을 거부했을 때 오류처리를 할 수 있음 - 앱에 필요한 승인상태를 결정할 수 있음(항상사용, 이번 한번만 사용, 앱을 실행할 때만 사용) - 사용자의 현재 위치에서 크거나 작은 변화를 추적 - 나침반에서 방향 변경 추적 - 사용자 위치 기반 이벤트 생성 - 근거리 데이터 통신기기(..

패스트캠퍼스 챌린지 36일차

2월 28일 월요일 / 36일 차 Part 4 중요 내용 전체 복습 내용 요약 SwiftUI 2019년 Apple의 WWDC에서 처음 소개가 되었습니다 기존에는 스토리보드(Storyboard)로 모든 화면의 구축과 흐름을 구성하고 ViewController에서 로직을 구현했지만 SwiftUI는 Swift 언어만으로 간편하고 더 빠르게 사용자 인터페이스를 구현할 수 있게 되었습니다. 선언적 구문을 사용하여 단순하지만 직관적인 구문을 이용하여 화면을 구성할 수 있게 해줍니다 기본적으로 레이아웃에 포함될 컴포넌트와 그 컴포넌트가 속하게 될 레이아웃 매니저의 종류과 속성만 선언해주면 됩니다. 레이아웃의 위치와 컨스트레인트, 렌더링 방식은 swifUI가 효율적인 방법으로 자동으로 처리하게 됩니다. 레이아웃이 선언..

패스트캠퍼스 챌린지 35일차

2월 27일 일요일 / 35일 차 Part 4 - CH 05, 06, 07 RxSwift, RxCocoa, MVVM 복습 내용 요약 RxSwift 구성 요소 - Observable - Rx 코드의 기반 - T 형태의 데이터 snapshot을 '전달' 할 수 있는 일련의 이벤트를 비동기적으로 생성하는 기능 - 하나 이상의 observers가 실시간으로 어떤 이벤트에 반응 - 세 가지 유형의 이벤트만 방출 - Operator - 주로 비동기 입력을 받아서 출력만 생성하기 때문에 퍼즐처럼 자신들끼리 조합하고 결합할 수 있다 - Scheduler Observable - Rx의 심장 - Observable = Observable Sequence = Sequence - 비동기적(asynchronous) - Obse..

728x90