Software Quality에 대하여

요즘 📖 "가상 면접 사례로 배우는 대규모 시스템 설계 기초" 책을 많이 보더군요. 저도 재미있어 보여서 구입해서 봤는데요. 📍"9장 웹 크롤러 설계" 에서 꽤 재미있는 부분을 발견했어요. 좋은 웹 크롤러가 만족시켜야 할 아래의 속성들에 대해 주의를 기울여야 한다 것입니다. ✔️규모의 확장성: 거대한 웹 환경에서 병행성(Parallelism)을 이용, 효과적으로 크롤링을 한다. ✔️안정성 (Robustness): 크롤러는 비정상적인 입력이나 환경에도 잘 대응해야 한다. ✔️예절 (Politeness): 크롤러가 너무 짧은 시간 동안 너무 많은 요청을 보내지 않는 것 ✔️확장성 (Extensibility): 새로운 형태의 콘텐츠 지원이 쉬워야 한다. 이 속성들은 사실상 웹 크롤링 뿐만 아니라 S/W 품질을 얘기할 때도 상통하는 얘기들입니다. 위 속성의 일부는 소프트웨어 공학 수업에서 한번 즈음 들어보셨거나, Code complete책에서 스치듯 보셨을 수도 있습니다. 저도 최근 지속 가능한 안정적인 서비스에 대한 고민이 커서 이 아티클에서 한번 좋은 S/W, IT서비스 만들기 위한 속성, 특성들을 정리 해보려합니다. 📍 좋은 IT서비스, S/W 품질 유지 위한 속성들 ✅ 정확성 (Correctness): 예상대로 잘 동작하는가? ✅ 신뢰성(Reliability): 유저가 이 서비스를 믿고 의지 할수 있는가? ✅ 안정성(Robustness): 예상치 못한 환경, 이상한 입력에도 정상적으로 잘 동작하는가? ✅ 효율성(Performance): 생산성과 직결, 시간, 공간적 효율 의미 ✅ 생산성(Productivity): 원하는 기능이나 서비스가 요구하는 수준으로 생산하는가? ✅ 유저 친밀성(User friendliness): 유저가 사용하기 쉬운가? ✅ 검증가능성(Verifiability): 검증 가능한가? ✅ 유지보수성(Maintainability): 기능을 확장, 변경, 보수하기 쉬운가? ✅ 재사용성(Reusability): 새로운 서비스나 제품에 기능을 재 사용할 수 있는가? ✅ 이식성(Portability): 다른 환경에서도 작동하게 할수 있도록 시스템이 잘 구성되어 있는가? ✅ 이해성(Understandability): 시스템 구성, 코드 수준이 이해 편의성과 일관성을 가지고 있나? 가독성(Readability)과 연관됩니다. ✅ 상호운용성(Interoperability): 기존 시스템들과 유기적으로 잘 작동하는가? ✅ 적시성(Timeliness): 제한된 시간에 맞춰서 제품을 제공할 수 있는가? ✅ 시인성(Visibility): 개발 과정이 잘 보이도록 문서화 등을 통한 노력을 했는가? 참 많은 속성들이 나열 되었지만, 결국에는 지속가능한 견고한 서비스를 만들기 위한 목적인거죠. 우리는 알게 모르게 위 속성들을 고려해서, 코드 리뷰를 통해 시스템 코드와 구조를 최적화하고, 많은 테스트를 하고, 발생할수 있는 많은 예외들을 핸들링하고 처리해왔죠. 때로는 위 속성들이 개발과정에서 상충되거나 상호보완적일때도 있을거예요. 상황에 맞는 적절한 결정을 하는것은 결국 개발자의 몫이고, 이는 결정하는 개발자의 경험과 지식이 많이 좌우하게 될겁니다. (많이 어렵겠죠.) 위 리스트 언급된 속성들에 대해서 늘 고민해야하는건, 좋은 품질의 서비스를 만들기 위한 노력을 해야하는건 어쩔수 없는 개발자의 숙명(?)인것 같습니다.😅 🔽 참고 https://velog.io/@allocproc/소프트웨어-품질-mtk5coqesy https://ggang-tong.tistory.com/entry/소프트웨어공학소프트웨어-품질의-특성

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2022년 11월 30일 오후 3:40

댓글 0