CS551 Instructor-Yugi Lee A Tale of Three Disciplines and a Revolution – A Critique Name : Parameswara Reddy Vajrala Sid : 990023498 Paper Title : A Tale of Three Disciplines and a Revolution (IEEE Computer society, January 2004) Author : Jesse H.Poore Summary: In this Paper, author talks about the three different disciplines, namely, circuit engineering, genetic engineering and software engineering, comparing the developmental approach followed by each discipline and academic curriculum with industry standards. Software engineering, even with same level of complexity with the other two disciplines, lacks proper approach to development of software and software systems continue to have ever larger error counts resulting in increase of risk to public safety, higher costs of development and increasing financial risk of undertaking a software project. The main cause of lack of proper approach for the software development is that it doesn’t follow good science and engineering practices and the other reason is the gap between the software education and industry practices. Even with the efforts of many prominent personnel the gap remains same. Circuit Engineering: Basis for a circuit is a Boolean function. Mathematicians and engineers laid foundation by exploiting the Boolean algebra associated with circuits and they developed normal forms for complex functions using the primary operators which make it possible for them to build any circuit from the basic operators. Engineers defined larger units (components) and prescribed and cataloged their functional input and output relationship. Developers can reuse these components instead of building the circuits from scratch. With the advent of mathematical theory with innovations from physics and engineering, concept of finite state machines revolutionized the field of circuit engineering. With this advancement, the research was linked to undergraduate training, text book notation, and industry practice and there was consensus as to what constituted good professional practice. Genetic Engineering: genetic engineering is all about what a gene does, where it is located and which gene causes an observed phenomenon. Genetic instructions in a gene are like circuits to a function. Genetic engineering holds many parallels with circuit engineering in terms of mathematical applications and reuse of results. Genetic engineering industry and academia are committed to the idea that students will be trained in the appropriate life sciences, mathematics and computer science fundamentals with industry standards making them qualified workers. Software Engineering: Software engineering has all the benefits that other disciplines have. But with non-conformist intellect and massive amounts of investments it was deviated from becoming the disciplined science and engineering. Following are the few things for the failure of software engineering as a disciplined science. 1. Lack of standard notation and vocabulary with mathematical fidelity and engineering basis. 2. Lack of normal forms and cataloged components 3. Lack of standards for product usability and correctness. 4. Lack of curricula in close rapport with the work force. 5. Lack of workforce trained in the fundamentals and experienced in standard practice. Revolution: author comes up with three front’s solution to revolutionize the software engineering process making it worthy of public trust. 1. Certification: Establishing Certification protocols to certify software-hardware implementations, protocols justifying the use of programming language compilers that fail to enforce sound practices, certification protocols and centers for many consumer products and government regulatory agencies for software related to public safety. 2. Licensing: Establish regulatory authorities to license certain practitioners and processes associated with medical, financial systems and systems related to public safety. 3. Curriculum reform: Curriculum reform solves the problem from the root. Degree of disciplinary consensus depends on the academic curricula. Well defined curricula can produce qualified candidates to participate in the development of specific software intensive products. Strength: Methodology of Circuit and genetic engineering discussed in the paper can be adopted as a model for the software engineering to become a well defined discipline. Weakness: Paper is lacking more details about the certification, licensing and curriculum reform implementations. Implementation makes the development process makes more complex and increasing cost of development. Critical Questions: 1. It is difficult to certify a product, because an exhaustive testing is impossible most of the times and the normal testing is also done by the developer. Hence, certification is difficult to implement. How the certification can be implemented effectively? 2. Programming environments are changing day-by-day which makes it difficult to give a license to a process or practitioner. How the licensing thing is implemented? 3. Software engineering almost penetrated to almost all applications, how the unique standard notion can be implemented?