Differences from object-oriented programming[edit]
Proponents of object-oriented programming (OOP) maintain that software should be written according to a mental model of the actual or imagined objects it represents. OOP and the related disciplines of object-oriented analysis and object-oriented design focus on modeling real-world[citation needed] interactions and attempting to create "nouns" and "verbs" that can be used in more human-readable ways, ideally by end users as well as by programmers coding for those end users.
Component-based software engineering, by contrast, makes no such assumptions, and instead states that developers should construct software by gluing together prefabricated components - much like in the fields of electronics or mechanics. Some peers[who?] will even talk of modularizing systems as software components as a new programming paradigm. Example for possible paradigm: many experts feel adaptable to evolving needs is more important than reuse, since 80% of software engineering deals with maintaining or releasing new versions. So it is desirable to build complex system by assembling highly cohesive loosely coupled large components, where cost of redesigning each of such adoptable components (or replacing by a better component) must be minimized.
Some[who?] argue that earlier computer scientists made this distinction, with Donald Knuth's theory of "literate programming" optimistically assuming there was convergence between intuitive and formal models, and Edsger Dijkstra's theory in the article The Cruelty of Really Teaching Computer Science, which stated that programming was simply, and only, a branch of mathematics.[6][7]
In both forms, this notion has led to many academic debates[weasel words] about the pros and cons of the two approaches and possible strategies for uniting the two. Some[who?] consider the different strategies not as competitors, but as descriptions of the same problem from different points of view.[citation needed]
Differences from object-oriented programming[edit]
Proponents of object-oriented programming (OOP) maintain that software should be written according to a mental model of the actual or imagined objects it represents. OOP and the related disciplines of object-oriented analysis and object-oriented design focus on modeling real-world[citation needed] interactions and attempting to create "nouns" and "verbs" that can be used in more human-readable ways, ideally by end users as well as by programmers coding for those end users.
Component-based software engineering, by contrast, makes no such assumptions, and instead states that developers should construct software by gluing together prefabricated components - much like in the fields of electronics or mechanics. Some peers[who?] will even talk of modularizing systems as software components as a new programming paradigm. Example for possible paradigm: many experts feel adaptable to evolving needs is more important than reuse, since 80% of software engineering deals with maintaining or releasing new versions. So it is desirable to build complex system by assembling highly cohesive loosely coupled large components, where cost of redesigning each of such adoptable components (or replacing by a better component) must be minimized.
Some[who?] argue that earlier computer scientists made this distinction, with Donald Knuth's theory of "literate programming" optimistically assuming there was convergence between intuitive and formal models, and Edsger Dijkstra's theory in the article The Cruelty of Really Teaching Computer Science, which stated that programming was simply, and only, a branch of mathematics.[6][7]
In both forms, this notion has led to many academic debates[weasel words] about the pros and cons of the two approaches and possible strategies for uniting the two. Some[who?] consider the different strategies not as competitors, but as descriptions of the same problem from different points of view.[citation needed]
การแปล กรุณารอสักครู่..
