File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
The moose likes Agile and Other Processes and the fly likes Making Software less complex Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Engineering » Agile and Other Processes
Bookmark "Making Software less complex" Watch "Making Software less complex" New topic
Author

Making Software less complex

HS Thomas
Ranch Hand

Joined: May 15, 2002
Posts: 3404
Two articles on making Software less complex.
Well actually three.
Everyone's a programmer
"Software �has become a field where we focus on incremental improvements in processes,� he says. �That course is futile, because it can never solve the problem of human imperfection.�
What Simonyi proposes instead is a revolutionary change in how we write software, and even in how we think about software. �Conventional improvements people make come at the expense of forgetting what software is all about,� he says.
Why does software need a revolutionary change? Because today it is a technology in crisis, where its complexity has far outrun our ability to comprehend it."

Extreme Programming The Zero G experience
"Zero G is a survivor. The San Francisco company makes installation software�the programs that run when you�re putting new software on your PC. Its headquarters are in the once booming south-of-Market area, where it has remained happily profitable even as its former dot-com neighbors have disappeared. But it almost bit the dust along with them, says president and cofounder Eric N. Shapiro�not because of the economy, but because of the slapdash way it wrote software before adopting a methodology known as �extreme programming.�"
From Artificial Intelligence to Artificial Biology
"So software needs to be designed to survive the bugs. It should have the biological properties of redundancy and regeneration: parts should be able to �die off� without affecting the whole."
"Even today, programs such as Microsoft�s Windows XP operating system are beginning to exhibit the biologically inspired ability to detect problems and to fix them, albeit in a simple way, by storing models of their original configurations. The programs can then be restored to their original states if bugs corrupt them later."
regards
[ November 08, 2003: Message edited by: HS Thomas ]
Ilja Preuss
author
Sheriff

Joined: Jul 11, 2001
Posts: 14112
Originally posted by HS Thomas:
Two articles on making Software less complex.
Well actually three.
Everyone's a programmer
"Software �has become a field where we focus on incremental improvements in processes,� he says. �That course is futile, because it can never solve the problem of human imperfection.�
What Simonyi proposes instead is a revolutionary change in how we write software, and even in how we think about software. �Conventional improvements people make come at the expense of forgetting what software is all about,� he says.
Why does software need a revolutionary change? Because today it is a technology in crisis, where its complexity has far outrun our ability to comprehend it."

Wow, what a hype!
Tell you what - I am modeling all the day, using high level code. My modeling language is called Java, and the drone-like work of constructing the program from my description is done by a software, called compiler. That way I can concentrate on what I am good at - designing solutions to my customers problem. And I haven't written one sorting algorithm since I left high school, by the way.
Also, our customers want to "program" our system, too. So we developed a small very high level language for them, so that they can tell parts of the system how they want them to behave. Surprisingly, that doesn't really make the system less complex - and even the customers descriptions contain errors now and then. Bummer.
Of course that doesn't mean that I wouldn't like to program in an even higher level language. I'd rather say that it's the logical next step, and that it is happening since the beginning of computers.
BTW, the first page seems to suggest that a canceled project is a wasted project. Tell you what - if you never have to cancel a project, that either means that you don't take any risky projects and limit yourself to the easy, low revenue ones; or it means that you don't monitor your projects for likeliness of success and run even the worst ones to its bitter end. Again, bummer.


The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
Ilja Preuss
author
Sheriff

Joined: Jul 11, 2001
Posts: 14112
Originally posted by HS Thomas:
Extreme Programming The Zero G experience

Take a look at the discussion - seems as if most of the article is bullshit. Nothing wrong with XP, though.
Ilja Preuss
author
Sheriff

Joined: Jul 11, 2001
Posts: 14112
Originally posted by HS Thomas:
From Artificial Intelligence to Artificial Biology
"So software needs to be designed to survive the bugs. It should have the biological properties of redundancy and regeneration: parts should be able to �die off� without affecting the whole."
"Even today, programs such as Microsoft�s Windows XP operating system are beginning to exhibit the biologically inspired ability to detect problems and to fix them, albeit in a simple way, by storing models of their original configurations. The programs can then be restored to their original states if bugs corrupt them later."
[/QB]

