Connections Between the Software Crisis and Object- Oriented Programming
Total Page:16
File Type:pdf, Size:1020Kb
Load more
Recommended publications
-
QATAR ASW ONLINE SCRIPT V.8.0 Pages
“DEXIGN THE FUTURE: Innovation for Exponential Times” ARNOLD WASSERMAN COMMENCEMENT ADDRESS VIRGINIA COMMONWEALTH UNIVERSITY IN QATAR 2 MAY 2016 مساء الخير .Good afternoon It is an honor to be invited to address you on this important day. Today you artists and designers graduate into the future. Do you think about the future? Of course you do. But how do you think about the future? Is the future tangible - or is it intangible ? Is it a subject for rational deliberation? Or is it an imagined fantasy that forever recedes before us? Is the future simply whatever happens to us next? Or is it something we deliberately create? Can we Dexign the Future? What I would like us to think about for the next few moments is how creative professionals like yourselves might think about the future. What I have to say applies as much to art as it does to design. Both are technologies of creative innovation. I will take the liberty here of calling it all design. My speech is also available online. There you can follow a number of links to what I will talk about here. The future you are graduating into is an exponential future. What that means is that everything is happening faster and at an accelerating rate. For example, human knowledge is doubling every 12 months. And that curve is accelerating. An IBM researcher foresees that within a few years knowledge will be doubling every 12 hours as we build out the internet of things globally. This acceleration of human knowledge implies that the primary skill of a knowledge worker like yourself is research, analysis and synthesis of the not-yet-known. -
Retrocomputing As Preservation and Remix
Retrocomputing as Preservation and Remix Yuri Takhteyev Quinn DuPont University of Toronto University of Toronto [email protected] [email protected] Abstract This paper looks at the world of retrocomputing, a constellation of largely non-professional practices involving old computing technology. Retrocomputing includes many activities that can be seen as constituting “preservation.” At the same time, it is often transformative, producing assemblages that “remix” fragments from the past with newer elements or joining together historic components that were never combined before. While such “remix” may seem to undermine preservation, it allows for fragments of computing history to be reintegrated into a living, ongoing practice, contributing to preservation in a broader sense. The seemingly unorganized nature of retrocomputing assemblages also provides space for alternative “situated knowledges” and histories of computing, which can sometimes be quite sophisticated. Recognizing such alternative epistemologies paves the way for alternative approaches to preservation. Keywords: retrocomputing, software preservation, remix Recovering #popsource In late March of 2012 Jordan Mechner received a shipment from his father, a box full of old floppies. Among them was a 3.5 inch disk labelled: “Prince of Persia / Source Code (Apple) / ©1989 Jordan Mechner (Original).” Mechner’s announcement of this find on his blog the next day took the world of nerds by storm.1 Prince of Persia, a game that Mechner single-handedly developed in the late 1980s, revolutionized computer games when it came out due to its surprisingly realistic representation of human movement. After being ported to DOS and Apple’s Mac OS in the early 1990s the game sold 2 million copies (Pham, 2001). -
Simula Mother Tongue for a Generation of Nordic Programmers
Simula! Mother Tongue! for a Generation of! Nordic Programmers! Yngve Sundblad HCI, CSC, KTH! ! KTH - CSC (School of Computer Science and Communication) Yngve Sundblad – Simula OctoberYngve 2010Sundblad! Inspired by Ole-Johan Dahl, 1931-2002, and Kristen Nygaard, 1926-2002" “From the cold waters of Norway comes Object-Oriented Programming” " (first line in Bertrand Meyer#s widely used text book Object Oriented Software Construction) ! ! KTH - CSC (School of Computer Science and Communication) Yngve Sundblad – Simula OctoberYngve 2010Sundblad! Simula concepts 1967" •# Class of similar Objects (in Simula declaration of CLASS with data and actions)! •# Objects created as Instances of a Class (in Simula NEW object of class)! •# Data attributes of a class (in Simula type declared as parameters or internal)! •# Method attributes are patterns of action (PROCEDURE)! •# Message passing, calls of methods (in Simula dot-notation)! •# Subclasses that inherit from superclasses! •# Polymorphism with several subclasses to a superclass! •# Co-routines (in Simula Detach – Resume)! •# Encapsulation of data supporting abstractions! ! KTH - CSC (School of Computer Science and Communication) Yngve Sundblad – Simula OctoberYngve 2010Sundblad! Simula example BEGIN! REF(taxi) t;" CLASS taxi(n); INTEGER n;! BEGIN ! INTEGER pax;" PROCEDURE book;" IF pax<n THEN pax:=pax+1;! pax:=n;" END of taxi;! t:-NEW taxi(5);" t.book; t.book;" print(t.pax)" END! Output: 7 ! ! KTH - CSC (School of Computer Science and Communication) Yngve Sundblad – Simula OctoberYngve 2010Sundblad! -
Chapter 1 Issues—The Software Crisis
Chapter 1 Issues—The Software Crisis 1. Introduction to Chapter This chapter describes some of the current issues and problems in system development that are caused The term "software crisis" has been used since the by software—software that is late, is over budget, late 1960s to describe those recurring system devel- and/or does not meet the customers' requirements or opment problems in which software development needs. problems cause the entire system to be late, over Software is the set of instructions that govern the budget, not responsive to the user and/or customer actions of a programmable machine. Software includes requirements, and difficult to use, maintain, and application programs, system software, utility soft- enhance. The late Dr. Winston Royce, in his paper ware, and firmware. Software does not include data, Current Problems [1], emphasized this situation when procedures, people, and documentation. In this tuto- he said in 1991: rial, "software" is synonymous with "computer pro- grams." The construction of new software that is both Because software is invisible, it is difficult to be pleasing to the user/buyer and without latent certain of development progress or of product com- errors is an unexpectedly hard problem. It is pleteness and quality. Software is not governed by the perhaps the most difficult problem in engi- physical laws of nature: there is no equivalent of neering today, and has been recognized as such Ohm's Law, which governs the flow of electricity in a for more than 15 years. It is often referred to as circuit; the laws of aerodynamics, which act to keep an the "software crisis". -
Design and Implementation of an Optionally-Typed Functional Programming Language
Design and Implementation of an Optionally-Typed Functional Programming Language Shaobai Li Electrical Engineering and Computer Sciences University of California at Berkeley Technical Report No. UCB/EECS-2017-215 http://www2.eecs.berkeley.edu/Pubs/TechRpts/2017/EECS-2017-215.html December 14, 2017 Copyright © 2017, by the author(s). All rights reserved. Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specific permission. Design and Implementation of an Optionally-Typed Functional Programming Language by Patrick S. Li A dissertation submitted in partial satisfaction of the requirements for the degree of Doctor of Philosophy in Engineering { Electrical Engineering and Computer Sciences in the Graduate Division of the University of California, Berkeley Committee in charge: Professor Koushik Sen, Chair Adjunct Professor Jonathan Bachrach Professor George Necula Professor Sara McMains Fall 2017 Design and Implementation of an Optionally-Typed Functional Programming Language Copyright 2017 by Patrick S. Li 1 Abstract Design and Implementation of an Optionally-Typed Functional Programming Language by Patrick S. Li Doctor of Philosophy in Engineering { Electrical Engineering and Computer Sciences University of California, Berkeley Professor Koushik Sen, Chair This thesis describes the motivation, design, and implementation of L.B. Stanza, an optionally- typed functional programming language aimed at helping programmers tackle the complexity of architecting large programs and increasing their productivity across the entire software development life cycle. -
A Model of Inheritance for Declarative Visual Programming Languages
An Abstract Of The Dissertation Of Rebecca Djang for the degree of Doctor of Philosophy in Computer Science presented on December 17, 1998. Title: Similarity Inheritance: A Model of Inheritance for Declarative Visual Programming Languages. Abstract approved: Margaret M. Burnett Declarative visual programming languages (VPLs), including spreadsheets, make up a large portion of both research and commercial VPLs. Spreadsheets in particular enjoy a wide audience, including end users. Unfortunately, spreadsheets and most other declarative VPLs still suffer from some of the problems that have been solved in other languages, such as ad-hoc (cut-and-paste) reuse of code which has been remedied in object-oriented languages, for example, through the code-reuse mechanism of inheritance. We believe spreadsheets and other declarative VPLs can benefit from the addition of an inheritance-like mechanism for fine-grained code reuse. This dissertation first examines the opportunities for supporting reuse inherent in declarative VPLs, and then introduces similarity inheritance and describes a prototype of this model in the research spreadsheet language Forms/3. Similarity inheritance is very flexible, allowing multiple granularities of code sharing and even mutual inheritance; it includes explicit representations of inherited code and all sharing relationships, and it subsumes the current spreadsheet mechanisms for formula propagation, providing a gradual migration from simple formula reuse to more sophisticated uses of inheritance among objects. Since the inheritance model separates inheritance from types, we investigate what notion of types is appropriate to support reuse of functions on different types (operation polymorphism). Because it is important to us that immediate feedback, which is characteristic of many VPLs, be preserved, including feedback with respect to type errors, we introduce a model of types suitable for static type inference in the presence of operation polymorphism with similarity inheritance. -
Reading List
EECS 101 Introduction to Computer Science Dinda, Spring, 2009 An Introduction to Computer Science For Everyone Reading List Note: You do not need to read or buy all of these. The syllabus and/or class web page describes the required readings and what books to buy. For readings that are not in the required books, I will either provide pointers to web documents or hand out copies in class. Books David Harel, Computers Ltd: What They Really Can’t Do, Oxford University Press, 2003. Fred Brooks, The Mythical Man-month: Essays on Software Engineering, 20th Anniversary Edition, Addison-Wesley, 1995. Joel Spolsky, Joel on Software: And on Diverse and Occasionally Related Matters That Will Prove of Interest to Software Developers, Designers, and Managers, and to Those Who, Whether by Good Fortune or Ill Luck, Work with Them in Some Capacity, APress, 2004. Most content is available for free from Spolsky’s Blog (see http://www.joelonsoftware.com) Paul Graham, Hackers and Painters, O’Reilly, 2004. See also Graham’s site: http://www.paulgraham.com/ Martin Davis, The Universal Computer: The Road from Leibniz to Turing, W.W. Norton and Company, 2000. Ted Nelson, Computer Lib/Dream Machines, 1974. This book is now very rare and very expensive, which is sad given how visionary it was. Simon Singh, The Code Book: The Science of Secrecy from Ancient Egypt to Quantum Cryptography, Anchor, 2000. Douglas Hofstadter, Goedel, Escher, Bach: The Eternal Golden Braid, 20th Anniversary Edition, Basic Books, 1999. Stuart Russell and Peter Norvig, Artificial Intelligence: A Modern Approach, 2nd Edition, Prentice Hall, 2003. -
The Past, Present, and Future of Software Evolution
The Past, Present, and Future of Software Evolution Michael W. Godfrey Daniel M. German Software Architecture Group (SWAG) Software Engineering Group School of Computer Science Department of Computer Science University of Waterloo, CANADA University of Victoria, CANADA email: [email protected] email: [email protected] Abstract How does our system compare to that of our competitors? How easy would it be to port to MacOS? Are users still Change is an essential characteristic of software devel- angry about the spyware incident? As new features are de- opment, as software systems must respond to evolving re- vised and deployed, as new runtime platforms are envis- quirements, platforms, and other environmental pressures. aged, as new constraints on quality attributes are requested, In this paper, we discuss the concept of software evolu- so must software systems continually be adapted to their tion from several perspectives. We examine how it relates changing environment. to and differs from software maintenance. We discuss in- This paper explores the notion of software evolution. We sights about software evolution arising from Lehman’s laws start by comparing software evolution to the related idea of software evolution and the staged lifecycle model of Ben- of software maintenance and briefly explore the history of nett and Rajlich. We compare software evolution to other both terms. We discuss two well known research results of kinds of evolution, from science and social sciences, and we software evolution: Lehman’s laws of software evolution examine the forces that shape change. Finally, we discuss and the staged lifecycle model of Bennett and Rajlich. We the changing nature of software in general as it relates to also relate software evolution to biological evolution, and evolution, and we propose open challenges and future di- discuss their commonalities and differences. -
Software Engineering and Ethics: When Code Goes Bad
Software Engineering and Ethics: when code goes bad Once upon a time, estimates for the Strategic Defense Initiative (SDI or ``Star Wars'') claimed that there would be 30 million lines of code, all bug free. This is at least three orders of magnitude greater than ever has been achieved. ... What have we learned since then? 2017 TSP (MSc CCN) 1 Lecture Plan It is a bad plan that admits of no modification Publilius Syrus •Software Crisis •Ethics •Software Engineering •Software Engineering and Ethics •The root of the problem - computer science boundaries? •When code goes bad - education through classic examples •Proposals for the future 2017 TSP (MSc CCN) 2 Software Crisis Do you recognise this? 3 When everyone is wrong Software Engineering and “Bugs” everyone is right Nivelle de La Chaussee QUESTION: What’s the difference between hardware and software ?… buy some hardware and you get a warranty, buy some software and you get a disclaimer The software crisis: •always late Does this really exist? •always over-budget •always buggy •always hard to maintain •always better the next time round … but never is! This doesn’t seem right … where are our ethics? 2017 TSP (MSc CCN) 4 Is there really a crisis? … To avoid crisis, just hire the best people … look at the advances we have made Success in software development depends most upon the quality of the people involved. There is more software to be developed than there are capable developers to do it. Demand for engineers will continue to outstrip supply for the foreseeable future. Complacency has already set in … some firms acknowledge that many of their engineers make negative contribution. -
A Brief History of Software Engineering Niklaus Wirth ([email protected]) (25.2.2008)
1 A Brief History of Software Engineering Niklaus Wirth ([email protected]) (25.2.2008) Abstract We present a personal perspective of the Art of Programming. We start with its state around 1960 and follow its development to the present day. The term Software Engineering became known after a conference in 1968, when the difficulties and pitfalls of designing complex systems were frankly discussed. A search for solutions began. It concentrated on better methodologies and tools. The most prominent were programming languages reflecting the procedural, modular, and then object-oriented styles. Software engineering is intimately tied to their emergence and improvement. Also of significance were efforts of systematizing, even automating program documentation and testing. Ultimately, analytic verification and correctness proofs were supposed to replace testing. More recently, the rapid growth of computing power made it possible to apply computing to ever more complicated tasks. This trend dramatically increased the demands on software engineers. Programs and systems became complex and almost impossible to fully understand. The sinking cost and the abundance of computing resources inevitably reduced the care for good design. Quality seemed extravagant, a loser in the race for profit. But we should be concerned about the resulting deterioration in quality. Our limitations are no longer given by slow hardware, but by our own intellectual capability. From experience we know that most programs could be significantly improved, made more reliable, economical and comfortable to use. The 1960s and the Origin of Software Engineering It is unfortunate that people dealing with computers often have little interest in the history of their subject. -
STEPS Toward Expressive Programming Systems, 2010 Progress Report Submitted to the National Science Foundation (NSF) October 2010
STEPS Toward Expressive Programming Systems, 2010 Progress Report Submitted to the National Science Foundation (NSF) October 2010 Viewpoints Research Institute, 1209 Grand Central Avenue, Glendale, CA 91201 t: (818) 332-3001 f: (818) 244-9761 VPRI Technical Report TR-2010-004 NSF Award: 0639876 Year 4 Annual Report: October 2010 STEPS Toward Expressive Programming Systems Viewpoints Research Institute, Glendale CA Important Note For Viewing The PDF Of This Report We have noticed that Adobe Reader and Acrobat do not do the best rendering of scaled pictures. Try different magnifications (e.g. 118%) to find the best scale. Apple Preview does a better job. Table Of Contents STEPS For The General Public 2 STEPS Project Introduction 3 STEPS In 2010 5 The “Frank” Personal Computing System 5 The Parts Of Frank 7 1. DBjr 7 a. User Interface Approach 9 b. Some of the Document Styles We’ve Made 11 2. LWorld 17 3. Gezira/Nile 18 4. NotSqueak 20 5. Networking 20 6. OMeta 22 7. Nothing 22 2010 STEPS Experiments And Papers 23 Training and Development 26 Outreach Activities 26 References 27 Appendix 1: Nothing Grammar in OMeta 28 Appendix 2: A Copying Garbage Collector in Nothing 30 VPRI Technical Report TR-2010-004 A new requirement for NSF reports is to include a few jargon‑free paragraphs to help the general public un‑ derstand the nature of the research. This seems like a very good idea. Here is our first attempt. STEPS For The General Public If computing is important—for daily life, learning, business, national defense, jobs, and more—then qualitatively advancing computing is extremely important. -
Arxiv:2105.00534V1 [Cs.SE] 2 May 2021 Solutions
Metadata Interpretation Driven Development J´ulioG.S.F. da Costaa,d, Reinaldo A. Pettac,d, Samuel Xavier-de-Souzaa,b,d, aGraduate Program of Electrical and Computer Engineering bDepartamento de Engenharia de Computa¸c~aoe Automa¸c~ao cDepartamento de Geologia dUniversidade Federal do Rio Grande do Norte, Natal, RN, Brazil, 59078-900 Abstract Context: Despite decades of engineering and scientific research efforts, sep- aration of concerns in software development remains not fully achieved. The ultimate goal is to truly allow code reuse without large maintenance and evo- lution costs. The challenge has been to avoid the crosscutting of concerns phe- nomenon, which has no apparent complete solution. Objective: In this paper, we show that business-domain code inscriptions play an even larger role in this challenge than the crosscutting of concerns. We then introduce a new methodology, called Metadata Interpretation Driven Develop- ment (MIDD) that suggests a possible path to realize separation of concerns by removing functional software concerns from the coding phase. Method: We propose a change in the perspective for building software, from being based on object representation at the coding level to being based on ob- ject interpretation, whose definitions are put into layers of representation other than coding. The metadata of the domain data is not implemented at the level of the code. Instead, they are interpreted at run time. Results: As an important consequence, such constructs can be applied across functional requirements, across business domains, with no concerns regarding the need to rewrite or refactor code. We show how this can increase the (re)use of the constructs.