Over 500 years ago the basic sciences were not real science, because they had been evolving for centuries by relying on erroneous assumption that the Earth is static at the center.
The first principle is accurate answer to these basic questions: Is any planet located at the center of our planetary system (now we refer to as the solar system)? If any planet is at the center, which planet is at the center?
It is possible to find (or identify) right questions whose answers are first principles for each of the areas of any scientific discipline. For example, another question is, does any force of attraction exists between any two objects, where each having a mass? The answer is Yes, and Newton’s succeeded in quantifying the force of attraction in terms distance between the objects and their masses.
Of course, we still don’t know what is mass? But mankind knows proton and neutron have equal mass, while an electron has a fraction of the mass of a neutron. Does mankind know what gives them the mass? In another perspective, the mass of a particle is attraction that the particle exerts on another particle having mass. Although laymen things mass determines the attraction, it is equally true that the attraction determines the mass. For example, a huge body (made of matter) exerting no gravitational force would have no mass (so to speak). It can even pass by a black hole, as if nothing exist there. I believe, string theory trying to answer this kind of questions to solve this puzzle.
What would happen, if an elephant is hit by such huge body having a size of a bus and elementary particles of that body can’t pass through a body of the elephant made of electrons, protons and neutrons? Luckily in computer science we only deal with things much simpler than in the basic sciences.
With first principles, Elon Musk says: “you boil things down to the most fundamental truths … And then reason up from there”.
I believe, to make computer science a real science and software engineering a real engineering, we must find ‘firs principles’ for various branches such as CBSE (Component Based Software Engineering). How can we make the area of CBSE a real engineering by firmly grounded in sound scientific truths.
What are the logical first principles for CBSE? I believe, we must first answer questions such as: What are the physical components?
Does there exist any accurate description for the physical functional components? If the answer is Yes, is it possible to discover the accurate description for the physical functional component (e.g. a set of essential properties uniquely and universally shared by each and every known physical functional component)? If answer is Yes, is it possible to invent real software components having the essential properties, hence equivalent to the physical functional components.
Does there exist any accurate description for the CBD (Component Based Design) of large physical products? If the answer is Yes, is it possible to discover the accurate description for the CBD of physical products (e.g. a set of essential aspects or features uniquely and universally shared by each and every known design of large product designed by employing the CBD)? If answer is Yes, is it possible to achieve real CBSD (CBD for Software) having the essential features, hence equivalent to the CBD of large physical products.
I believe, to make computer science a real science and software engineering a real engineering, we must identify first principles in each of the areas and discover fundamental truths... And reason up from there. If there are errors in first principles (i.e. seed axioms) of a deeply entrenched paradigm, which has been evolving for decades, history shows that it is very complex endeavor: http://real-software-components.com/forum_blogs/BriefSummaryOfTruths.html#Chronology