Discussion:
Problems of Software engineering
(too old to reply)
Drink
2003-12-01 16:43:37 UTC
Permalink
Hi everybody,

I am making a report about what is in my opinion the most serious
problem in software engineering. Does any of you have some ideas about
that ? I was thinking about speaking of one of the following problems
that Ian Sommerville mentionned in his book (Software Engineering):
Legacy challenge, Heterogeneity challemge or delivery challenge.

Thanks for your help
b***@yahoo.com
2003-12-02 02:04:24 UTC
Permalink
Post by Drink
I am making a report about what is in my opinion the most serious
problem in software engineering.
I don't remember who said it now... But something to the effect that if
mathematicians made progress because they were standing on the shoulders of
giants, computer scientists just stand on each others toes.

There's a lot of truth to that. The "not invented here" syndrome is quite a
problem.
leslie
2003-12-02 07:38:00 UTC
Permalink
Drink (***@yahoo.fr) wrote:
: Hi everybody,
:
: I am making a report about what is in my opinion the most serious
: problem in software engineering. Does any of you have some ideas about
: that ? I was thinking about speaking of one of the following problems
: that Ian Sommerville mentionned in his book (Software Engineering):
: Legacy challenge, Heterogeneity challemge or delivery challenge.
:
: Thanks for your help
:

The maintenance phase of software costs ~90% of the total cost of
the software during its life cycle.

Has software engineering focused on maintenance enough to significantly
reduce the cost of maintenance ?

"Software Maintenance: The Problems and Its Solutions" by James Martin
and Carma L. McClure has the famous "iceberg" picture, showing software
maintenance as the submerged part of the iceberg.

--Jerry Leslie
Note: ***@jrlvax.houston.rr.com is invalid for email
Marc Girod
2003-12-02 08:42:14 UTC
Permalink
JL> The maintenance phase of software costs ~90% of the total cost of
JL> the software during its life cycle.

I don't want to underestimate the importance of maintenance, but I
would look for problems in other dimensions -- i.e. I don't believe
"maintenance" is the right focus to start looking for solutions.

I believe the challenge is to cope with complexity -- i.e. not to
reduce complexity, but to manage it. To reduce needless complexity, in
order to be able to tackle even more complexity.

To me, the number one problem is this of opacity, i.e. lack of
understanding of the relationships and dependencies between
identifiable blocks (configuration items).

The reasons for this opacity are all sorts of discontinuity:
commercial interests, legal aspects, politics inside organisations, as
well as tools, semantical weaknesses of interfaces etc...

And the best hope for a cure is open source and bottom-up SCM,
as a basis for competitive advantage. But I am a dreamer.
--
Marc Girod P.O. Box 323 Voice: +358-71 80 25581
Nokia NBI 00045 NOKIA Group Mobile: +358-50 38 78415
Valimo 21 / B616 Finland Fax: +358-71 80 61604
Phlip
2003-12-02 14:59:37 UTC
Permalink
Post by leslie
: I am making a report about what is in my opinion the most serious
: problem in software engineering. Does any of you have some ideas about
: that ? I was thinking about speaking of one of the following problems
: Legacy challenge, Heterogeneity challemge or delivery challenge.
The maintenance phase of software costs ~90% of the total cost of
the software during its life cycle.
This is an example of the numbness I spoke of. If that code were bug-free
and easy to change, we wouldn't get numb, and then give a special name to
the "high bug low velocity phase of development".
Post by leslie
Has software engineering focused on maintenance enough to significantly
reduce the cost of maintenance ?
Yes. Ship early and often. Make the whole cycle about maintenance, based on
bug-free code.
Post by leslie
"Software Maintenance: The Problems and Its Solutions" by James Martin
and Carma L. McClure has the famous "iceberg" picture, showing software
maintenance as the submerged part of the iceberg.
--
Phlip
http://www.c2.com/cgi/wiki?TestFirstUserInterfaces
Andrew Baker
2003-12-03 00:37:19 UTC
Permalink
"leslie" <***@JRLVAX.HOUSTON.RR.COM> wrote in message news:sjXyb.71657$***@twister.austin.rr.com...
[snip]>
Post by leslie
The maintenance phase of software costs ~90% of the total cost of
the software during its life cycle.
The cost of developing software is 90% of the total cost, and the cost of
maintainance is the other 90% ( following the 90/90 rule ;-)
Post by leslie
Has software engineering focused on maintenance enough to significantly
reduce the cost of maintenance ?
Interestingly enough, studies have shown that well designed and written code
has more money spent on maintainance than the old "spaghetti code". This is
believed to be due to the fact that no-one wants to touch bad code, so it
lingers in the darkness until it dies a slow and lonely death. As clean
code is easier to maintain, there is more maintainance and expansion, and
the life of the software is extended.

