Kỹ Sư Phần Mềm – Wikipedia Tiếng Việt
Có thể bạn quan tâm
Một phần của loạt bài về |
Phát triển phần mềm |
---|
Hoạt động cốt lõi
|
Mô hình và hình mẫu
|
Phương pháp và framework
|
Các ngành hỗ trợ
|
Thực hành
|
Công cụ
|
Tiêu chuẩn và khối kiến thức
|
Bảng thuật ngữ
|
Sơ lược
|
|
Kỹ sư phần mềm (tiếng Anh: software engineer) là người áp dụng các nguyên tắc/nguyên lý của công nghệ phần mềm vào việc thiết kế, phát triển, bảo trì, kiểm thử, và đánh giá phần mềm và hệ thống khiến máy tính hay bất cứ thứ gì chứa phần mềm đó sẽ hoạt động.[1][2][3]
Kỹ sư phần mềm là người áp dụng các nguyên tắc của kỹ thuật phần mềm để thiết kế, phát triển, bảo trì, kiểm tra và đánh giá phần mềm máy tính. Thuật ngữ lập trình viên đôi khi được sử dụng như một từ đồng nghĩa, nhưng cũng có thể thiếu hàm ý về giáo dục kỹ thuật hoặc kỹ năng.
Các kỹ thuật được sử dụng để thông báo cho quá trình phát triển phần mềm bao gồm định nghĩa, triển khai, đánh giá, đo lường, quản lý, thay đổi và cải tiến chính trong quy trình phát triển phần mềm.[1][4] Nó chủ yếu sử dụng quản lý cấu hình phần mềm[1][4] nhằm kiểm soát một cách có hệ thống các thay đổi đối với cấu hình và duy trì tính toàn vẹn và khả năng truy nguyên của cấu hình và mã trong suốt vòng đời của hệ thống. Các quy trình hiện đại sử dụng phiên bản phần mềm.
Lịch sử
[sửa | sửa mã nguồn] Bài chi tiết: Lịch sử kỹ thuật phần mềmBắt đầu từ thập niên 1960, kỹ thuật phần mềm được coi là loại hình kỹ thuật của riêng nó. Ngoài ra, sự phát triển của kỹ thuật phần mềm được coi là một cuộc đấu tranh. Việc khó theo kịp phần cứng đã gây ra nhiều vấn đề cho các kỹ sư phần mềm. Các vấn đề này bao gồm vượt quá ngân sách, vượt quá thời hạn, yêu cầu gỡ lỗi, bảo trì rộng rãi và không đáp ứng được nhu cầu của người tiêu dùng hoặc thậm chí không bao giờ hoàn thành. Năm 1968, NATO tổ chức hội nghị Kỹ thuật phần mềm đầu tiên, nơi giải quyết các vấn đề liên quan đến phần mềm: các hướng dẫn và thực tiễn tốt nhất để phát triển phần mềm được thiết lập.[5]
Ngày nay, ISO/IEC JTC 1/SC 7 được chấp nhận chung về kỹ thuật phần mềm thu thập và được xuất bản dưới dạng Software Engineering Body of Knowledge (SWEBOK).[6] Kỹ thuật phần mềm được coi là một trong những ngành máy tính chính.[7]
Những tranh cãi về định nghĩa và thuật ngữ
[sửa | sửa mã nguồn]Các định nghĩa đáng chú ý về kỹ sư phần mềm bao gồm:
- "Việc áp dụng có hệ thống các kiến thức, phương pháp và kinh nghiệm khoa học và công nghệ vào việc thiết kế, triển khai, thử nghiệm và tài liệu hóa phần mềm"—The Bureau of Labor Statistics—IEEE Systems and software engineering – Vocabulary[8]
- "Việc áp dụng một cách tiếp cận có hệ thống, có kỷ luật, có thể định lượng được để phát triển, vận hành và bảo trì phần mềm"—IEEE Standard Glossary of Software Engineering Terminology[9]
- "một ngành kỹ thuật liên quan đến tất cả các khía cạnh của sản xuất phần mềm"—Ian Sommerville[10]
- "thiết lập và sử dụng các nguyên tắc kỹ thuật hợp lý để có được một phần mềm đáng tin cậy, có tính kinh tế và hoạt động hiệu quả trên các máy thực"—Fritz Bauer[11]
- "một nhánh của khoa học máy tính liên quan đến việc thiết kế, triển khai và bảo trì các chương trình máy tính phức tạp"—Merriam-Webster[12]
- "'kỹ sư phần mềm 'không chỉ bao gồm hành động viết mã, mà tất cả các công cụ và quy trình mà một tổ chức sử dụng để xây dựng và duy trì mã đó theo thời gian. [...] Kỹ sư phần mềm có thể được coi là 'lập trình được tích hợp theo thời gian.'"—Software Engineering at Google[13]
Thuật ngữ này cũng đã được sử dụng một cách ít chính thức hơn:
- là thuật ngữ không chính thức đương thời cho một loạt các hoạt động mà trước đây được gọi là lập trình máy tính và phân tích hệ thống;[14]
- là thuật ngữ rộng cho tất cả các khía cạnh của thực hành lập trình máy tính, trái ngược với lý thuyết về lập trình máy tính, vốn được chính thức nghiên cứu như một phân ngành của khoa học máy tính;[15]
- là thuật ngữ thể hiện sự ủng hộ của một phương pháp tiếp cận cụ thể đối với lập trình máy tính, một phương pháp thúc giục rằng nó được coi như một bộ môn kỹ thuật hơn là nghệ thuật hay một nghề thủ công và ủng hộ việc mã hóa các phương pháp thực hành được đề xuất.[16]
Xem thêm
[sửa | sửa mã nguồn] Wikimedia Commons có thêm hình ảnh và phương tiện truyền tải về Kỹ sư phần mềm.- Kỹ sư khoa học máy tính
- Kỹ sư công nghệ phần mềm
- Kỹ sư tư vấn phần mềm
Tham khảo
[sửa | sửa mã nguồn]- ^ a b c Abran và đồng nghiệp 2004, tr. 1–1
- ^ ACM (2007). “Computing Degrees & Careers”. ACM. Truy cập ngày 23 tháng 11 năm 2010.
- ^ Laplante, Phillip (2007). What Every Engineer Should Know about Software Engineering. Boca Raton: CRC. ISBN 978-0-8493-7228-5. Truy cập ngày 21 tháng 1 năm 2011.
- ^ a b “Software Engineering Body of Knowledge (SWEBOK Version 3), 2014” (pdf). www.swebok.org. IEEE Computer Society. Truy cập ngày 24 tháng 5 năm 2016.
- ^ “The history of coding and software engineering”. www.hackreactor.com (bằng tiếng Anh). Bản gốc lưu trữ ngày 24 tháng 3 năm 2022. Truy cập ngày 21 tháng 3 năm 2022.
- ^ “ISO/IEC TR 19759:2005”. Truy cập ngày 1 tháng 4 năm 2012.
- ^ “The Joint Task Force for Computing Curricula 2005” (PDF). 21 tháng 10 năm 2014. Lưu trữ (PDF) bản gốc ngày 21 tháng 10 năm 2014. Truy cập ngày 16 tháng 4 năm 2020.
- ^ Systems and software engineering – Vocabulary, ISO/IEC/IEEE std 24765:2010(E), 2010.
- ^ IEEE Standard Glossary of Software Engineering Terminology, IEEE std 610.12-1990, 1990.
- ^ Sommerville, Ian (2007) [1982]. “1.1.2 What is software engineering?”. Software Engineering (ấn bản thứ 8). Harlow, England: Pearson Education. tr. 7. ISBN 978-0-321-31379-9. Kỹ thuật phần mềm là một ngành kỹ thuật liên quan đến tất cả các khía cạnh của sản xuất phần mềm từ giai đoạn đầu của đặc tả hệ thống đến bảo trì hệ thống sau khi nó được đưa vào sử dụng. Trong định nghĩa này, có hai cụm từ chính: 1. Kỷ luật kỹ thuật Các kỹ sư làm cho mọi thứ hoạt động. Họ áp dụng các lý thuyết, phương pháp và công cụ khi thích hợp [. . .] Các kỹ sư cũng nhận ra rằng họ phải làm việc với những hạn chế về tổ chức và tài chính. [. . .] 2. Tất cả các khía cạnh của sản xuất phần mềm Kỹ thuật phần mềm không chỉ quan tâm đến các quy trình kỹ thuật của phát triển phần mềm mà còn với các hoạt động như quản lý dự án phần mềm và phát triển các công cụ, phương pháp và lý thuyết để hỗ trợ sản xuất phần mềm.
- ^ “Software Engineering”. Information Processing. 71: 530–538.
- ^ “Definition of SOFTWARE ENGINEERING”. www.merriam-webster.com (bằng tiếng Anh). Truy cập ngày 25 tháng 11 năm 2019.
- ^ Winters, Titus; Manshrec, Tom; Wright, Hyrum (2020). “Preface, Programming Over Time”. Software Engineering at Google. O'Reilly Media, Inc. tr. xix–xx, 6–7. ISBN 978-1-492-08279-8. Chúng tôi đề xuất rằng "kỹ sư phần mềm" không chỉ bao gồm hành động viết mã mà còn bao gồm tất cả các công cụ và quy trình mà một tổ chức sử dụng để xây dựng và duy trì mã đó theo thời gian. Một tổ chức phần mềm có thể áp dụng những phương pháp nào tốt nhất để giữ cho mã của nó có giá trị về lâu dài? Làm cách nào để các kỹ sư có thể làm cho một cơ sở mã bền vững hơn và bản thân kỷ luật kỹ thuật phần mềm cũng khắt khe hơn?
- ^ Akram I. Salah (5 tháng 4 năm 2002). “Engineering an Academic Program in Software Engineering” (PDF). 35th Annual Midwest Instruction and Computing Symposium. Truy cập ngày 13 tháng 9 năm 2006.: "For some, software engineering is just a glorified name for programming. If you are a programmer, you might put 'software engineer' on your business card—never 'programmer' though."
- ^ Mills, Harlan D., J. R. Newman, and C. B. Engle, Jr., "An Undergraduate Curriculum in Software Engineering," in Deimel, Lionel E. (1990). Software Engineering Education: SEI Conference 1990, Pittsburgh, Pennsylvania, USA, April 2–3,... Springer. ISBN 978-0-387-97274-9.,p. 26: "As a practical matter, we regard software engineering as the necessary preparation for the practicing, software development and maintenance professional. The Computer Scientist is preparing for further theoretical studies..."
- ^ David Budgen; Pearl Brereton; Barbara Kitchenham; Stephen Linkman (14 tháng 12 năm 2004). “Realizing Evidence-based Software Engineering”. Bản gốc lưu trữ ngày 17 tháng 12 năm 2006. Truy cập ngày 18 tháng 10 năm 2006.: "We believe that software engineering can only advance as an engineering discipline by moving away from its current dependence upon advocacy and analysis,...."
Đọc thêm
[sửa | sửa mã nguồn]- Guide to the Software Engineering Body of Knowledge (SWEBOK Guide): Version 3.0. Pierre Bourque, Richard E. Fairley (eds.). IEEE Computer Society. 2014. ISBN 978-0-7695-5166-1.Quản lý CS1: khác (liên kết)
- Pressman, Roger S (2009). Software Engineering: A Practitioner's Approach (ấn bản thứ 7). Boston, Mass: McGraw-Hill. ISBN 978-0-07-337597-7.
- Sommerville, Ian (2010) [2010]. Software Engineering (ấn bản thứ 9). Harlow, England: Pearson Education. ISBN 978-0-13-703515-1.
- Jalote, Pankaj (2005) [1991]. An Integrated Approach to Software Engineering (ấn bản thứ 3). Springer. ISBN 978-0-387-20881-7.
- Bruegge, Bernd; Dutoit, Allen (2009). Object-oriented software engineering : using UML, patterns, and Java (ấn bản thứ 3). Prentice Hall. ISBN 978-0-13-606125-0.
- Oshana, Robert (21 tháng 6 năm 2019). Software engineering for embedded systems : methods, practical techniques, and applications . Kidlington, Oxford, United Kingdom. ISBN 978-0-12-809433-4.
Liên kết ngoài
[sửa | sửa mã nguồn] Wikimedia Commons có thêm hình ảnh và phương tiện truyền tải về Kỹ sư phần mềm. Wikiversity tiếng Anh có tài liệu giáo dục và khoa học kỹ thuật về:Kỹ sư phần mềm- Guide to the Software Engineering Body of Knowledge
- The Open Systems Engineering and Software Development Life Cycle Framework Lưu trữ 2010-07-18 tại Wayback Machine OpenSDLC.org the integrated Creative Commons SDLC
- Software Engineering Institute Carnegie Mellon
| |||||||
---|---|---|---|---|---|---|---|
Các lĩnh vực | Phân tích yêu cầu • Phân tích hệ thống • Thiết kế phần mềm • Lập trình máy tính • Các phương pháp hình thức • Kiểm thử phần mềm • Triển khai phần mềm • Bảo trì phần mềm | ||||||
Các khái niệm | Mô hình hóa dữ liệu • Kiến trúc doanh nghiệp • Chi tiết hóa chức năng • Ngôn ngữ mô hình hóa • Mô hình lập trình • Phần mềm • Kiến trúc phần mềm • Phương pháp học phát triển phần mềm • Quy trình phát triển phần mềm • Chất lượng phần mềm • Bảo đảm chất lượng phần mềm • Khảo cổ học phần mềm • Phân tích có cấu trúc | ||||||
Các định hướng | Định hướng khía cạnh • Định hướng đối tượng • Ontology • Định hướng dịch vụ • Vòng đời phát triển hệ thống | ||||||
Các mô hình |
| ||||||
Các kỹ sư phần mềm | Kent Beck • Grady Booch • Fred Brooks • Barry Boehm • Ward Cunningham • Ole-Johan Dahl • Tom DeMarco • Martin Fowler • C. A. R. Hoare • Watts Humphrey • Michael A. Jackson • Ivar Jacobson • Craig Larman • James Martin • Bertrand Meyer • David Parnas • Winston W. Royce • Colette Rolland • James Rumbaugh • Niklaus Wirth • Edward Yourdon • Victor Basili | ||||||
Các lĩnh vực liên quan | Khoa học máy tính • Kỹ nghệ máy tính • Kỹ nghệ doanh nghiệp • Lịch sử • Quản lý • Toán học • Quản lý dự án • Quản lý chất lượng • Công thái học phần mềm • Kỹ nghệ hệ thống |
| |
---|---|
Các nền tảng toán học | Logic toán · Lý thuyết tập hợp · Lý thuyết số · Lý thuyết đồ thị · Lý thuyết kiểu · Lý thuyết thể loại · Giải tích số · Lý thuyết thông tin · Đại số · Nhận dạng mẫu · Nhận dạng tiếng nói · Toán học tổ hợp · Đại số Boole · Toán rời rạc |
Lý thuyết phép tính | Độ phức tạp Kolmogorov · Lý thuyết Automat · Lý thuyết tính được · Lý thuyết độ phức tạp tính toán · Lý thuyết điện toán lượng tử |
Các cấu trúc dữ liệu và các giải thuật | Phân tích giải thuật · Thiết kế giải thuật · Hình học tính toán · Tối ưu hóa tổ hợp |
Các ngôn ngữ lập trình và Các trình biên dịch | Các bộ phân tích cú pháp · Các trình thông dịch · Lập trình cấu trúc · Lập trình thủ tục · Lập trình hướng đối tượng · Lập trình hướng khía cạnh · Lập trình hàm · Lập trình logic · Lập trình máy tính · Lập trình mệnh lệnh · Lập trình song song · Lập trình tương tranh · Các mô hình lập trình · Prolog · Tối ưu hóa trình biên dịch |
Tính song hành, Song song, và các hệ thống phân tán | Đa xử lý · Điện toán lưới · Kiểm soát song hành · Hiệu năng hệ thống · Tính toán phân tán |
Công nghệ phần mềm | Phân tích yêu cầu · Thiết kế phần mềm · Các phương pháp hình thức · Kiểm thử phần mềm · Quy trình phát triển phần mềm · Các phép đo phần mềm · Đặc tả chương trình · LISP · Mẫu thiết kế · Tối ưu hóa phần mềm |
Kiến trúc hệ thống | Kiến trúc máy tính · Tổ chức máy tính · Các hệ điều hành · Các cấu trúc điều khiển · Cấu trúc bộ nhớ lưu trữ · Vi mạch · Thiết kế ASIC · Vi lập trình · Vào/ra dữ liệu · VLSI design · Xử lý tín hiệu số |
Viễn thông và Mạng máy tính | Audio máy tính · Chọn tuyến · Cấu trúc liên kết mạng · Mật mã học |
Các cơ sở dữ liệu và Các hệ thống thông tin | Hệ quản trị cơ sở dữ liệu · Cơ sở dữ liệu quan hệ · SQL · Các giao dịch · Các chỉ số cơ sở dữ liệu · Khai phá dữ liệu · Biểu diễn và giao diện thông tin · Các hệ thống thông tin · Khôi phục dữ liệu · Lưu trữ thông tin · Lý thuyết thông tin · Mã hóa dữ liệu · Nén dữ liệu · Thu thập thông tin |
Trí tuệ nhân tạo | Lập luận tự động · Ngôn ngữ học tính toán · Thị giác máy tính · Tính toán tiến hóa · Các hệ chuyên gia · Học máy · Xử lý ngôn ngữ tự nhiên · Robot học · Biểu diễn tri thức và suy luận |
Đồ họa máy tính | Trực quan hóa · Hoạt họa máy tính · Xử lý ảnh |
Giao diện người-máy tính | Khả năng truy cập máy tính · Giao diện người dùng · Điện toán mang được · Điện toán khắp mọi nơi · Thực tế ảo |
Khoa học tính toán | Cuộc sống nhân tạo · Tin sinh học · Khoa học nhận thức · Hóa học tính toán · Khoa học thần kinh tính toán · Vật Lý học tính toán · Các giải thuật số · Toán học kí hiệu |
Chú ý: khoa học máy tính còn có thể được chia thành nhiều chủ đề hay nhiều lĩnh vực khác dựa theo Hệ thống xếp loại điện toán ACM. |
Từ khóa » Những Kỹ Sư Phần Mềm Nổi Tiếng
-
Top 10 Người Có Tiếng Nói ảnh Hưởng Nhất Thế Giới Về Phát Triển ...
-
10 Kỹ Sư Làm Thay đổi Thế Giới Với Phát Minh Của Họ
-
Tổng Hợp 8 Ngành Kỹ Sư Phổ Biến Cho Bạn Lựa Chọn
-
Kỹ Sư Phần Mềm (Software Developer) Làm Những Công Việc Gì ?
-
Kỹ Sư Phần Mềm Là Gì? Tất Tần Tật Về Ngành Kỹ Sư Phần Mềm
-
7 Kênh Youtube Hữu Ích Dành Cho Kỹ Sư Phần Mềm - CodeLearn
-
7 Tìm Hiểu Về Ngành Kỹ Sư Phần Mềm Mới Nhất
-
Kỹ Sư Phần Mềm Là Gì? Công Việc, Cơ Hội Phát Triển Của Kỹ Sư Phần ...
-
Ngành Kỹ Thuật Phần Mềm Là Gì? Nên Học ở Trường Nào? - ITNavi
-
Kỹ Sư Phát Triển Phần Mềm Là Làm Gì? Mức Lương Bao Nhiêu? - Joboko
-
Top 10 Lập Trình Viên Giỏi Nhất Thế Giới - Got It Vietnam
-
Công Việc Của Các Kỹ Sư Học Kỹ Thuật Phần Mềm - Tinhte
-
Software Engineer Là Gì? Ngành Kỹ Sư Phần Mềm Có Những Lĩnh Vực ...
-
Kỹ Thuật Phần Mềm Là Gì? Có Nên Theo Ngành Này? - TopDev