The Artima Developer Community
Sponsored Link

Weblogs Forum
The Holistic Approach to Software Engineering as a Way to Handle Complexity

74 replies on 5 pages. Most recent reply: Dec 9, 2010 9:28 AM by Mike Swaim

Welcome Guest
  Sign In

Go back to the topic listing  Back to Topic List Click to reply to this topic  Reply to this Topic Click to search messages in this forum  Search Forum Click for a threaded view of the topic  Threaded View   
Previous Topic   Next Topic
Flat View: This topic has 74 replies on 5 pages [ « | 1 2 3 4 5 | » ]
Vincent O'Sullivan

Posts: 724
Nickname: vincent
Registered: Nov, 2002

Re: The Holistic Approach to Software Engineering as a Way to Handle Complexity Posted: Nov 22, 2010 11:54 PM
Reply to this message Reply
Advertisement
Oh no! I'm just trying to picture a dinner party where the guests are a Chartered Accountant, a Mechanical Engineer and a Software Engineer. I doesn't bear thinking about! :)

John Wellbelove

Posts: 72
Nickname: garibaldi
Registered: Mar, 2008

Re: The Holistic Approach to Software Engineering as a Way to Handle Complexity Posted: Nov 23, 2010 1:46 AM
Reply to this message Reply
> Oh no! I'm just trying to picture a dinner party where
> the guests are a Chartered Accountant, a Mechanical
> Engineer and a Software Engineer.

Sounds like the first line of a joke.

"There was a Chartered Accountant, a Mechanical
Engineer and a Software Engineer at a dinner party and ..."

Actually I do know one.

A manager, hardware engineer and software engineer are driving down a mountain road. Suddenly the car swerves out of control, only just stopping before it plummets into the ravine. The manager suggests that they call the garage to come and look at it. The hardware engineer says he wants to look underneath to see what the problem was. The software engineer says they should carry on down the road to see if it happens again.

Achilleas Margaritis

Posts: 674
Nickname: achilleas
Registered: Feb, 2005

Re: The Holistic Approach to Software Engineering as a Way to Handle Complexity Posted: Nov 23, 2010 2:50 AM
Reply to this message Reply
If I may add my little 2 cents, the software crisis is mostly due to badly designed tools, not because of lack of certification. If the tools are improved, then the software crisis will be largely solved.



Posts: 18
Nickname: evarga
Registered: Feb, 2006

Re: The Holistic Approach to Software Engineering as a Way to Handle Complexity Posted: Nov 23, 2010 4:09 AM
Reply to this message Reply
> If I may add my little 2 cents, the software crisis is
> mostly due to badly designed tools, not because of lack of
> certification. If the tools are improved, then the
> software crisis will be largely solved.
>

1) What do you mean by "badly designed tools"?
2) How should the next generation of those magical tools look like, which are aimed to solve all our problems in the software industry?
3) Who will write those tools?

P.S. Daniel Dennett in his book Darwin's Dangerous Idea: Evolution and the Meanings of Life (1995) said something like this (I cannot remember now the exact words):

"Imagination is cheap if you do not need to bother with the details!"

Achilleas Margaritis

Posts: 674
Nickname: achilleas
Registered: Feb, 2005

Re: The Holistic Approach to Software Engineering as a Way to Handle Complexity Posted: Nov 23, 2010 4:41 AM
Reply to this message Reply
> 1) What do you mean by "badly designed tools"?

Current tools do not promote correctness and ease of use as much they should and could.

> 2) How should the next generation of those magical tools
> look like, which are aimed to solve all our problems in
> the software industry?

It would be a combination of a platform, a programming language and a range of design tools.

> 3) Who will write those tools?

There are plenty of experienced people in the industry. They just lack the interest to write them.



Posts: 18
Nickname: evarga
Registered: Feb, 2006

Re: The Holistic Approach to Software Engineering as a Way to Handle Complexity Posted: Nov 23, 2010 4:52 AM
Reply to this message Reply
>
> It would be a combination of a platform, a programming
> language and a range of design tools.
>

Thank you for this exceedingly detailed specification! I would have couple of more questions actually, but those are really "minor" technical issues! :-)

>
> I think you are selling this to the wrong crowd.
>

James, I 100% agree with you! :-)

John Wellbelove

Posts: 72
Nickname: garibaldi
Registered: Mar, 2008