I am awaiting the first "allergic" programs - such as a webserver rebooting every time a 404 occurs... (BTW, this is funny: http://angelfire.lycos.com/404.html - reload to get more )
HS Thomas
Ranch Hand

Joined: May 15, 2002
Posts: 3404
I didn't know what to make of these. The first one seemed far-fetched the second was reasonable until I saw the discussion. As to the last one, so far I like Windows XP. I wouldn't like to guess what's happening behind the scenes. Spyware and all that.
regards
Stan James
(instanceof Sidekick)
Ranch Hand

Joined: Jan 29, 2003
Posts: 8791
One point of Fred Brooks' paper "No Silver Bullet" was that software is complex because the problems we want to solve are complex. You just can't leave much of that complexity out and still solve the problem. The trick is to avoid adding any unnecessary complexity. Programming languages can make a huge difference. In some the code looks like the business solution and in others every line of business logic is concealed in a fog of housekeeping code. Go too far toward the simple end and you get a toy language that is inflexible. Too far the other way you get C++.


A good question is never answered. It is not a bolt to be tightened into place but a seed to be planted and to bear more seed toward the hope of greening the landscape of the idea. John Ciardi
Valentin Crettaz
Gold Digger
Sheriff

Joined: Aug 26, 2001
Posts: 7610
"So software needs to be designed to survive the bugs. It should have the biological properties of redundancy and regeneration: parts should be able to �die off� without affecting the whole."
Well, this is a kind of chicken-and-egg situation. Bugs are created by humans who make software. Saying that software has to survive bugs implies that software would have to take over humans in some sense. Matrix-like situation. Does it ring any bell? But the idea of redundancy and regeneration is really cool. Some steps have been done in that area here at the Swiss Federal Institute of Technology. Researchers working there have invented what they call the Biowall, a bio-inspired, self-repairing, self-replicating and learning piece of electronics.
As for software, I think that as long as we keep building software with 3rd generation languages, we are doomed to fail. Software is always constructed for a specific purpose, i.e. for a specific application in a given domain. As a result, the most natural way of building software would be to use the language of that domain which of course builds on lower-level languages such as Java, C#, etc. But in my opinion, if we continue in the "do-everything-with-Java-or-C#-or-whatever" direction, we are just going nowhere. The complexity of software has been dramatically increasing and will continue to do so. We, humans, have to catch up and find new or more intuitive ways of developing software. Don't get me wrong, I love Java and C#, but I still think that we need higher-level languages to build effective software. Using 3rd generation programming languages will not help build complex software-intensive systems in the long-term.
[ November 27, 2003: Message edited by: Valentin Crettaz ]

SCJP 5, SCJD, SCBCD, SCWCD, SCDJWS, IBM XML
[Blog] [Blogroll] [My Reviews] My Linked In
Ilja Preuss
author
Sheriff

Joined: Jul 11, 2001
Posts: 14112
Originally posted by Valentin Crettaz:
As for software, I think that as long as we keep building software with 3rd generation languages, we are doomed to fail. Software is always constructed for a specific purpose, i.e. for a specific application in a given domain. As a result, the most natural way of building software would be to use the language of that domain which of course builds on lower-level languages such as Java, C#, etc.

On the other hand you could argue that a domain specific language doesn't suffer, either - what you actually need is a project specific language. And in fact that is what I think every good, effective team does: building it's own project specific language, using a lower-level language such as Java, C#, Ruby, etc.
Lasse Koskela
author
Sheriff

Joined: Jan 23, 2002
Posts: 11962
    
    5
Originally posted by Ilja Preuss:
On the other hand you could argue that a domain specific language doesn't suffer, either
Yes, Ilja, I believe languages in general do not suffer...


Author of Test Driven (2007) and Effective Unit Testing (2013) [Blog] [HowToAskQuestionsOnJavaRanch]
Valentin Crettaz
Gold Digger
Sheriff

Joined: Aug 26, 2001
Posts: 7610
On the other hand you could argue that a domain specific language doesn't suffer, either - what you actually need is a project specific language. And in fact that is what I think every good, effective team does: building it's own project specific language, using a lower-level language such as Java, C#, Ruby, etc.
I'm not sure I get your point, Ilja... If I understand right, you say that for every project, a specific language for that project would have to be developed. If this is the case and assuming a huge diversity of projects out there, I can't really see how your are going to be able to reuse those project-specific languages on different projects. As you probably know, every project is unique, there are no two equivalent projects. You will always find tiny details that differentiate two projects.
On the other-hand, a domain-specific language could be reused for any project aiming at developping applications targeted at that domain.
Please, do shed some light on what you call project-specific language. Thank you
HS Thomas
Ranch Hand

Joined: May 15, 2002
Posts: 3404
I am hazarding a guess again. BPEL might be a project specific language.
Why does it remind me of COBOL ?
regards
Ilja Preuss
author
Sheriff

Joined: Jul 11, 2001
Posts: 14112
Originally posted by Lasse Koskela:
Yes, Ilja, I believe languages in general do not suffer...

Seems as if I suffered from "illiteratitis", though.
(Of course I meant "suffice" - as if you didn't already guess so...)
Lasse Koskela
author
Sheriff

Joined: Jan 23, 2002
Posts: 11962
    
    5
I am hazarding a guess again. BPEL might be a project specific language.
Are you talking about BPEL as in Business Process Execution Language for Web Services? That's hardly project specific
HS Thomas
Ranch Hand

Joined: May 15, 2002
Posts: 3404
The key-word ( I thought) is Business.
Common things that Businesses might want to do ?
That's pretty high-level , IMHO. Won't any project want to do some of those things ?
Oh I see what you mean. It won't be exactly project specific.
regards
[ November 28, 2003: Message edited by: HS Thomas ]
HS Thomas
Ranch Hand

Joined: May 15, 2002
Posts: 3404
Originally posted by Valentin Crettaz:
"So software needs to be designed to survive the bugs. It should have the biological properties of redundancy and regeneration: parts should be able to �die off� without affecting the whole."
Well, this is a kind of chicken-and-egg situation. Bugs are created by humans who make software. Saying that software has to survive bugs implies that software would have to take over humans in some sense. Matrix-like situation. Does it ring any bell? But the idea of redundancy and regeneration is really cool.
[ November 27, 2003: Message edited by: Valentin Crettaz ]

PCs and laptop regeneration is already underway. You can download the upgrades as and when you want them. Some PC shops are already renovating old models this way creating a new market fo them which should drive prices of new models down - maybe.
Best to back up first though. I ran AdAware recently which seemed to get rid off essential system property files. As long as I can regenerate those again my PC is useless.
Regenration also has implications for supplying poorer countries with computing power.
regards
[ November 30, 2003: Message edited by: HS Thomas ]
Valentin Crettaz
Gold Digger
Sheriff

Joined: Aug 26, 2001
Posts: 7610
It is still not very clear to me what a project specific language looks like and what benefit it would bring.
Ilja, could you please have a look at my last message above. Thanks
[ December 01, 2003: Message edited by: Valentin Crettaz ]
Lasse Koskela
author
Sheriff

Joined: Jan 23, 2002
Posts: 11962
    
    5
Originally posted by Valentin Crettaz:
It is still not very clear to me what a project specific language looks like and what benefit it would bring.
Here's how I have understood the "project specific language":
  • Project Specific Language "extends" Domain Specific Language, but
  • Project Specific Language is tied into both the application domain concepts and the implementation

  • Am I even close to what Ilja intended?
     
    I agree. Here's the link: http://aspose.com/file-tools
     
    subject: Making Software less complex
     
    Similar Threads
    James Surowiecki: Technology and Happiness
    blog of Kathy - Pair Programming is NOT always a choice
    is software jobs for life time?
    New Team lead
    SVN vs GIT, opinions?