This goes against historical beliefs that more money is spent on maintainang
"bad" code than "good" code, but I have found it to be true in many of the
projects I have worked on.

Andrew.
CTips
2003-12-03 01:25:20 UTC
Permalink
Post by Andrew Baker
Interestingly enough, studies have shown that well designed and written code
has more money spent on maintainance than the old "spaghetti code". This is
believed to be due to the fact that no-one wants to touch bad code, so it
lingers in the darkness until it dies a slow and lonely death. As clean
code is easier to maintain, there is more maintainance and expansion, and
the life of the software is extended.
This goes against historical beliefs that more money is spent on maintainang
"bad" code than "good" code, but I have found it to be true in many of the
projects I have worked on.
It certainly seems logical. Do you remember what the studies were, or
how I could lay my hands on them?

Thanks!
Andrew Baker
2003-12-03 04:03:07 UTC
Permalink
I dont remember where I saw this, and I also want to get the info again. As
you say it does sound logical, and I know of many projects that have been
rewritten rather than maintained.

I know who pointed it out to me so I will try to track it down and update in
a future post.

Andrew.
Post by CTips
Post by Andrew Baker
Interestingly enough, studies have shown that well designed and written code
has more money spent on maintainance than the old "spaghetti code".
This is
Post by CTips
Post by Andrew Baker
believed to be due to the fact that no-one wants to touch bad code, so it
lingers in the darkness until it dies a slow and lonely death. As clean
code is easier to maintain, there is more maintainance and expansion, and
the life of the software is extended.
This goes against historical beliefs that more money is spent on maintainang
"bad" code than "good" code, but I have found it to be true in many of the
projects I have worked on.
It certainly seems logical. Do you remember what the studies were, or
how I could lay my hands on them?
Thanks!
John
2003-12-11 19:12:46 UTC
Permalink
Hi All,
Post by leslie
The maintenance phase of software costs ~90% of the total cost of
the software during its life cycle.
Has software engineering focused on maintenance enough to significantly
reduce the cost of maintenance?
I agree that this is the biggest problem now facing the software
industry, and I have written a solution to this problem. It is an
application generator that is totally unconcerned about the structure
of underlying database tables. This means that end users can change
the underlying tables as their needs change without worrying about
breaking their application code. Also, the generator remembers
customizations to generated code. This is important because it allows
the end user to regenerate their applications without losing their
customizations. All this leads to almost zero maintenance.

I have seen many US government software projects fail and millions of
tax dollars lost because of software that is dependent on table
structure and because of software that cannot be regenerated once
customizations have been made. But when I brought these issues up with
the Office of Naval Research and the National Institute for Standards
and Technology, there was little interest.

Connectivity and Bandwidth were the issues of yesterday. The biggest
information bottleneck we are facing today is the enormous amount of
time and cost involved in creating, maintaining, and changing
applications. Because without applications, Bandwidth and Connectivity
cannot be used.

These issues are being addressed by the computer science of Generative
Programing "Software that Writes Software"(Also called Extreme
Programing) and also Object Oriented Programing. These two
methodologies must be used together, because neither one alone is
capable of completely addressing the maintenance issue.

