9 ประเภทของการพัฒนาซอฟต์แวร์

การพัฒนาซอฟต์แวร์ คือการประยุกต์ใช้วิทยาการคอมพิวเตอร์ใดๆ (การเขียนโปรแกรมคอมพิวเตอร์) ในการสร้าง ใช้งาน และบำรุงรักษาส่วนประกอบซอฟต์แวร์

มีโครงการพัฒนาซอฟต์แวร์หลายประเภท บางโครงการมีความมั่นคงและบางโครงการก็เกิดขึ้นใหม่เพื่อรองรับเทคโนโลยีรูปแบบใหม่ (เช่น อุปกรณ์สวมใส่หรือระบบคลาวด์) แม้แต่การเปลี่ยนแปลงการพัฒนาซอฟต์แวร์ประเภทที่เป็นที่ยอมรับมากที่สุด เช่น วิธีการ เฟรมเวิร์ก ภาษาโปรแกรม เครื่องมือและแนวทางปฏิบัติในการพัฒนาซอฟต์แวร์ก็เกิดขึ้น

ผมจะสรุปการพัฒนาซอฟต์แวร์เฉพาะ 9 ประเภท ได้แก่

  1. Web application development
  2. Mobile application development
  3. Data science
  4. Video game development
  5. Desktop software development
  6. Wearables software development
  7. Cloud computing
  8. DevOps
  9. Embedded systems development

มาดูวิศวกรรมซอฟต์แวร์แต่ละประเภทกันว่ามีรายละเอียดอะไรบ้าง

1.Web Application Development

เว็บแอปพลิเคชัน (เว็บแอป) เป็นแอปประเภทใดก็ตามที่เข้าถึงได้ผ่านอินเทอร์เน็ตเบราว์เซอร์บนสมาร์ทโฟน แล็ปท็อป แท็บเล็ต เดสก์ท็อป หรืออุปกรณ์อื่นๆ ที่เปิดใช้งานอินเทอร์เน็ต เว็บแอปต้องใช้เบราว์เซอร์และการเชื่อมต่ออินเทอร์เน็ต แต่ไม่จำเป็นต้องดาวน์โหลดหรืออัปเดตเพื่อให้ผู้ใช้เข้าถึงได้ แตกต่างจากเว็บไซต์ที่ค่อนข้างคงที่และเรียบง่าย เว็บแอปเป็นไดนามิก โดยเปลี่ยนการแสดงผลตามอินพุตหรือการกระทำของผู้ใช้

ในสถาปัตยกรรมแอพมือถือ มีทั้งส่วนหน้าและส่วนหลัง (เรียกอีกอย่างว่าส่วนหน้าและส่วนหลัง หรือส่วนหน้าและส่วนหลัง) ซึ่งแต่ละส่วนต้องการการพัฒนาซอฟต์แวร์ที่แตกต่างกัน

Front-End Development

The front-end (client-side) contains all the elements that present the web app to the user in the browser. The frontend is developed with HTML, CSS, and JavaScript, with frameworks providing basic templates and components.

Back-End Development

The back-end (server-side) refers to everything that lives on the server; the workings or backbone of the web app. The back-end is quite extensive, featuring the database, web server, operating system, framework, and server-side languages including Python, PHP, Swift, Objective-C, JavaScript, Ruby, Kotlin, C#, C++, GO, and Dart.

Outside of coding, there are two specialized areas of back-end development:

Database Development

The process of developing a database – the system for storing and accessing electronic data, which can include your web app code as well as collected data. A database developer should have knowledge of building and managing data in popular systems such as MySQL, MongoDB, Microsoft SQL Server, Oracle, or Redis.

API Development

APIs (Application Programming Interface) is software which allows two applications to speak together, usually creating a two way connection between web services and web servers that allows for data to be transferred, interpreted, and displayed in a readable way. An API developer creates a bridge between two systems (how it works, what it accesses) and leverages programming languages of the platform, device, service, or site in question.

Effective use of APIs can support innovation and growth, allowing organizations to tap into and connect systems to provide internal and external value.

Full-Stack Development

When a developer is “full-stack,” this refers to the ability to work on all aspects of the product. A full-stack developer is adept at both front-end development and back-end development rather than specializing knowledge in one aspect of development over the other. To be a full-stack developer, one must have knowledge of many different languages, frameworks, and system designs.

A full-stack development approach can be highly beneficial, providing end-to-end oversight and continuity over development, which can save time and money. However, if an organization places too much on one or two developers, work can pile up and lead to delays or risk points if that employee leaves or has time away.

Progressive Web Apps

