[소프트웨어공학] 기초

양현지·2023년 5월 6일
3

소프트웨어공학

목록 보기
9/11

소프트웨어 공학 관련 지식을 스스로 리마인드 하고자 기록하도록 한다.

0. 개발자로서의 마인드셋

  • 엔지니어는 기본적으로 텍스트 cost-effective를 끊임없이 고려해야함,
  • 개발하는 무언가가 cost-effective하려면 개발자 입장에서는 시간과 사람이 적게들고, 사용자 입장에서는 컴퓨터 리소스를 적게사용하는 것이 cost-effective한 s/w

1. 협업이란?

: 각자 코드 작성하고 합치는 건 협업이 아님, integrating이 쉬운일이 아님. 협업은 모여서 specification을 충분히 분석하고, 디자인(class, function)까지 짜고 그다음에 각자 function을 구현해오는 것. 그리고 합치는 것

2. 일반적 개발의 process

  • Specification
  • Design & implementation
  • Validation(Tetsting)
  • Evolution(Maintenance
  • Integration & Testing

3. S/W Engineering이 왜 필요한가?

@ 혼자 빠르게 작업하는게 쉬울거 같지만 장기간 관점에서 s/w engineering을 하는 것이 더 costless

@ 코드짜는게 개발자가 아님, computer program/configuration files/system documentation/user documentation 이 모든걸 관려해야하는게 developer

@ s/w < scratch , open source등으로 create

@ 개발 과정에서의 requirement changing을 당연하게 받아들이기(다양한 이유로 requirement는 변함, 그에 따라 개발도 수정되어야함을 당연히 받아들이기. 처음 계획한 그대로 갈 순x)
특히 UI의 경우 정답X, 결정권자의 결정 전까지 시시각각 바뀜.

@ 본인이 짠 코드를 검증해야한다 코드의 정확성을 스스로 검증할 방법

  • 이게 가장 어렵더라. 내가 짜고 내가 검증까지 하는게 결코 쉬운 것은 아니나 충분한 CS 지식과 경험은 이를 더 수월하게 해준다. 결론은 많이 배우고 경험할 것^-^

@ 요즘 흔한 코더가 아닌 개발자이다.
다음의 내용등은 개발자로서 생각해볼 만한 자질 들

  • 자기의 발전을 소중히 여길 것.

  • 면밀한 상황 분석, 모든 것을 인지한 상태에서 최적의 솔루션을 제시하고 그 사고과정을 잘 커뮤니케이션 할 것

  • chatgpt를 어떻게 써야 잘쓴걸까?
    (s/w의 지식과 경험이 충분한 사람의 질문은 일반 사람들과 다르다. & 결과(답변) 판단 능력이 중요하다.

    애초에 ai는 학습(딥러닝)으로 생기므로 틀릴 수 있음.
    시간과 노력 saving하려고 쓰는 것.
    인터넷,모바일폰,다음으로 혁신적이지만 결국은 개발 생산성을 높여주는 tool이다. (잘써야해)
    5명이 일할걸 2,3명이 할 수o(단순한 코드 도와줌)=> 점점더 코더가 필요 없다~ (양극화)

  • 동일한 질문도 맥락,어순, 상황에 따라 다른 답변을 하는 Chatgpt

    어떤 어순, 어휘, 맥락일 때 가장 정확한(신뢰성 높은) 답변을 줄 수 있을까? 고민해보기

  • 거절은 예의바르고 신중하고 신속하게
    인간관계 뿐 아니라 할 수 있는 것. 못하는 것에 대해 스스로 판단하는 능력을 기를 것. 내 선택이 틀렸다면 거절은 마지막으로 바로잡을 수 있는 기회이다. 중간에 못하는게 상당히 무책임하다 여겨져 아등바등 끌고가거나 끝까지 책임지려했다. 그러나 최근 아이러니하게 무책임을 통해 책임질 수 있음을 배웠다. 대인 관계에서도 마찮가지.

0개의 댓글