Artefact vs. Artifact

พอดีได้อ่านบทความนึงที่เกี่ยวกับ Software Engineering เจอคำศัพท์ที่น่าสนใจครับ "Artefact" คำนี้ไม่คุ้นเลยย ตอนที่ใช้ Hudson กับ Jenkins เจอแค่คำนี้ "Artifact" แล้ว 2 คำนี้มันแตกต่างกันอย่างไรหละ

ในแง่ของภาษาเขียนกันก่อน

  • Artefact - เป็น British Spelling
  • Artifact - เป็น American Spelling

ในแง่ของความหมายหละ

  • เหมือนกันครับ an object shaped by human workmanship, especially one of historical or archaeological interest 
  • สำหรับทางฝั่งอังกฤษ เน้นไปการพัฒนาสิ่งใหม่มากกว่า New Development

ในแง่ของความนิยม

  • จาก 2 คำนี้ ทำให้ผมรู้จัก Tools ตัวนึง ngram ของ Google ที่จะนับคำ และนำมาแสดงผลเปรียบเทียบกันครับ
  • ตัว ngram หรือ n-gram คือ
    • gram คือ หน่วย หรือขนาดที่ใช้การการแบ่งคำ  มีขนาดตั้งแต่ 1-n เ
      • เช่น bi-gram ตัวอย่างคำ april -> ให้เราใส่ $ เป็น $april$  ($ = Wild Card) แบ่งทีละ 2 ตัว $a , ap , pr , ri , il , l$
    • ngram คือ Model แนวคิดการแบ่งคำตามตัวอักษร เสียงการอ่าน เพื่อใช้ทำ Index ใช้ในการสืบค้น
  • แต่ระบบของ Google ที่ผมดูเป็นการนับความถี่ (Frequency) จากหนังสือ อันนี้เราจะดูแนวนำ (Trend) ของคำได้
  • ลองดูจาก corpus ประเภท British English
  • ลองดูจาก corpus ประเภท American English

ในแง่ของ Software

หลังจากที่รู้แล้วว่า มันเป็นการเขียนคำคนละแบบสไตล์ British กับ American ลองมาดูในแง่ของ Software บ้าง - ผมเจอการนิยามที่น่าสนใจ ดังนี้

  • Artifact และ Software Artifact (ผมขอใช้ Artifact นะ แต่สำหรับคำที่ผมตัดมาจากต้นฉบับของไม่แก้ไขนะครับ)
    • Artifact จาก SEMAT workshop March 2010 - a container of information that
      • is created by a specific actor (human or a system)
      • is consumed by at least one actor (human or system)
      • represents a natural unit of work (for the creating and consuming actors)
      • may contain links to other artefacts
      • has a state and a lifecycle
    • Artifact จาก Wiki-Artifact (software development)
      • An artifact is one of many kinds of tangible by-products produced during the development of software. Some artifacts (e.g., use cases, class diagrams, and other Unified Modeling Language (UML) models, requirements and design documents) help describe the function, architecture, and design of software. Other artifacts are concerned with the process of development itself—such as project plans, business cases, and risk assessments.The term artifact in connection with software development is largely associated with specific development methods or processes e.g., Unified Process. This usage of the term may have originated with those methods
    • Software Artifact จาก SEMAT workshop March 2010 - an artefact that meets the following requirements:
      • It is created with the help of a software program that enforces specific instantiation semantics (quality related constraints)
      • The information contained in a software artefact can be easily processed by software programs (in particular transformation languages)
      • Referential integrity between software artefacts is preserved at all times with the help of a software program (otherwise the necessary level of completeness and consistency is neither adequate for automated processing nor for domain experts making business decisions based on artefact content)
      • No circular links between software artefacts are allowed at any time (a prerequisite for true modularity and maintainability of artefacts)
      • The lifecycle of a software artefact is described in a state machine (allowing artefact completeness and quality assurance steps to be incorporated into the artefact definition)

จบสักทีกับการลองนั่ง research เล่นๆครับ


Discover more from naiwaen@DebuggingSoft

Subscribe to get the latest posts sent to your email.