A progressive web app (PWA) is a website that resembles and behaves like a mobile app, embedded within an application shell. A PWA is universal across devices and operating systems and requires little in the way of storage, with some offline functionality available with the help of caching. While a PWA may lack some features that are possible on native apps, they boast a load time as much as 15x faster than native apps.

Both mobile app development and web development development practices come into play when building a progressive web app, but as a front-end specific focus, developers need strong skills in HTML, JQuery, JavaScript, and CSS.

2. Mobile Application Development

การพัฒนาแอปพลิเคชั่นมือถือ (การพัฒนาแอพมือถือ) คือการออกแบบและสร้างแอพพลิเคชั่นซอฟต์แวร์ที่ต้องดาวน์โหลดไปยังอุปกรณ์ของผู้ใช้เพื่อใช้งาน โดยทั่วไปแล้ว แอพมือถือเหล่านี้ต้องอาศัยการเชื่อมต่ออินเทอร์เน็ตเพื่อเข้าถึงทรัพยากรระยะไกล (เช่น Instagram ต้องการการเชื่อมต่อเพื่อโหลดเนื้อหาใหม่) แม้ว่าแอพจำนวนมากจะมีความสามารถแบบออฟไลน์ (เช่น เกมจำนวนมากสามารถเล่นแบบออฟไลน์ได้)

เนื่องจากมีอุปกรณ์และระบบปฏิบัติการมากมายเหลือเฟือ การทำเช่นนี้จะเป็นการสร้างการตัดสินใจว่าแอปพลิเคชันควรเน้นที่อุปกรณ์หรือแพลตฟอร์มเดียว (เช่น iOS หรือ Android) หรือควรสร้างแอปพลิเคชันให้ทำงานในแพลตฟอร์มเป้าหมายใดๆ หรือไม่ มีข้อดีและข้อเสียสำหรับแต่ละวิธีดังที่อธิบายไว้ด้านล่าง

Native App Development

When a mobile app is “native,” it is designed specific to each platform such as iOS, Android, Windows, Symbian, or any of the more obscure platforms. Native app development uses programming languages, tools / frameworks that are specific to each platform; Objective-C or Swift for iOS, Java or Kotlin for Android, for example.

A native app will tap into platform-specific features, often providing an experience that is tailored to what a user comes to expect from their device, both in terms of performance as well as visuals. On the other hand, native development can come at a much higher cost if an app needs to target more than one platform as this will require a development team for each platform. Over time, this can create discontinuities between apps and user experiences, which is a consideration as consumers grow to expect multi-channel / omnichannel experiences.

Cross-platform Development

Cross-platform development seeks to generate an app that reaches out to as many brand followers as possible by covering a wide number of end devices during the programming and creation process. Cross platform apps have a lower cost to development, but may not access all device APIs or meet the UI expectations of each device. Some lags in performance are expected.

Cross-platform apps are ideally suited to meet the emerging demands of consumers for multi-channel / omnichannel experiences that provide a fluid experience across devices and channels.

Popular frameworks for developing cross-platform mobile apps are Flutter, React Native and Xamarin.

Hybrid Development

Hybrid development is the development of an app that attempts to marry the benefits of native apps with the flexibility of cross-platform apps. In technical terms, a hybrid app is a web application put into a native shell that must be downloaded to the user’s device. A hybrid app can tap into native elements for improved user experience.

Hybrid apps are easier and faster to develop than native apps, but the combination of cross-platform development (for the bulk of the codebase) and native development does add more time and can lead to performance issues.

3. Data Science

วิทยาศาสตร์ข้อมูลเป็นคำกว้างๆ ที่ใช้เพื่ออ้างถึงการใช้วิธีการทางวิทยาศาสตร์เพื่อดึงความรู้จากข้อมูลที่มีโครงสร้างและไม่มีโครงสร้าง วิทยาศาสตร์ข้อมูลผสมผสานวิทยาการคอมพิวเตอร์เข้ากับคณิตศาสตร์และความเฉียบแหลมทางธุรกิจ ซึ่งมักใช้ปัญญาประดิษฐ์หรือการเรียนรู้ของเครื่อง วันนี้ เขตข้อมูลวิทยาศาสตร์ข้อมูลคาดว่าจะเติบโตทุกปีในอัตรา 28% ซึ่งเป็นหนึ่งในพื้นที่ที่เติบโตเร็วที่สุดของการพัฒนาซอฟต์แวร์

AI