In order to promote my ideas to developers in industry and government,
I am issuing the following challenge:
I claim that, using the Abacus Application Generator; I can develop
your next MS SQL Server application, for you, in only one forth the
amount of the time it would take you. I also claim that the generated
application will be of better quality, versatility, and usefulness
than anything you can develop given four times the amount of time, it
takes me, to deliver your app.

The challenge will cost you nothing. All you have to do is send me the
TSQL scripts necessary to create your tables and to define the indexes
and foreign key relationships. My generator will do the job, and I
will deliver the finished and fully functional UI.exe along with a
finished and fully functional SQL Server back end which contains a
robust security system and a comprehensive data dictionary, completely
free of charge. So even if you loose the challenge, you will a gain a
new database application and perhaps a new way to greatly increase
your productivity and your profits.


The benefits of this system are as follows:

1. The system generates true Client Server and Multi Tier
applications.

2. There is zero coding for common functionality, i.e. Adds, Updates,
Deletes, Audit trail, Security, Rolling Down Data, Cascading Deletes,
Posting to General ledger etc.

3. There is zero work of any kind for generation of data entry
screens and their lookups.

4. The back end is completely independent from the front end. You can
hit the database with any application or user interface and still be
sure that you have complete security and valid data.

5. Easy navigation through out the application. The generated user
interface is a familiar modern metaphor with a navigation tree on top
or at the side and data entry screens at the bottom. Also, the
generated user interface remembers customizations to each data entry
screen. This allows you to make sweeping changes to the interface, and
regenerate all data entry screens, without loosing your
customizations.

6. Consistent look and feel via OOP Inheritance and code generators.

7. Major changes in look and functionality are made in one place
only, and ripple down to all affected parts of the system without
programmer intervention. Again, this was accomplished with OOP
inheritance and also with code generators.

8. Users to have the ability to create queries and reports on the
fly. And the ability to save and reload those queries and reports in
many formats including Excel and HTML.

9. Users to have complete flexibility in customizing the look and
feel of the system. The extent to which each user can customize the
interface must be seen to be believed. This high level of
customizability creates a high degree of user acceptance.

10. Logical use of hot keys and local popup menus allow for easy mouse
free operation, permitting the user to keep his or her hands on the
keyboard, if the user so desires.

11. All custom code added to generated data entry screens and
generated backend code persists after regeneration.

12. Comes with a business rule generator

13. Comes with a data import utility

14. Comes with a data revalidation utility to use when you change your
business rules.

Get all this without programming.

If you need to quickly build feature rich, bug free business
applications for MS SQL Server, then please call (201 665 8906) or
write to ***@aol.com
Alan Gauld
2003-12-11 22:58:42 UTC
Permalink
Post by John
Post by leslie
The maintenance phase of software costs ~90% of the total cost of
the software during its life cycle.
90% is probably a tad high, usually cited as between 70-80% but
thats not news, its one factor that sparked the research into
Software Engineering in the 1970's...
Post by John
Post by leslie
Has software engineering focused on maintenance enough to significantly
reduce the cost of maintenance?
It focussed on things that reduced the cost of maintenance but
the reduction has not been as much as was hoped and with
hindsight maybe the focus was misplaced.
Post by John
industry, and I have written a solution to this problem. It is an
application generator that is totally unconcerned about the structure
of underlying database tables.
Given that the biggest problem in software maintenance is
understanding the existing application and the impact of change,
an app generator won't help much. Self generating accurate
documentation would be far more useful. The lack of reliable
dsign documents that are intended for maintenance rather than
construction is one of the biggest cost factors in maintenance.
Post by John
Connectivity and Bandwidth were the issues of yesterday.
And they aren't today? Have you tried programming a WAP phone
application or PDA? Have you tried running so called thin
clients(thin on the PC but thick on bandwidth) over an
international private circuit?
Post by John
information bottleneck we are facing today is the enormous amount of
time and cost involved in creating, maintaining, and changing
applications. Because without applications, Bandwidth and Connectivity
cannot be used.
Thats true, but then it always has been.
Post by John
These issues are being addressed by the computer science of Generative
Programing "Software that Writes Software"(Also called Extreme
Programing)
Thats a new definition of Extreme Programming to me! I assume
the capitalised 'E' distinguishes it from eXtreme Programming
(aka XP)?

