Typical Activities in Software Engineering
- Software Specification(= Requirement Engineering): Customers and engineers define the software to produce and constraints on its operation.
소비자나 공학자가 해당 소프트웨어의 제약이나 조건들을 정의하는 단계입니다. SRS라고 불리는 System Requirement Specification 혹은 Software Requirement Specification이나 여러가지 Hardware Specification, 이전 글에서 말했던 여러가지 품질 속성들을 정의합니다.
- Software Development: The software is designed and programmed. It includes the Architecture Design, Detailed Design and Implementation(+ unit testing)
소프트웨어 개발단계입니다. 이 단계에서는 아키텍쳐 디자인과 구현을 하는 단계로, 이때 구현은 구현 단계에서 진행되는 다양한 유닛 테스트를 포함하는 개념입니다. CTIP혹은 CICD라고 불리는 플랫폼을 사용하는 단계입니다.
http://dslab.konkuk.ac.kr/Class/2024/24SV/Team%20Project/Introduction%20to%20CTIP%20(2021).pdf
- Software Validation: The software is checked to ensure that it is what the customer requires.
소프트웨어 검증단계입니다. 이는 Software V&V(* Verification and Validation)와 Testing(+ unit testing, unit testing은 수시로 하는것)을 포함하는 단계입니다. 이때 Verification은 해당 System이 Spectification에 맞게 만들어졌는지를 확인하는 것입니다. 예를 들어, 해당 System이 사전에 정의했던 보안의 수준은 달성했는지, 특정 하드웨어에서는 돌아가는지, 버그 없이 돌아가는지를 확인합니다. 그리고 Validation은 Verification과 달리 이해관계자의 요구에 맞게 만들어졌는지를 확인하는 것입니다. user acceptency test나 beta test와 같은 예시들이 이에 해당합니다.
- Software Evolution: The software is modified to reflect changing customer and market requirements
소프트웨어 진화단계입니다. 일반적으로 Generic Software에서는 Software Evolution, Customized Software에서는 Software Maintenance라고 합니다. 앞선 세 단계는 계발 단계라고 한다면, 이 단계는 유지 보수 단계로 볼 수 있습니다.
위 4단계를 순서대로 진행하는 것을 Waterfall방식이라고 합니다.
Software Project Failures
The Software Crisis라고 불리는 현상은 크게 두 가지 원인에 의해 발생합니다:
- Increasing system complexity: Larger and even more complex and new systems are required. System must be built and delivered more quickly
늘어나는 시스템의 복잡도입니다. 점점 크고 복잡한 새로운 시스템이 요구되고 시스템은 더 빠르게 만들어지고 배포되야합니다.
- Not use software engineering methods: New software engineering techniques help us to build larger, more complex systems, the demands change. But many companies do not use software engineering
소프트웨어 공학을 사용하지 않는다는 점입니다. 소프트웨어 공학은 크고 복잡하고 변화하는 요구에 대응할 수 있습니다. 하지만 많은 기업들이 이를 사용하지 않습니다.
소프트웨어 공학을 적용하는 것을 통해 위 문제를 해결할 수 있고, 60's 에는 Waterfall모델을 도입해서 많은 문제를 해결했습니다.
Software Engineering Diversity
소프트웨어 공학은 정말 다양합니다. 그 이유는 다음과 같습니다:
- No silver bullet for software engineering: There are many different types of software system and There is no universal set of software techniques applicated to all of these
소프트웨어 공학의 유일한 답은 없습니다. 소프트웨어 공학에는 정말 많은 종류들이 있고, 이런 모든 상황에 적용될 수 있는 범용적인 소프트웨어 기술은 없습니다.
- The software engineering methods and tools used depend on the type of application being developed, the requirements of the customer, and the background of the development team
소프트웨어 공학 방법론과 도구들은 개발하고 있는 소프트웨어의 종류, 고객의 요구사항, 개발 팀의 배경에 따라 달라질 수 있기 때문입니다.
Software Application Types
소프트웨어의 종류는 점점 다양해지고 있으며, 크게 보면 다음과 같은 종류들이 존재합니다:
- Stand-alone applications(ex, 그림판): Application systems that run on a local computer, such as a PC. They include all necessary functionality and do not need to be connected to network
홀로 작동할 수 있는 소프트웨어입니다. 이 종류의 소프트웨어는 PC와 같은 로컬 컴퓨터에서 작동하며, 네트워크에 연결할 필요가 없습니다.
- Interactive transaction-based applications(ex, Web-based System): Applications that execute on remote computer and are accessed by users from their own PCs or terminals, including Web applications such as e-commerce applications
상호작용할 수 있는 소프트웨어입니다. 이 종류의 소프트웨어는 서로 떨어진 컴퓨터에서 실행되며, 유저의 PC들에서 접근 가능합니다.
- Embedded control systems: Software control systems that control and mange hardware devices
임베디드 통제 소프트웨어입니다. 이 종류의 소프트웨어는 하드웨어 장비를 통제하거나 관리합니다.
- Batch processing systems: Business systems that are designed to process large numbers of individual inputs to create corresponding outputs in large batches
배치 처리 소프트웨어입니다. 이 종류의 소프트웨어는 많은 양의 개별적인 입력들을 처리해 이에 상응하는 많은 양의 출력을 만드는 소프트웨어입니다. 주간/월간 청구, 급여 계산과 같은 소프트웨어가 이에 해당합니다.
https://aws.amazon.com/ko/what-is/batch-processing/
- Entertainment systems(ex, game): Systems that are primarily for personal use and which are intended to entertain the user
엔터테인먼트 소프트웨어입니다. 이 종류의 소프트웨어는 우선적으로 유저가 즐기도록 유도된 소프트웨어를 말합니다. 닌텐도와 같은 소프트웨어가 이에 해당합니다.
- Systems for modelling and simulation: Systems that are developed by scientists and engineers to model physical processes or situations, which include many, separate, interaction objects
모델링과 시뮬레이션을 위한 소프트웨어입니다. 이 종류의 소프트웨어는 물리적인 상황이나 과정을 모델링하기 위해 과학자들이나 공학자들에 의해 만들어진 소프트웨어입니다. M&S가 이에 해당합니다.
https://coding-groot.tistory.com/38
- Data collection systems: Systems that collect data from their environment using a set of sensors and send that data to other systems for processing
데이터 수집 소프트웨어입니다. 이 종류의 소프트웨어는 여러 종류의 센서를 이용해 정보를 수집하고 처리를 위해 그 정보를 다른 시스템에 전달합니다.
- Systems of systems: Systems that are composed of a number of other software system
시스템의 시스템입니다. 많은 양의 소프트웨어 시스템으로 구성된 시스템을 말합니다. CPS(* Cyber Physical System)가 이에 해당합니다.
'[학교 수업] > [학교 수업] 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주차 (2) (0) | 2024.09.13 |
[Software Engineering] - 1주차 (0) | 2024.09.06 |