Khác biệt giữa bản sửa đổi của “Kỹ sư phần mềm”

Bách khoa toàn thư mở Wikipedia
Nội dung được xóa Nội dung được thêm vào
Hộp thông tin
Lịch sử
Thẻ: Thêm thẻ nowiki Trình soạn thảo mã nguồn 2017
Dòng 9: Dòng 9:
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]].<ref name="BoDu042" /><ref name="swebookv3" /> Nó chủ yếu sử dụng [[quản lý cấu hình phần mềm]]<ref name="BoDu042" /><ref name="swebookv3" /> 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]].
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]].<ref name="BoDu042" /><ref name="swebookv3" /> Nó chủ yếu sử dụng [[quản lý cấu hình phần mềm]]<ref name="BoDu042" /><ref name="swebookv3" /> 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]].


== Tổng quan ==
== Lịch sử ==
{{Main|Lịch sử kỹ thuật phần mềm}}Bắ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]]<nowiki/>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.<ref>{{Chú thích web|url=https://www.hackreactor.com/blog/the-history-of-coding-and-software-engineering|tựa đề=The history of coding and software engineering|website=www.hackreactor.com|ngôn ngữ=en-US|ngày truy cập=2022-03-21}}</ref>
Trước giữa những năm 1970, các chuyên gia phần mềm tự gọi họ là ''[[chuyên viên khoa học máy tính]],'' ''[[lập trình viên]]'' hay ''[[nhà phát triển phần mềm]]'' bất kể công việc thực tế của họ là gì. Nhiều người thích tự gọi mình là ''nhà phát triển phần mềm'' và ''lập trình viên'', bởi vì hầu hết đều đồng ý với ý nghĩa của những thuật ngữ này, trong khi ''kỹ sư phần mềm'' vẫn đang bị tranh cãi. Ở nhiều công ty, tên gọi ''lập trình viên'' và ''nhà phát triển phần mềm'' được đổi sang ''kỹ sư phần mềm'', cho nhiều loại lập trình viên.

Ngày nay, [[ISO / IEC JTC 1 / SC 7|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).<ref>{{cite web|url=http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=33897|title=ISO/IEC TR 19759:2005|access-date=2012-04-01}}</ref> Kỹ thuật phần mềm được coi là một trong những ngành [[máy tính]] chính.<ref>{{Cite web|url=http://www.acm.org/education/curric_vols/CC2005-March06Final.pdf|title=The Joint Task Force for Computing Curricula 2005|date=2014-10-21|archive-url=https://web.archive.org/web/20141021153204/http://www.acm.org/education/curric_vols/CC2005-March06Final.pdf|archive-date=2014-10-21|url-status=live|access-date=2020-04-16}}</ref>

== Những tranh cãi về định nghĩa và thuật ngữ ==
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''<ref name="IEEE24765">''Systems and software engineering – Vocabulary'', [[ISO]]/[[International Electrotechnical Commission|IEC]]/[[IEEE]] std 24765:2010(E), 2010.</ref>
* "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''<ref name="IEEE610a">''IEEE Standard Glossary of Software Engineering Terminology'', [[IEEE]] std 610.12-1990, 1990.</ref>
* "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 (academic)|Ian Sommerville]]<ref name="Sommerville1">{{cite book|title=Software Engineering|last=Sommerville|first=Ian|publisher=Pearson Education|year=2007|isbn=978-0-321-31379-9|edition=8th|location=Harlow, England|pages=7|chapter=1.1.2 What is software engineering?|quote=Software engineering is an engineering discipline that is concerned with all aspects of software production from the early stages of system specification to maintaining the system after it has gone into use. In this definition, there are two key phrases:<br /> 1. ''Engineering discipline'' Engineers make things work. They apply theories, methods and tools where these are appropriate [. . .] Engineers also recognize that they must work to organizational and financial constraints. [. . .]<br /> 2. ''All aspects of software production'' Software engineering is not just concerned with the technical processes of software development but also with activities such as software project management and with the development of tools, methods and theories to support software production.|author-link=Ian Sommerville (academic)|orig-year=1982|chapter-url=http://www.pearsoned.co.uk/HigherEducation/Booksby/Sommerville/}}</ref>
* "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"—[[Friedrich L. Bauer|Fritz Bauer]]<ref name="Bauer1">{{cite journal|title=Software Engineering|journal=Information Processing|volume=71|pages=530–538}}</ref>
* "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]]<ref>{{Cite web|url=https://www.merriam-webster.com/dictionary/software+engineering|title=Definition of SOFTWARE ENGINEERING|website=www.merriam-webster.com|language=en|access-date=2019-11-25}}</ref>
* "'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<ref>{{cite book|title=Software Engineering at Google|last1=Winters|first1=Titus|last2=Manshrec|first2=Tom|last3=Wright|first3=Hyrum|publisher=O'Reilly Media, Inc.|year=2020|isbn=978-1-492-08279-8|pages=xix–xx, 6–7|chapter=Preface, Programming Over Time|quote=We propose that “software engineering” encompasses not just the act of writing code, but all of the tools and processes an organization uses to build and maintain that code over time. What practices can a software organization introduce that will best keep its code valuable over the long term? How can engineers make a codebase more sustainable and the software engineering discipline itself more rigorous?}}</ref>

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]];<ref>{{cite web|url=http://www.micsymposium.org/mics_2002/SALAH.PDF|title=Engineering an Academic Program in Software Engineering|author=Akram I. Salah|date=2002-04-05|publisher=35th Annual Midwest Instruction and Computing Symposium|access-date=2006-09-13}}: "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."</ref>
* 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]];<ref name="p. 26">Mills, Harlan D., J. R. Newman, and C. B. Engle, Jr., "An Undergraduate Curriculum in Software Engineering," in {{cite book|title=Software Engineering Education: SEI Conference 1990, Pittsburgh, Pennsylvania, USA, April 2–3,...|last=Deimel|first=Lionel E.|publisher=Springer|year=1990|isbn=978-0-387-97274-9}},[https://books.google.com/books?vid=ISBN3540972749&id=ZuWbyy2blMEC&pg=PA26&lpg=PA26&sig=Yxs2mS5S0Xs2cnGv2vYsYUcFNQM 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..."</ref>
* 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.<ref>{{cite web|url=http://evidence.cs.keele.ac.uk/rebse.html|title=Realizing Evidence-based Software Engineering|author1=David Budgen|author2=Pearl Brereton|date=2004-12-14|archive-url=https://web.archive.org/web/20061217013922/http://evidence.cs.keele.ac.uk/rebse.html|archive-date=2006-12-17|url-status=dead|access-date=2006-10-18|author3=Barbara Kitchenham|author4=Stephen Linkman}}: "We believe that software engineering can only advance as an engineering discipline by moving away from its current dependence upon advocacy and analysis,...."</ref>


== Xem thêm ==
== Xem thêm ==
Dòng 22: Dòng 40:
{{tham khảo|25em}}
{{tham khảo|25em}}


== Đọc thêm ==
{{Công nghệ phần mềm}}


* {{Cite book|title=Guide to the Software Engineering Body of Knowledge (SWEBOK Guide): Version 3.0|date=2014|publisher=IEEE Computer Society|others=Pierre Bourque, Richard E. Fairley (eds.)|isbn=978-0-7695-5166-1}}
{{sơ khai}}
* {{Cite book|title=Software Engineering: A Practitioner's Approach|last=Pressman|first=Roger S|publisher=McGraw-Hill|year=2009|isbn=978-0-07-337597-7|edition=7th|location=Boston, Mass|author-link=Roger S. Pressman}}
* {{Cite book|url=http://www.pearsoned.co.uk/HigherEducation/Booksby/Sommerville/|title=Software Engineering|last=Sommerville|first=Ian|publisher=Pearson Education|year=2010|isbn=978-0-13-703515-1|edition=9th|location=Harlow, England|author-link=Ian Sommerville (academic)|orig-year=2010}}
* {{Cite book|url=https://www.springer.com/gp/book/9780387208817|title=An Integrated Approach to Software Engineering|last=Jalote|first=Pankaj|publisher=Springer|year=2005|isbn=978-0-387-20881-7|edition=3rd|author-link=Pankaj Jalote|orig-year=1991}}
* {{Cite book|url=https://archive.org/details/objectorientedso0000brue|title=Object-oriented software engineering : using UML, patterns, and Java|last1=Bruegge|first1=Bernd|last2=Dutoit|first2=Allen|publisher=Prentice Hall|year=2009|isbn=978-0-13-606125-0|edition=3rd|author-link1=Bernd Bruegge|url-access=registration}}
* {{cite book|title=Software engineering for embedded systems : methods, practical techniques, and applications|last1=Oshana|first1=Robert|date=2019-06-21|publisher=Kidlington, Oxford, United Kingdom|isbn=978-0-12-809433-4|edition=Second}}

== Liên kết ngoài==
{{Commons category}}
{{wikiversity}}
* [http://www.swebok.org/ Guide to the Software Engineering Body of Knowledge]
* [http://opensdlc.org/ The Open Systems Engineering and Software Development Life Cycle Framework] OpenSDLC.org the integrated Creative Commons SDLC
* [http://www.sei.cmu.edu/ Software Engineering Institute] Carnegie Mellon

{{Công nghệ phần mềm}}
{{Khoa học Máy tính}}
{{Authority control}}


{{DEFAULTSORT:Kỹ sư phần mềm}}
{{DEFAULTSORT:Kỹ sư phần mềm}}

Phiên bản lúc 08:29, ngày 21 tháng 3 năm 2022

Một phần của loạt bài về
Phát triển phần mềm
Một kỹ sư phần mềm đang viết mã Java

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.[4][5] Nó chủ yếu sử dụng quản lý cấu hình phần mềm[4][5] 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ử

Bắ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, NATOtổ 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.[6]

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).[7] Kỹ thuật phần mềm được coi là một trong những ngành máy tính chính.[8]

Những tranh cãi về định nghĩa và thuật ngữ

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[9]
  • "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[10]
  • "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[11]
  • "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[12]
  • "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[13]
  • "'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[14]

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ínhphân tích hệ thống;[15]
  • 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;[16]
  • 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.[17]

Xem thêm

Tham khảo

  1. ^ Abran và đồng nghiệp 2004, tr. 1–1
  2. ^ ACM (2007). “Computing Degrees & Careers”. ACM. Truy cập ngày 23 tháng 11 năm 2010.
  3. ^ 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.
  4. ^ a b Lỗi chú thích: Thẻ <ref> sai; không có nội dung trong thẻ ref có tên BoDu042
  5. ^ a b Lỗi chú thích: Thẻ <ref> sai; không có nội dung trong thẻ ref có tên swebookv3
  6. ^ “The history of coding and software engineering”. www.hackreactor.com (bằng tiếng Anh). Truy cập ngày 21 tháng 3 năm 2022.
  7. ^ “ISO/IEC TR 19759:2005”. Truy cập ngày 1 tháng 4 năm 2012.
  8. ^ “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.
  9. ^ Systems and software engineering – Vocabulary, ISO/IEC/IEEE std 24765:2010(E), 2010.
  10. ^ IEEE Standard Glossary of Software Engineering Terminology, IEEE std 610.12-1990, 1990.
  11. ^ Sommerville, Ian (2007) [1982]. “1.1.2 What is software engineering?”. Software Engineering (ấn bản 8). Harlow, England: Pearson Education. tr. 7. ISBN 978-0-321-31379-9. Software engineering is an engineering discipline that is concerned with all aspects of software production from the early stages of system specification to maintaining the system after it has gone into use. In this definition, there are two key phrases:
    1. Engineering discipline Engineers make things work. They apply theories, methods and tools where these are appropriate [. . .] Engineers also recognize that they must work to organizational and financial constraints. [. . .]
    2. All aspects of software production Software engineering is not just concerned with the technical processes of software development but also with activities such as software project management and with the development of tools, methods and theories to support software production.
  12. ^ “Software Engineering”. Information Processing. 71: 530–538.
  13. ^ “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.
  14. ^ 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. We propose that “software engineering” encompasses not just the act of writing code, but all of the tools and processes an organization uses to build and maintain that code over time. What practices can a software organization introduce that will best keep its code valuable over the long term? How can engineers make a codebase more sustainable and the software engineering discipline itself more rigorous?
  15. ^ 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."
  16. ^ 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..."
  17. ^ 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

Liên kết ngoài