Alan G
Author of the Learn to Program website
http://www.freenetpages.co.uk/hp/alan.gauld
John
2003-12-13 05:23:52 UTC
Permalink
Hi Alan,
Post by Alan Gauld
Given that the biggest problem in software maintenance is
understanding the existing application and the impact of change,
an app generator won't help much. Self generating accurate
documentation would be far more useful. The lack of reliable
dsign documents that are intended for maintenance rather than
construction is one of the biggest cost factors in maintenance.
Using an application generator gives all the data entry screens the
same look and feel greatly reducing the learning curve.

As for documentation, No one reads it anyway. Users expect to walk up
to the computer and intuit the function of the app. To this end my
generator makes extensive use of context sensitive menus, and the
Standard Metaphore which uses a navigation tree on top or to the left
and data entry screens on the bottom or at the right.

As for impact of change; There is none with my app gen because it is
not sensitive to changes in the underlying tables or in changes in
logic. In other words, changes in code or tables can not break the
app.

I would be honored if you would take me up on my challeng. Let me
build your next app for free. It may take you months, but it will only
take me a few hours.

Just send me scripts for generating your tables, indexes and foreign
keys. My generator will do the rest. When I send you your finished
app, I will also send you the generator so that you can change it
without writing any code.

Best to you
John
***@aol.com
Bjorn Reese
2003-12-14 12:44:58 UTC
Permalink
Post by John
These issues are being addressed by the computer science of Generative
Programing "Software that Writes Software"(Also called Extreme
Programing) and also Object Oriented Programing. These two
You did not address Alan's question about this, so I will try
again. Are you referring to eXtreme Programming (XP), and if so,
can you elaborate on why you consider it to be the same as
Generative Programming?
--
mail1dotstofanetdotdk
Phlip
2003-12-14 17:33:25 UTC
Permalink
Post by Bjorn Reese
Post by John
These issues are being addressed by the computer science of Generative
Programing "Software that Writes Software"(Also called Extreme
Programing) and also Object Oriented Programing. These two
You did not address Alan's question about this, so I will try
again. Are you referring to eXtreme Programming (XP), and if so,
can you elaborate on why you consider it to be the same as
Generative Programming?
John seems to be selling a CASE tool that works "without programming", amid
similar claims, appeals to authority, etc. One wonders where such a tool can
draw a line between authoring appearances and data formats, and programming
its logic. At some point you will still need to say "if CustomerAge > 55
then price -= SeniorCitizenDiscount * price".

If so, you will need tests over a few sample customers. That's the only link
to XP I can see.

If John claims to run the generator himself, then we wonder if he himself
occupies some small part of the generation process. His bullet list appears
to imply something automatically generates the database add-update-delete
functions and the user interfaces. I have seen tools do this since the
1980s, with similar claims in their brochures. So I suspect this is the same
app compiled over and over again with a different table of metadata each
time.

If this were an application generator that solves all the problems of SE,
then I could ask the generator (not John) to add an output that shows, for
example, a table of values as a contour map of intensities over a surface.
Then add controls on this map that let you change the contour's coefficients
in user-time. You know: Programming.

--
Phlip
John
2003-12-15 07:34:59 UTC
Permalink
Hi Philp
Post by Phlip
At some point you will still need to say "if CustomerAge > 55
then price -= SeniorCitizenDiscount * price".
Yes, you are right, and this is the kind of work that programers
should be doing.

But below are some of the things that programers should not have to be
bothered with because these things are the same for all tables.

Adds, Updates, and Deletes,
Maintaining an Audit trail for each table,
Posting to the general ledger,
Rolling down changes to dependent tables,
Cascading deletes,
Transactions and rollbacks,
Calling validation and business rule procedures,
Calling postprocessing procedures like updating totals after saving a
record.
Importing and revalidating data,
Security, and more.
Post by Phlip
John seems to be selling a CASE tool that works "without
programming",