Artificial intelligence (AI) is an umbrella term for any software that can understand, reason, and learn through experience. The artificial intelligence market is currently valued at over $62.35 billion, growing at a 40.2% CAGR with examples across manufacturing (robots), automotive, healthcare, social media, consumer technology – and beyond. Common examples are the iRobot vacuum, Tesla’s self-driving capabilities, web searches, or even the autocorrect on your phone.

Machine Learning

Machine Learning is a form of AI whose focus is on the improvement of computer algorithms over time, through experience and the use of data. Machine learning is a highly mathematical field.

Supervised Learning

Supervised learning is used for predictive models, pre-defining the pairing between inputs and desired outputs. This training data combined with a learning algorithm can help predict outputs with new inputs. Examples include classification and regression.

Unsupervised Learning

Unsupervised learning is used for pattern and structure recognition, starting with a set of data that contains only inputs and whose goal is to find a structure (grouping, cluster) in the data points, then reacting to the presence or absence of those commonalities in future data.

Deep Learning

Deep learning is a subset of both machine learning and AI, one that leverages neural networks to provide a non-linear transformation of data. Deep learning is ideally suited for more complex challenges. Deep learning requires more training to “feed and build” this kind of system.

4. Video Game Development

การพัฒนาวิดีโอเกมไม่ได้จำกัดอยู่แต่ในสตูดิโอขนาดใหญ่อีกต่อไป ด้วยเอ็นจิ้นเกมที่พร้อมใช้งาน ซึ่งเป็นเฟรมเวิร์กที่สนับสนุนการพัฒนาวิดีโอเกม

Lumberyard

Developed by Amazon, Lumberyard is a free cross-platform game engine based upon CryEngine, still in beta since its March 2018 launch. Lumberyard can be used to build games for Windows, PlayStation 4, XBox One, and with limited support for iOS and Android. Lumberyard is written in C++ and Lua.

Since it is developed by Amazon, Lumberyard works seamlessly with Amazon’s Web Services (AWS).

Unreal

Developed by Epic Games, Unreal Engine was first used for the 1998 game of the same moniker. Since then, Unreal has branched beyond first-person shooter games to offering a variety of 3D games, specifically for PC and console games. Unreal is written in C++ and is downloaded for free with commercial use supported in a royalty model. Unreal has been used for popular games such as Fortnite.

Unity

Developed in 2004 by Unity Technologies, Unity is a comprehensive game engine that supports 2D, 3D and VR (virtual reality) games for Mac OS, Microsoft Windows, console, and web browsers. Unity is written in C++ and C# and has been used for popular games such as Pokemon Go and Call of Duty.

5. Desktop Software Development

การพัฒนาซอฟต์แวร์เดสก์ท็อปมุ่งเน้นไปที่ซอฟต์แวร์ที่ติดตั้งและทำงานบนเดสก์ท็อป (หรือแล็ปท็อป) แบบโลคัล โดยมีหรือไม่มีการเชื่อมต่ออินเทอร์เน็ต แม้ว่าแอปมือถือและเว็บอาจมีอิทธิพลต่อแนวการพัฒนาในปัจจุบัน แต่ซอฟต์แวร์เดสก์ท็อปยังคงมีบทบาทสำคัญ

Windows Development

Development of system software, applications, or frameworks for Windows development requires a knowledge of C#.

macOS Development

macOS and iOS apps are developed using Swift (Apple), Python, or Java. Swift first appeared in 2014, replacing the earlier language of Objective C.

Linux Development

Linus desktop market share hovers between 1.74 and 2.18%, so it is not common to develop for Linux where market share is a goal. That said, Android is based upon the Linux kernel and this popularity is spiking growth in the Linux desktop market. Most programming languages can support Linux development.

6. Wearables Software Development

เทคโนโลยีที่สวมใส่ได้ (wearables) เป็นอุปกรณ์ซอฟต์แวร์ประเภทใดก็ได้ (ฮาร์ดแวร์ + ซอฟต์แวร์) ที่สามารถสวมใส่บนร่างกายได้ มีการเติบโตอย่างมากในตลาดอุปกรณ์สวมใส่ ซึ่งขณะนี้เติบโตที่ 22.5% CAGR ขยายไปสู่เสื้อผ้าข้อมือ หมวก เครื่องประดับ รองเท้า และแม้แต่สิ่งทอ ที่พบบ่อยที่สุดคือ

Watches

Wearable technology for the wrist is no longer just limited to fitness tracking or mobile wallets. Today’s watches are delivering capabilities in social media, health tracking, productivity, and even games (Tiny Armies being one such example). Wearable development is currently native only. Development for Apple watch is based upon Swift, while other brands include Samsung Galaxy (Web app, Native C, Tizen .NET), and Fitbit Sense (JavaScript).