Re: The Holistic Approach to Software Engineering as a Way to Handle Complexity Posted: Nov 23, 2010 6:05 AM
Reply to this message Reply
> Current tools do not promote correctness and ease of use as much they should and could.

Even if the tools did, poor software engineers will still be poor software engineers and will produce poor code. The most I can see that you would achieve is 'damage limitation'.

Achilleas Margaritis

Posts: 674
Nickname: achilleas
Registered: Feb, 2005

Re: The Holistic Approach to Software Engineering as a Way to Handle Complexity Posted: Nov 23, 2010 6:09 AM
Reply to this message Reply
> Thank you for this exceedingly detailed specification! I
> would have couple of more questions actually, but those
> are really "minor" technical issues! :-)

I don't want to spam the board with my opinion. I can expand on it, if you are interested, perhaps privately if you wish, so as not to disturb the other users of Artima.

Achilleas Margaritis

Posts: 674
Nickname: achilleas
Registered: Feb, 2005

Re: The Holistic Approach to Software Engineering as a Way to Handle Complexity Posted: Nov 23, 2010 7:34 AM
Reply to this message Reply
> Thank you for this exceedingly detailed specification! I
> would have couple of more questions actually, but those
> are really "minor" technical issues! :-)

It's quite a long list of things, and I don't want to bore you with it. I'll focus on the most important issues:

1) make the computer information-aware. Computers are currently information-agnostic.
2) make the network transparent both to the developer and the end user.
3) manage security all through out the various levels of the architecture.
4) improve the programming languages by incorporating more knowledge into them.
5) improve the development workflow by making it more visual and more continuous.



Posts: 18
Nickname: evarga
Registered: Feb, 2006

Re: The Holistic Approach to Software Engineering as a Way to Handle Complexity Posted: Nov 23, 2010 11:03 AM
Reply to this message Reply
Please, remember that it is absolutely fine to vision about the next generation of tools. I even suggest you to collect your ideas and publish a separate article here, or somewhere else, about your idea. What I strongly object is the viewpoint that tools alone will solve all problems in our industry. It is hardly believable that we will encounter soon a new silver-bullet in the software industry. Even if we do, I doubt it will diminish the importance of the people’s role in our profession!

If you look back in the past, from 50s till today, then you may surely notice tremendous advances in the field of development tools. Today we have an explosion of new programming languages. Just look around how many of them target the JVM (Gosu, Clojure, Fantom, Scala, just to name the main ones).

Multiparadigm languages became very popular, although the basic idea is very old, but I do not think that some poor developer will not be able quite quickly find a way to shoot himself in the foot (indirectly to shoot the end users, too) with any of those languages. Take, for example, Scala (I’m otherwise with Scala from the very beginning, and I do like it). You can reshape it in any way you like (transform it, for example, into a domain language), and put into it as many knowledge as you want in a scalable fashion. Nevertheless, it will always require an experienced developer to make use of all those power.

Any attempt to lessen the importance of people in our industry is doomed to a failure! I’m sure that experienced software engineers will still be much demanded and well payed even in the 22nd century.

Achilleas Margaritis

Posts: 674
Nickname: achilleas
Registered: Feb, 2005

Re: The Holistic Approach to Software Engineering as a Way to Handle Complexity Posted: Nov 23, 2010 11:24 AM
Reply to this message Reply
> Any attempt to lessen the importance of people in our
> industry is doomed to a failure! I’m sure that experienced
> software engineers will still be much demanded and well
> payed even in the 22nd century.

Sure, people play an important role. But there is so much room for improvement in the tools we use. Even if the certification process you mention is spread worldwide, there will be no progress in the field. The software crisis will not be solved until the main issues of computers are solved.

Alex Stojan

Posts: 4
Nickname: staksi
Registered: Sep, 2010

Re: The Holistic Approach to Software Engineering as a Way to Handle Complexity Posted: Nov 23, 2010 5:23 PM
Reply to this message Reply
> 4) improve the programming languages by incorporating more knowledge into them.

Achilleas,
Can you explain your idea in more detail? I'm also a bit sceptical about it because to me programming is basically about building new abstractions on top of primitives provided by the machine and the language - I just don't see a way around that. People sometimes mention Prolog in this context, but Prolog system is just one additional abstraction layer that's also based on lower-level primitives used to build it.
So, what exactly do you mean by languages with knowledge?

Kay Schluehr

Posts: 302
Nickname: schluehk
Registered: Jan, 2005

