카테고리 없음

[프로세스 기반의 소프트웨어 품질] Part 1 - 소프트웨어에 대한 인식

happyst 2025. 4. 22. 09:57
기본적 생각의 공유
  • 용어에 대한 정의, 지켜야할 표준, 참여자의 역할 → 정하고 공유하기
  • 요구사항 분석, 소프트웨어 개발, 소프트웨어 유지보수 등의 기준선을 정하여 일한다
  • 소프트웨어: 프로그램, 설계, 데이터를 포함하여 아우르는 개념
  • (법적으로) 소프트웨어: 프로그램, 데이터, 설계도 (비가시성 특성 보완)
데이터와 정보
  • 데이터를 가공한 것이 정보
  • 프로그램은 데이터가 있어야 진정한 개발 의미가 있다.
  • 쓰레기 데이터 판단 기준: 신뢰성, 일관성, 무결성
소프트웨어 개발에서 피할 것들
  • 개발자를 세부적으로 나눠보자면:
    • 업무를 분석하는 Business Analyst, Business Designer
    • 구조 설계자 Software Architect
    • 소프트웨어를 설계하는 시스템 설계자 Application System Designer
    • 데이터 설계자 Data Architect
    • 소프트웨어 설계를 구현하는 프로그램 개발자 Developer, Builder, Coder
    • 데이터 설계를 구현하는 데이터베이스 관리자 Database Administrator
  • 해커 모델 개발 방식: 설계, 알고리즘 정리와 무관하게 바로 프로그램 코딩에 들어가는 것 → 스파게티 코드 발생
  • Coding and Fix 모델: 소프트웨어 개발에 시행착오의 방식을 적용하는 것
  • Coding and Pray 모델: 테스트를 제대로 하지 않고 배포하는 것
소프트웨어를 부르는 말들
  • 시스템: 여러 소프트웨어를 모아서 하나의 큰 소프트웨어를 구성하는 것
  • 플랫폼: 여러 사람들이 참여하는 데이터의 거래 처리를 위해 만들어 놓은 시스템. 주로 외부로 공개되는 소프트웨어 시스템. OpenAPI를 통해 플랫폼과 다른 소프트웨어가 통합되어 서로 데이터를 주고받음.
  • 시스템 소프트웨어: 윈도우, 리눅스, 유닉스, 안드로이드 등의 OS
  • DBMS: DB 관리를 위한 시스템 소프트웨어
  • 응용 소프트웨어: 모바일 애플리케이션 등의 일반적으로 사용되는 소프트웨어
소프트웨어 프로세스
  • 소프트웨어 개발과 관리에 대한 기본 원칙과 과정
  • 소프트웨어 프로세스의 4단계:
    1. 소프트웨어 명세 (분석/설계)
    2. 소프트웨어 개발
    3. 소프트웨어 검증 (테스트)
    4. 소프트웨어 진화 (유지보수)
소프트웨어의 실버블렛
  • 소프트웨어의 만병통치약인 은총탄은 없다!!
  • 하지만 다양한 방법으로 소프트웨어 개발 과정에서 나오는 버그, 에러, 오류 등의 품질 문제를 해결하려는 노력은 계속 되고 있다
소프트웨어 공학의 필요성
  • 소프트웨어 공학: 소프트웨어 문제에 대해 공학을 적용한 학문
  • 주요 목표: 소프트웨어 제품의 품질 향상, 생산성, 사용자 만족도 증진
  • 품질이 좋은 소프트웨어를 최소의 비용으로 계획된 일정에 맞추어 개발할 수 있도록 연구하는 학문
  • 소프트웨어 공학의 주요 측면 3가지: 품질, 비용, 납기
소프트웨어 공학 딜레마
소프트웨어 개발 생산성
  • 비용은 생산성 이라는 지표로 표현 가능
  • 생산성을 올리기 위한 고려 사항들:
    - 개발 표준: 표준 템플릿을 공유
    - 선도 개발: 공통 기능을 개발 후 재사용 (IDE, 스켈레톤 프로그램, ... )