Glasses

Smart glasses run the gamut of experiences, from basic Bluetooth connections for audio to integrated cameras and even integration of artificial reality (AR) and virtual reality (VR) such as the Google Glass and Oculus Quest. Development is widely variable depending on the device and its level of sophistication.

7. Cloud Computing

การประมวลผลแบบคลาวด์จะย้ายข้อมูลภายนอกที่จัดเก็บในตัวเครื่องและไปยังเซิร์ฟเวอร์ระยะไกลสำหรับการจัดเก็บและประมวลผล (บริการแบ็กเอนด์) การพัฒนาซอฟต์แวร์บนคลาวด์เกี่ยวข้องกับการสร้างแอปพลิเคชันที่เก็บข้อมูลบนคลาวด์เหล่านี้ เช่น Amazon Web Services (AWS), Microsoft OneDrive, IDrive หรือ DropBox ในกรณีเหล่านี้ พื้นที่เซิร์ฟเวอร์จะเช่าตามจำนวนเซิร์ฟเวอร์หรือแบนด์วิดท์

นักพัฒนาที่สนใจในการประมวลผลแบบคลาวด์ควรรู้จัก Java, JS (NodeJS), Python, Erlang และ Go (อื่นๆ)

Serverless Computing

Serverless computing provides backend services only as needed, without the need to pay for a specific amount of bandwidth or number of services. This option is growing in popularity, with offerings available from AWS, Google Cloud and more.

8. DevOps

DevOps เป็นปรัชญาที่ผสานรวมกระบวนการรักษาความปลอดภัยอัตโนมัติเข้ากับ Agile IT โดยเพิ่มความปลอดภัยให้เข้ากับกระบวนการพัฒนาที่รวดเร็วและทำซ้ำได้หลายองค์กรในปัจจุบัน DevOps ต้องการให้นักพัฒนาซอฟต์แวร์มีฐานความรู้ในการเขียนโปรแกรม การผสานรวม และการทดสอบ ทั้งในมุมมองทางทฤษฎี ตลอดจนเครื่องมือและเฟรมเวิร์กที่ใช้งานได้จริง

Continuous Integration (CI)

Continuous integration implies that new user stories in Agile are built, tested, and integrated into the existing system multiple times (at least daily) to support the integrity of the software. Automated testing is a process that helps manage continuous integration, ensuring that the test results are authentic and that there is no room for human error.

Continuous Deployment (CD)

Continuous deployment builds on the above, with the development team working through errors or bugs or new user stories and automating deployment to ensure that the DevOps team is constantly working on the latest, quality code and that new features are always available to end-users. Paired with continuous integration, this process is referred to as the CI/CD pipeline:


9. Embedded Systems Development

ระบบสมองกลฝังตัวคือระบบคอมพิวเตอร์ (ฮาร์ดแวร์และซอฟต์แวร์) ที่ออกแบบมาสำหรับฟังก์ชันเฉพาะซึ่งเป็นส่วนหนึ่งของอุปกรณ์ที่สมบูรณ์ ไมโครโปรเซสเซอร์เป็นตัวอย่างของระบบฝังตัว ทุกวันนี้ ระบบฝังตัวมีขนาดเล็กลงและราคาถูกลงกว่าเดิมด้วยการใช้งานในอุปกรณ์อิเล็กทรอนิกส์สำหรับผู้บริโภค โทรคมนาคม การบิน ระบบอัตโนมัติในบ้าน ยานพาหนะไฟฟ้า อุปกรณ์ทางการแพทย์ และ "อินเทอร์เน็ตในทุกสิ่ง" ระบบฝังตัวส่วนใหญ่จะพึ่งพา Linux, VXWorks และ Windows CE แบบฝังตัว และอาศัยความรู้เกี่ยวกับ Embedded C, Assembler, Python, Adruino หรือ Java

Conclusion

คาดว่ามีนักพัฒนาซอฟต์แวร์มากกว่า 23.9 ล้านคนทั่วโลก และคาดว่าจะเพิ่มขึ้นเป็น 28.7 ล้านคนภายในปี 2567 ในสหรัฐมีพัฒนาซอฟต์แวร์มากกว่า 4.3 ล้านคน แต่สหรัฐฯ มีความต้องการหานักพฒันาเพิ่มอีก 1.4 ล้านตำแหน่งในปี 2020 ซึ่งเป็นช่องว่างด้านทักษะด้านไอทีที่กำลังเติบโต ถ้ามองไปในอนาคต


0
241