software engineering the genesis
TRANSCRIPT
SOFTWARE ENGINEERING THE GENESIS
Pawel Szulc
@rabbitonweb
Software engineers
“Software Engineering” 7th-11th Oct 1968
49years ago
“A software system can best be designed if the testing is interlaced with the designing
instead of being used after the design.”
“The good systems that are presently working were written by small groups. More than
twenty programmers working on a project is usually disastrous.”
“The reason that small groups have succeeded (...) is that there is a need for a certain structure of
communication, and a structure of decision making in the development of software. This succeeds with small
groups, because it can all be done intuitively by one person serving as most of the network. For large groups
to succeed, we (...) have to face organizational structure for communications and decisions.”
1. Flowchart until you think you understand the problem.
1. Flowchart until you think you understand the problem. 2. Write code until you realize that you don’t.
1. Flowchart until you think you understand the problem. 2. Write code until you realize that you don’t. 3. Go back and re-do the flowchart.
1. Flowchart until you think you understand the problem. 2. Write code until you realize that you don’t. 3. Go back and re-do the flowchart. 4. Write some more code and iterate to what you feel is the
correct solution.
“Selig’s picture requires a feedback loop, for monitoring of the system. One must collect
data on system performance, for use in future improvements.”
“Design and implementation proceeded in a number of stages. Each stage was typified by a period of intellectual activity followed by a
period of program reconstruction”
“Each stage produced a useable product and the period between the end of one stage and the start of the next provided the operational experience upon which the next design was
based.”
“In general the products of successive stages approached the final design requirement;
each stage included more facilities than the last.”
Speaking about waterfall...
“I believe in this concept, but the implementation described above is risky and invites failure. The testing phase which occurs at the end of the development cycle is the first event for which timing, storage, input/output transfers, etc., are experienced as distinguished from analyzed. (...) then invariably a major redesign is required. A simple (...) redo of some isolated code will not fix these kinds of difficulties. The required design changes are likely to be so disruptive that the software requirements upon which the design is based and which provides the rationale for everything are violated. Either the requirements must be modified, or a substantial change in the design is required. In effect the development process has returned to the origin and one can expect up to a lO0% overrun in schedule and/or costs.”
“There are 2 hard problems in computer science:
“There are 2 hard problems in computer science: cache invalidation,
“There are 2 hard problems in computer science: cache invalidation, naming things
“There are 2 hard problems in computer science: cache invalidation, naming things, and off-by-1 errors.
“There are 2 hard problems in computer science: cache invalidation, naming things, and off-by-1 errors.
Microservices
MicroservicesWhat is a microservice?
MicroservicesWhat is a difference between Microservices and SOA?
When we've talked about microservices a common question
is whether this is just Service Oriented Architecture (SOA)
that we saw a decade ago. (...) The problem, however, is that
SOA means too many different things, (...) the fact that
SOA means such different things means it's valuable to
have a term that more crisply defines this architectural
style.
“Alexander Pasik, a former analyst at Gartner, coined the term SOA. (...) Pasik was driven to create term SOA because “client/server” had lost its classical meaning.”from “SOA in Practice: The Art of Distributed System Design” by Nicolai M. Josuttis
“The common notion that Gartner Group invented SOA is simply absurd. (...) the underlying approach to distributed computing was invented at least 15 years earlier.”
Are the problems being addressed and solved?
Go Language
Software Engineer?
Software Craftsman
Who to blame?
The light at the end of the tunnel...
Functional Programming
The End
Pawel Szulc
Slam Data
@rabbitonweb
http://rabbitonweb.com