Re: The Holistic Approach to Software Engineering as a Way to Handle Complexity Posted: Nov 23, 2010 9:09 PM
Reply to this message Reply
What I like about the proposal is the re-integration of faculties into one single description, and calling it SE ... why not?

I'm also open to certification but less so about the most likely form of examination which is a multiple-choice test, used to memorize facts by the candidate, conceptualized as a Cartesian, god-like, disembodied, pure mind - Dijkstras Mozart fantasy - which has the only benefit of keeping evaluation costs low for the "teacher". A systematic approach to build software might be one half of the truth about SE ( the scientific reminiscence - caring about objective facts and correctness ), the other half is what Bruce Eckel called simply "writing", which is the performance of the embodied mind. It is irrelevant if one can memorize 100 design pattern, when they don't show up in the code and as others pointed out here, even the selection of the right tools ( and of course programming languages! ) is a crucial element of authorship. I recently stumbled across a "Design Defence" written by a group of people who published yet another web-framework. This is quite interesting because it adds reflection value to the other writing activities which more directly attempt to address use value.

"Writing" is not a metaphor. There is nothing imaginary about it and it is even indifferent with respect to the distinction between theory and practice. So we have a holistic concept to start with. What distinguishes writing practices is the ability to reason about correctness and apply objective criteria to its products.

Achilleas Margaritis

Posts: 674
Nickname: achilleas
Registered: Feb, 2005

Re: The Holistic Approach to Software Engineering as a Way to Handle Complexity Posted: Nov 24, 2010 3:37 AM
Reply to this message Reply
> > 4) improve the programming languages by incorporating
> more knowledge into them.
>
> Achilleas,
> Can you explain your idea in more detail? I'm also a bit
> sceptical about it because to me programming is basically
> about building new abstractions on top of primitives
> provided by the machine and the language - I just don't
> see a way around that. People sometimes mention Prolog in
> this context, but Prolog system is just one additional
> abstraction layer that's also based on lower-level
> primitives used to build it.
> So, what exactly do you mean by languages with knowledge?

Ok, here is an example: We cannot tell to the computer today "build me a customers database". The computer has no notion of what a customer is. If it had the notion, it could propose a specific customers database template which we would then modify to suit our needs.

There are plenty of things we have to do over and over in each new application; things that are the same to a large extend with previous applications but we cannot reuse or customize. This is the knowledge that is missing today. Programming languages, as they are today, make it hard to express that knowledge in a form that is immediately available to us.



Posts: 18
Nickname: evarga
Registered: Feb, 2006

Re: The Holistic Approach to Software Engineering as a Way to Handle Complexity Posted: Nov 24, 2010 5:05 AM
Reply to this message Reply
>
> There are plenty of things we have to do over and over in
> each new application; things that are the same to a large
> extend with previous applications but we cannot reuse or
> customize. This is the knowledge that is missing today.
> Programming languages, as they are today, make it hard to
> express that knowledge in a form that is immediately
> available to us.
>

I see now what you are basically trying to say. Actually, this phenomenon is a pretty known conundrum in the field of software engineering, and in the software industry in general, and it is called Reuse at Large. For more details, please, refer to the book (written by Robert L. Glass) what I have cited in the References section of the article. He succinctly explains the differences between Resue in Small and Reuse at Large, as well as, the associated problems.

Once we solve Reuse at Large, it will surely give a considerable positive push to our field toward achieving higher productivity and, after all, quality. However, the aforementioned solution requires much broader changes, not something just limited to programming languages.

I had attended (couple of years ago) in Budapest, Hungary a lecture held by Sir Charles Antony Richard Hoare about the grand challenges in computer research, more specifically about on such challenge: the verifying compiler (for more information about the topic, please, visit http://portal.acm.org/citation.cfm?id=602403). That dream, when comes true (one day, hopefully), will probably change the way we handle things in our industry by nearly 180 degrees. Nevertheless, even then software professionals will be still the key players in the industry. New grand challenges will emerge, because the environment is not static. The software industry will need to solve more and more complex issues in the future.

Flat View: This topic has 74 replies on 5 pages [ « | 1  2  3  4  5 | » ]
Topic: Java Enums want to be Classes Previous Topic   Next Topic Topic: How Has Functional Programming Influenced Your Coding Style?

Sponsored Links



Google
  Web Artima.com   

Copyright © 1996-2019 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use