Fundamentals of Software Engineering
Fundamental principles applicalbe to all types of software system, irrespective of the development techniques used:
개발 테크닉과 관계없이 모든 종류의 소프트웨어 시스템에 적용가능한 기본 원칙은 아래와 같습니다:
- "System should be developed using a managed and understood development process. Of course, different processes are used for different types of software."
시스템은 이해 가능하고 관리되는 개발 프로세스에 의해 개발되어야합니다. 당연히 소프트웨어의 종류에 따라 개발 프로세스는 달라야합니다. SLDC(* Software Development Life-Cycle), Development Process, Agile, Dev/Ops 와 같은 구조나 방법론을 이해해야 합니다.
- "Dependability and performance are important for all types of systems."
의존 가능성과 성능은 모든 종류의 시스템에서 중요합니다. 즉, 앞서 봤었던 Software Quality가 중요합니다.
- "Understanding and managing the software specification and requirements are important."
소프트웨어 스펙과 요구사항을 이해하고 관리하는 것은 매우 중요합니다. 이는 개발 단계에서 Requirments Engineering이 중요한 단계임을 보여줍니다.
- "Where appropriate, you should reuse software that has already been developed rather than write new software."
새로운 소프트웨어를 작성하는 것보다는 이미 작성되어있는 소프트웨어를 재사용하는 것이 적절합니다. 이는 Software Reuse와 더 나아가 Open-Source Software의 중요성을 보여줍니다.
A Newcomer: Web-based Software Engineering
The Web is now a platform for running various application.
웹은 다양한 어플리케이션을 작동시키는 플랫폼입니다. 웹은 다음과 같은 특징을 갖습니다:
- Web services allow application functionality to be accessed over the web
웹 서비스는 기능적으로 웹 위에 어플리케이션이 있는 것을 허용합니다.
- Cloud computing enables applications run remotely on the 'cloud'
클라우드 컴퓨팅은 원격으로 어플리케이션을 클라우드 위에서 동작하는 것을 허용합니다.
이런 Web-based System들을 기본적으로 Complex distributed system입니다. API들을 비롯한 많은 인터페이스를 사용하기 때문에 매우 복잡한 분산 시스템입니다. 이런 Web-based System은 아래와 같은 특징들을 갖습니다:
- Software reuse: when building these system, you think about how you can assemble them from pre-existing software components and systems
소프트웨어 재사용입니다. 웹 기반 시스템들은 기본적으로 Stand-alone 시스템이 아니기 때문에 처음부터 작성하지 않고 이미 존재하는 소프트웨어들을 어떻게 모을까 하는 생각을 먼저하게 됩니다.
- Incremental and agile development: web-based systems should be development and delivered incrementally
빠르고 Agile한 개발입니다. 웹 기반 시스템은 빠르게 개발되고 배포됩니다.
- Service-oriented systems: Software may be implemented using service-oriented software engineering, where the software components are stand-alone web services.
서비스 지향 시스템입니다.
- Rich Interfaces: Interface development technologies such as AJAX and HTML5 have emerged that support the creation of rich interfaces within a web browser
다양한 인터페이스입니다. AJAX나 HTML5같은 인터페이스 개발 기술들은 웹 브라우저를 통해 다양한 인터페이스들을 지원합니다. 즉, 브라우저를 통해 정말 많은 Interfaces들에 접근할 수 있다는 점입니다.
10 FAQs about Software Engineering
- What is software? : Computer programs and associated documentation. Software products may be developed for a particular customer or may be developed for a general market.
소프트웨어는 컴퓨터 프로그램과 관련된 문서들을 포함하는 개념입니다. 이는 특정 고객이나(* Customized Software) 일반 시장(* Generic Software)을 위해 만들어집니다.
- What are the attributes of good software?: Good software should deliver the required functionality and performance to the user and should be maintainable, dependable and usable.
좋은 소프트웨어의 특성들은 사전에 요구된 요구사항들과 성능을 충족시키고, 유지보수성, 의존가능성(* 보안등을 포함하는 개념), 사용성을 충족시켜야합니다.
- What is software engineering?: Software engineering is an engineering discipline that is concerned with all aspects of software production.
소프트웨어 공학은 소프트웨어 생산에 모든 측면에 대한 규율입니다.
- What are the fundamental software engineering activities?: Sofrware specification, software development, software validation and software evolution.
waterfall모델에 나오는 단계들이 필수적인 단계들입니다.
- What is the difference between software engineering and computer science?: Computer science focuses on theory and fundamentals. Software engineering is concerned with the practicalities of developing and delivering useful software
CS는 이론이나 기반들에 집중하는 반면, SE는 소프트웨어의 개발이나 배포에 실질적인 측면에 집중합니다.
- What is the difference between software engineering and system engineering?: System engineering is concerned with all aspects of computer-based systems development including hardware, software and process engineering. Software engineering is part of the more general process.
System Engineering은 하드웨어와 소프트웨어, 개발 과정에 관한 공학 부분까지 포함하는 개념이지만, Software Engineering은 일반적인 과정의 부분입니다.
- What are the key challenges facing software engineering?: Coping with increasing diversity, demands for reduced delivery times and developing trustworthy software.
소프트웨어 공학이 마주하고 있는 도전은 시대에 따라 달라집니다. 80s에는 The Software Crisis가 있었고, 최근에는 AI가 있습니다.
- What are the costs of software engineering?: Roughly 60% of software costs are development costs, 40% are testing costs. For custom software, evolution costs often exceed development costs.
소프트웨어 공학에서의 비용은 대략 개발에 60%, 테스트에 40%가 듭니다. 하지만 유지보수 비용은 개발과 테스트 비용에 비해 굉장이 많습니다.
- What are the best software engineering techiques and methods?: While all software projects have to be professionally managed and developed, different techniques are appropriate for different types of system. You can't. ,therefore, say that one method is better than another.
최고의 소프트웨어 공학 기술이나 방법론은 없습니다. 많은 시스템이 있고, 그 시스템들에 맞는 다양한 방법론들이 있습니다. 어느 방법이 다른 방법들보다 낫다고 말할 수 없습니다.
- What differences has the web made to software engineering?: The web has led to the availablity of software services and the possibility of developing highly distributed service-based system. Web-based systems development led to the advances in programming languages and software reuse.
웹은 소프트웨어 서비스의 적용과 매우 분산된 서비스 기반 시스템을 가능하게 만들었습니다. 웹 기반 시스템들은 프로그래밍 언어와 소프트웨어 재사용에 진보를 이끌었습니다.
'[학교 수업] > [학교 수업] Software Engineering' 카테고리의 다른 글
[Software Engineering] 4주차 (2) (1) | 2024.09.27 |
---|---|
[Software Engineering] 4주차 (1) (0) | 2024.09.23 |
[Software Engineering] 3주차 (2) (0) | 2024.09.20 |
[Software Engineering] 2주차 (1) (0) | 2024.09.09 |
[Software Engineering] - 1주차 (0) | 2024.09.06 |