[네트워크 보안] 3장. Software Development and Design

샤이니·2021년 10월 25일
0

네트워크 보안

목록 보기
1/3

Software Development

Software Development Life Cycle (SDLC)

SDLC는 아이디어에서 시작하여 전달로 끝나는 Software development Process이다.

  1. Requirements and Analysis Phase
  2. Design
  3. Implementation
  4. Testing
  5. Deployment
  6. Maintenance
  • Waterfuall : 고전적
    다음 단계로 진행하기 전에 마지막 세부 사항까지 SDLC의 각 단계를 완료하고 이전 단계로 돌아가지 않고 모든 것을 기록하는 것.

  • Agile development
    more adaptive, flexible method

Requirements and Analysis Phase

여러 계층의 질문에 답하는 것.

  • stakeholder의 현재 상황, 요구 사항 및 제약 조건, 현재 인프라 등을 탐색하는 것으로 시작.
  • 문제가 더 잘 정의된 후에는 더 구체적인 문제를 탐색함
  • 소프트웨어 자체를 구축하기 위한 아키텍처 옵션을 평가함
  • 요구 사항을 수집한 후 팀은 결과를 분석하여 다음을 결정
    • 이러한 요구 사항에 따라 소프트웨어를 개발할 수 있으며 예산 내에서 수행할 수 있습니까?
    • 개발 일정에 위험 요소가 있습니까? 그렇다면 위험 요소는 무엇입니까?
    • 소프트웨어는 어떻게 테스트됩니까?
    • 소프트웨어는 언제 어떻게 제공됩니까?
  • 고전적인 waterfall 방식에선 SRS(Software Requirements Specification) documents 생성을 제안함.
    • 소프트웨어 요구 사항 및 범위를 명시하고 stakeholder와 함께 이를 세심하게 확인하는 것

Design and Implementation Phases

  • Design
    • requirements & analysis 단계의 SRS document를 입력으로 사용함
      • SRS를 기반으로 sw 설계
  • Design 단계가 끝난 후, HLD(High-Level Design) 및 LLD(Low-Level Design) document를 만듬.
    • LLD는 개별 구성 요소의 아키텍쳐, 이들 간 통신 시 사용되는 프로토콜을 훨씬 자세히 설명하고 필요한 class 및 design의 기타 측면을 열거함.
  • Implementation (코딩 or 개발 단계라고도 함)
    • design 단계의 HLD와 LLD를 입력으로 사용함
    • 모든 구성 요소와 모듈은 이 단계에서 build 되므로 Life Cycle 중 가낭 긴 단계임.

Testing, Deployment, and Maintenance

  • Test
    • Integraion testing
    • Performance testing
    • Security testing
  • Deployment 전개
    • production enviroment에 software를 installed 해봄
  • Maintenance
    • 고객 지원
    • 프로덕션에서 발견된 버그 수정
    • 소프트웨어 개선 작업
    • 고객의 새로운 요청 수집

Software Development Nethodologies 소프트웨어 개발 방법론

  • Waterfall
  • Agile
  • Lean

Waterfall

  • System requirements
  • Software requirements
  • Analysis
  • Program Design
  • Coding
  • Testing
  • Operations

Agile

  • Agile의 가치
    • 프로세스 및 도구에 대한 개인 및 상호 작용
    • 포괄적인 문서보다 작업 소프트웨어
    • 계약 협상을 통한 고객 협업
    • 계획에 따른 변경에 대한 대응
  • 12가지 원칙
    • Customer focus
    • Embrace change and adapt
  • Sprint : SDLC의 빠른 반복
  • Backlog
    - 백로그를 생성하는 것은 제품 소유자의 역할입니다. 이 백로그는 우선 순위 목록에 있는 소프트웨어의 모든 기능으로 구성됩니다. 백로그의 기능은 요구 사항 및 분석 단계의 결과이며 반드시 즉시 릴리스에 포함될 필요는 없는 기능을 포함합니다.
  • User stories
    • 기능이 우선 순위 목록의 상단에 가까워지면 사용자 스토리라는 더 작은 작업으로 나뉨.
    • 각 User stories는 single 팀이 sigle 스프린트 내에 완료할 수 있을 만큼 작아야 함.
  • Scrum team
    • Scrum team은 10명보다 크지 않아야 하지만 Sprint 내에서 User stories를 완료할 만큼은 커야함.
    • 매일 15분이 넘지 않는 standup(=meeting)을 해야함. : 각자가 뭘 하는지 sync하는 것임.
  • Agile Method
    • Agile Scrum
      • 짧은 기간 동안 매일 만나 반복적인 sprint로 작업하는 소규모의
    • Lean
      • waste effort를 제거하는 것에 중점을 둠

Lean Software Development

모든 waste를 eliminate해서 최소화하고, 고객에 대한 가치를 최대화 하는데 중점을 둠.

  • Eliminate waste 낭비 제거
    • 7가지 waste
      • Partially Done Work
      • Extra Processes
      • Extra Features
      • Task Switching
      • Motion
      • Waiting
      • Defects
  • Amplify learning 학습 확대
    • 짧은 sprint로 learning 확대함. 더 많은 반복을 통해:
      • Developers learn faster
      • Customers can give feedback sooner
      • 기능을 조절하여 customer에게 더 만은 value를 제공할 수 있음.
  • Decide as late as possible 최대한 늦게 결정
  • Deliver as fast as possible 최대한 빨리 전달
  • Empower the team 팀의 역량 강화
  • Build integrity in 무결성 구축
  • Optimize the whole 전체 최적화

Software Design Patterns

Version Control Systems

Coding Basics

Code Review and Testing

Understanding Data Formats

0개의 댓글