The tool generates code just like a programer does. The tool is not
meant to replace programing or programers. It is meant to free the
programer from mundane tasks that can be quantified by metadata. It is
also meant to reduce bugs and increase consistency through automation.
But most of all it is meant to be a tool that will reduce the amount
of time it takes to build and maintain database applications.
Post by Phlip
I have seen tools do this since the 1980s, with similar claims in
their brochures. So I suspect this is the same app compiled over and
over again with a different table of metadata each time.
Yes, you are correct in this but there is one major difference; This
generator remembers the programers customizations. The generators of
the 1980s would only get you so far, and then the programer would take
over. And once the programer took over, you could never regenerate the
application because all those changes would be lost. Now it is
possible to regenerate the application over and over again without
losing your customizations. This makes it as easy to change your
underlying tables as it is to modify a document with a word processor.
And you can now radically update and change the code in your
application without fear of breaking it.
Post by Phlip
John seems to be selling a CASE tool...
I am not selling anything. I am willing to give away my generator and
work for free, just to change some minds. I am trying to free
programers from the mundane boring crap in programing so that you can
get back to doing what you were born to do. And that is THINK.

I wish you well,
John
Vladimir Levin
2003-12-15 16:21:51 UTC
Permalink
I am fairly familiar with this type of tool. I have used a framework
called Versata, which does this kind of thing. While it has it's
moments, over all I find that I would not use this framework on most
projects.
Post by John
Adds, Updates, and Deletes,
Maintaining an Audit trail for each table,
Posting to the general ledger,
Rolling down changes to dependent tables,
Cascading deletes,
Transactions and rollbacks,
Calling validation and business rule procedures,
Calling postprocessing procedures like updating totals after saving a
record.
Importing and revalidating data,
Security, and more.
John
2003-12-17 06:23:01 UTC
Permalink
Hi Vladimir,


The application generators of the 1980s would only take the developer
so far. Maybe a data entry screen that could read and write to a
table. But once the developer put in some custom code it was no longer
possible to regenerate the form because all the customizations would
be lost. This made the generator useless for changes and maintenance
which I hear is 80% of the cost of owning an app.

But this generator is different. It remembers all customizations to
the UI and to the back end. This now gives the developer access to the
generator for the full life cycle of the application.

I hope you can see the significance of this.

Best to you,
John

Phlip
2003-12-02 14:56:10 UTC
Permalink
Post by Drink
I am making a report about what is in my opinion the most serious
problem in software engineering. Does any of you have some ideas about
that ? I was thinking about speaking of one of the following problems
Legacy challenge, Heterogeneity challemge or delivery challenge.
Incredibly high bug rate ->
comes from poor automated test coverage ->
causes code to resist easy change ->
causes engineers to waste time designing ->
instead of writing tests.

You might not find "high bug rate" complained about in much literature,
because so many people accept it as a fact of programming life and get numb
to it.

--
Phlip
http://www.c2.com/cgi/wiki?TestFirstUserInterfaces
Drink
2003-12-04 17:23:54 UTC
Permalink
Thanks for your help everybody !

I have read some documentation concerning that subject and it seems
that the main problem come from the human interpretation of the
software engineering techniques. So I will base my report on that
theme.

If you have any additional information, they will be welcome...
John
2003-12-13 05:38:25 UTC
Permalink
Hi Philip,
Post by Phlip
Incredibly high bug rate ->
comes from poor automated test coverage ->
causes code to resist easy change ->
causes engineers to waste time designing ->
instead of writing tests.
In the previous post, I discuss that the application generator gives a
very standard user interface. But one of it's great advantages is that
it eliminates bugs by removing the human programer from the process.
Instead, the human is directing the process, but the computer deals
with the error prone coding.

You are also welcome to take me up on my challenge mentioned in the
previous post. I can assure you that you will no longer find yourself
dealing with errors

Best to you,
John
Loading...