Service-oriented architecture SOA ซึ่งก็คือ การสร้างและพัฒนา ซอฟต์แวร์โดยใช้แนวคิดของ โครงสร้างของธุรกิจสมัยใหม่ ซึ่งมาจากแนวคิดที่ได้รับอิทธิพลมาจาก แนวคิดแบบ “รูปแบบ เป็นผลมาจาก การใช้งาน” (form follows function) SOA คือ ชุดของซอฟต์แวร์หนึ่งๆ ที่ถูกออกแบบให้มีลักษณะที่ยืดหยุ่นต่อการใช้งานโดยจะปฏิบัติหน้าที่อยู่ระหว่างเฟส ของการพัฒนาระบบ (systems development) กับ การควบรวมการประมวลผล (integration in computing) ระบบใดๆ ที่ถูกออกแบบบนพื้นฐานของ SOA นั้น จะประกอบไปด้วยชุดของการปฏิบัติงานที่ทำหน้าที่เป็นตัวควบรวมการให้บริการ ซึ่งสามารถถูกนำมาใช้ได้กับระบบต่างๆที่หลากหลาย หรือ ระบบที่ถูกแบ่งแยกออกตาม หน่วยงานองค์กร หรือ ธุรกิจที่แตกต่างกัน SOA ยังเป็นผู้จัดหาการให้บริการต่างๆให้กับผู้บริโภค เช่น web-based applications ที่ให้บริการในรูปแบบของ SOA-based services ตัวอย่างเช่น หน่วยงาน หรือ แผนกต่างๆที่ถูกแบ่งแยกภายในองค์กร สามารถนำ SOA service มาประยุกต์ใช้ร่วมกัน โดยระบบจะควบรวมการปฏิบัติแม้แต่ภาษาในการพัฒนาโปรแกรมที่แตกต่างกันแต่ละแผนก ดังนั้น หน่วยงานย่อยต่างๆ จึงถูกเรียกว่า Client จะได้รับผลประโยชน์ในการใช้งานและเข้าถึงระบบได้อย่างสะดวก และ เป็นที่เข้าใจง่ายยิ่งขึ้น ดังนั้น XML จึงเข้ามามีบทบาท
เป็นตัวทำหน้าที่เป็น interface ให้กับ ระบบ SOA service SOA ทำหน้าที่ รวบรวม แอปพลิเคชันต่างๆ ที่ถูกพัฒนาในภาษาที่ต่างกัน ที่อยู่ภายในองค์กรเดียวกัน ด้วยวิธีการ Web-based environment และสามารถนำมาประยุกต์ใช้งานได้กับแพลทฟอร์มที่หลากหลายด้วย ในการติดต่อระหว่างหน่วยงาน แทนที่จะใช้ API ในระบบ SOA ออกแบบหน้าจอ interfaceที่ทำงานด้วย Protocols และ functionality ประเด็นสำคัญคือ การใช้งานของระบบ SOA นั้นจะร้องขอ “loose coupling of services” ด้วย Operating systems และ เทคโนโลยีอื่นที่สนับสนุนการปฏิบัติงานของแอปพลิเคชันเหล่านั้น SOA แบ่งฟังก์ชันออกเป็น หน่วยหรือ units หรือ การให้บริการ service อย่างชัดเจน ซึ่งผู้พัฒนาสามารถเข้าถึงได้ทางเครือข่ายในกรณีที่อนุญาตให้ผู้ใช้ สามารถใช้งาน ในการเพิ่มเติม หรือ นำข้อมูลกลับมาใช้ ในแอปพลิเคชันนั้นๆ การให้บริการ และการสื่อสารกันระหว่างผู้ใช้ ด้วยวิธีการ ส่งต่อข้อมูลในลักษณะที่ถูกกำหนด และ สามารถใช้งานร่วมกันได้ ในลักษณะความร่วมมือในกิจกรรมการให้บริการหนึ่งๆหรือ มากกว่าก็ได้ SOA เห็นได้อย่างชัดเจนในรูปแบบหนึ่งของการทำงานในลักษณะ distributed computing และ modular programming ที่มีลักษณะเช่นเดียวกันกับ mashups, SaaS, และ Cloud Computing เหล่านี้เป็น ลูกหลาน ที่เกิดจากแนวคิดของ SOA
ซอฟต์แวร์ (อังกฤษ: software) หรือ ส่วนชุดคำสั่ง คือ ส่วนหนึ่งของระบบคอมพิวเตอร์ที่ใช้ในการจัดเก็บและประมวลผมข้อมูล เป็นชุดคำสั่งที่บอกวิธีการทำงานของคอมพิวเตอร์ ซึ่งตรงกันข้ามกับฮาร์ดแวร์ที่เป็นระบบคอมพิวเตอร์ที่สามารถจับต้องได้ ในสาขาวิชาวิทยาการคอมพิวเตอร์และวิศวกรรมซอฟต์แวร์นั้น ซอฟต์แวร์คอมพิวเตอร์ คือ ข้อมูลทั้งหมดที่ได้รับการประมวลผลโดยระบบคอมพิวเตอร์ และ โปรแกรมคอมพิวเตอร์ ซอฟต์แวร์คอมพิวเตอร์นั้นประกอบด้วย โปรแกรมคอมพิวเตอร์, ไลบรารี และ ข้อมูลที่ไม่สามารถเรียกใช้งานได้ด้วยโปรแกรมคอมพิวเตอร์ อาทิ เอกสารออนไลน์หรือสื่อดิจิทัล คอมพิวเตอร์เครื่องหนึ่งจำเป็นต้องมีทั้งฮาร์ดแวร์และซอฟต์แวร์ และหากขาดอย่างใดอย่างหนึ่งไป จะไม่สามารถใช้งานระบบคอมพิวเตอร์ได้
ในระดับโปรแกรมคอมพิวเตอร์ที่ต่ำที่สุด โค้ดปฏิบัติการนั้น ประกอบด้วย คำสั่งภาษาเครื่อง (machine language) ที่โปรเซสเซอร์ (processor) แต่ละตัวรองรับ โดยทั่วไปคือหน่วยประมวลผลกลาง (CPU) หรือ หน่วยประมวลผลกราฟิก (GPU) ภาษาเครื่อง ประกอบด้วย กลุ่มค่าไบนารี (เลขฐานสอง) ที่แสดงถึงคำสั่งของตัวประมวลผลที่ได้เปลี่ยนสถานะของคอมพิวเตอร์จากสถานะก่อนหน้า เช่น คำสั่งภาษาเครื่องอาจเปลี่ยนค่าที่จัดเก็บไว้ในตำแหน่งจัดเก็บเฉพาะในคอมพิวเตอร์ ซึ่งผู้ใช้ไม่สามารถสังเกตเห็นได้โดยตรง หรือ คำสั่งนั้นอาจเป็นการเรียกอินพุตหรือเอาต์พุตอย่างใดอย่างหนึ่งซึ่งผู้ใช้คอมพิวเตอร์สามารถมองเห็นได้ เช่น การแสดงข้อความบนหน้าจอคอมพิวเตอร์ โปรเซสเซอร์จะดำเนินการตามคำสั่ง ตามลำดับที่ระบุไว้ เว้นแต่จะได้รับคำสั่งให้ “ข้าม” ไปยังคำสั่งอื่น หรือ ระบบปฏิบัติการถูกขัดจังหวะ ในปี ค.ศ.2015 คอมพิวเตอร์ส่วนบุคคล อุปกรณ์สมาร์ทโฟน และ เซิร์ฟเวอร์ส่วนใหญ่ มีหน่วยประมวลผลที่มีหน่วยประมวลผลหลายหน่วย (่multiple execution unit) หรือโปรเซสเซอร์หลายตัว ทำการคำนวณร่วมกันและการประมวลผล ทำให้ส่วนโปรเซสเซอร์สามารถทำงานร่วมกันในเวลาพร้อม ๆ กัน (concurrent activity) มากกว่าระบบโปรเซสเซอร์ในอดีต
ซอฟต์แวร์นั้นนอกจากจะสามารถใช้งานบนคอมพิวเตอร์ได้แล้ว ยังสามารถใช้งานบนเครื่องใช้ หรืออุปกรณ์อื่น เช่น โทรศัพท์มือถือ หรือหุ่นยนต์ในโรงงาน หรือเครื่องใช้ไฟฟ้าต่าง ๆซอฟต์แวร์ส่วนใหญ่เขียนด้วยภาษาโปรแกรมระดับสูง (high-level programming language) ซึ่งง่ายกว่าและมีประสิทธิภาพมากกว่าสำหรับโปรแกรมเมอร์ เพราะใกล้เคียงกับภาษาธรรมชาติที่มนุษย์ใช้มากกว่าภาษาเครื่อง ภาษาระดับสูงจะถูกแปลเป็นภาษาเครื่องโดยใช้คอมไพเลอร์ (compiler) หรืออินเตอร์พรีตเตอร์ (interpreter) หรือทั้งสองอย่างรวมกัน ซอฟต์แวร์อาจเขียนด้วยภาษาแอสเซมบลีระดับต่ำ (assembly language) ซึ่งมีความสอดคล้องกับคำสั่งภาษาเครื่องของคอมพิวเตอร์อย่างมาก และ ภาษาแอสเซมบลีจะถูกแปลเป็นภาษาเครื่องโดยใช้แอสเซมเบลอร์ (assembler)