473,414 Members | 1,744 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,414 software developers and data experts.

Wrapping up software

Hi,
I have written several pieces of software and would like to hear any
thoughts anyone has on what measures i should take to ensure(!) its
stability and security at the hands of the *users*. I have obviously
put error handling in :O) but have heard of loads of other things i
could do like obfuscation and assembly signing.

All comments welcomed and appreciated in advance, so ... thanks!
James Randle.

Oct 30 '06 #1
6 1165
James,

A few of the things that I've found useful in releasing software to end
users:

1. Go through every line and look at the exception list in the
framework docs for any methods you call. Understand when each is
thrown, and catch every (and only) exception that you can do something
with. Assume anything not caught will give the user a nasty error.
Catching SecurityException on a disk write is more important than
FileNotFoundException: good users tend to know where their files are
more often then they know that they don't have write permissions to the
department share.

2. Any time anything goes wrong, do the following: show the user a
polite message asking them to change their input (like sales, the
customer is always right; your software made the error, not them), and
write extensive debugging information some place where they'll be able
to get it to you.

3. Document everything public. If you're releasing a library, use the
built-in XML documentation that plugs into Intellisense. If you're
releasing non-library software, document from turning on the computer
through all normal tasks as bulleted how-to guides. Include a glossary
and screen shots. Don't bother writing mission statements and such
because no one reads them. Searchable online troubleshooting guides
have always seemed to be the most useful for my users.

4. Write and work around test cases that includes inane things, like
people unplugging USB drives in the middle of saving and the disk
filling up. Someone will be missing installation files, configuration,
proper access to the thing you assume everyone has access to, etc.

5. Don't wait for people to save configuration and don't make them load
it. Give them options like starting where they left off.

I'm sure there's more but that'll take you a long way.

I'm not sure about the usefulness of obfuscation: it's been proven
extensively that there is almost no security in obfuscation. Those who
want to reverse engineer always find a way. I prefer to patent and be
ready to defend my claim. Also, know your rights as a copyright holder;
anything original you do is copyrighted by you whether you explicitly
claim it or not.
HTH!
Stephan
pigeonrandle wrote:
Hi,
I have written several pieces of software and would like to hear any
thoughts anyone has on what measures i should take to ensure(!) its
stability and security at the hands of the *users*. I have obviously
put error handling in :O) but have heard of loads of other things i
could do like obfuscation and assembly signing.

All comments welcomed and appreciated in advance, so ... thanks!
James Randle.
Oct 30 '06 #2
Stephan,
Thanks for your reply. I already have a big list of things i still need
to do, and it seems to be getting bigger and BIGGER!

Thanks again,
James.

ssamuel wrote:
James,

A few of the things that I've found useful in releasing software to end
users:

1. Go through every line and look at the exception list in the
framework docs for any methods you call. Understand when each is
thrown, and catch every (and only) exception that you can do something
with. Assume anything not caught will give the user a nasty error.
Catching SecurityException on a disk write is more important than
FileNotFoundException: good users tend to know where their files are
more often then they know that they don't have write permissions to the
department share.

2. Any time anything goes wrong, do the following: show the user a
polite message asking them to change their input (like sales, the
customer is always right; your software made the error, not them), and
write extensive debugging information some place where they'll be able
to get it to you.

3. Document everything public. If you're releasing a library, use the
built-in XML documentation that plugs into Intellisense. If you're
releasing non-library software, document from turning on the computer
through all normal tasks as bulleted how-to guides. Include a glossary
and screen shots. Don't bother writing mission statements and such
because no one reads them. Searchable online troubleshooting guides
have always seemed to be the most useful for my users.

4. Write and work around test cases that includes inane things, like
people unplugging USB drives in the middle of saving and the disk
filling up. Someone will be missing installation files, configuration,
proper access to the thing you assume everyone has access to, etc.

5. Don't wait for people to save configuration and don't make them load
it. Give them options like starting where they left off.

I'm sure there's more but that'll take you a long way.

I'm not sure about the usefulness of obfuscation: it's been proven
extensively that there is almost no security in obfuscation. Those who
want to reverse engineer always find a way. I prefer to patent and be
ready to defend my claim. Also, know your rights as a copyright holder;
anything original you do is copyrighted by you whether you explicitly
claim it or not.
HTH!
Stephan
pigeonrandle wrote:
Hi,
I have written several pieces of software and would like to hear any
thoughts anyone has on what measures i should take to ensure(!) its
stability and security at the hands of the *users*. I have obviously
put error handling in :O) but have heard of loads of other things i
could do like obfuscation and assembly signing.

All comments welcomed and appreciated in advance, so ... thanks!
James Randle.
Oct 30 '06 #3
Hello pigeonrandle,

Testin, testing and testing one more time :)
Unit-, component-, system-, integration-, stress-, whitebox- testings, codecoverage.
But this doesnt help you on 100%, ask users go give u feedback and for example
present the free version of your app to the 20 most active users who have
found the bugs

pHi,
pI have written several pieces of software and would like to hear any
pthoughts anyone has on what measures i should take to ensure(!) its
pstability and security at the hands of the *users*. I have obviously
pput error handling in :O) but have heard of loads of other things i
pcould do like obfuscation and assembly signing.
pAll comments welcomed and appreciated in advance, so ... thanks!
pJames Randle.
p>
---
WBR,
Michael Nemtsev :: blog: http://spaces.live.com/laflour

"At times one remains faithful to a cause only because its opponents do not
cease to be insipid." (c) Friedrich Nietzsche
Oct 30 '06 #4
James,

Seems like that's always the case. Just remember that all-nighters
become 5% less productive per year of coder's age past age 23. :)
Stephan

pigeonrandle wrote:
Stephan,
Thanks for your reply. I already have a big list of things i still need
to do, and it seems to be getting bigger and BIGGER!

Thanks again,
James.

ssamuel wrote:
James,

A few of the things that I've found useful in releasing software to end
users:

1. Go through every line and look at the exception list in the
framework docs for any methods you call. Understand when each is
thrown, and catch every (and only) exception that you can do something
with. Assume anything not caught will give the user a nasty error.
Catching SecurityException on a disk write is more important than
FileNotFoundException: good users tend to know where their files are
more often then they know that they don't have write permissions to the
department share.

2. Any time anything goes wrong, do the following: show the user a
polite message asking them to change their input (like sales, the
customer is always right; your software made the error, not them), and
write extensive debugging information some place where they'll be able
to get it to you.

3. Document everything public. If you're releasing a library, use the
built-in XML documentation that plugs into Intellisense. If you're
releasing non-library software, document from turning on the computer
through all normal tasks as bulleted how-to guides. Include a glossary
and screen shots. Don't bother writing mission statements and such
because no one reads them. Searchable online troubleshooting guides
have always seemed to be the most useful for my users.

4. Write and work around test cases that includes inane things, like
people unplugging USB drives in the middle of saving and the disk
filling up. Someone will be missing installation files, configuration,
proper access to the thing you assume everyone has access to, etc.

5. Don't wait for people to save configuration and don't make them load
it. Give them options like starting where they left off.

I'm sure there's more but that'll take you a long way.

I'm not sure about the usefulness of obfuscation: it's been proven
extensively that there is almost no security in obfuscation. Those who
want to reverse engineer always find a way. I prefer to patent and be
ready to defend my claim. Also, know your rights as a copyright holder;
anything original you do is copyrighted by you whether you explicitly
claim it or not.
HTH!
Stephan
pigeonrandle wrote:
Hi,
I have written several pieces of software and would like to hear any
thoughts anyone has on what measures i should take to ensure(!) its
stability and security at the hands of the *users*. I have obviously
put error handling in :O) but have heard of loads of other things i
could do like obfuscation and assembly signing.
>
All comments welcomed and appreciated in advance, so ... thanks!
James Randle.
Oct 30 '06 #5
PS

"ssamuel" <ss*****@gmail.comwrote in message
news:11*********************@e64g2000cwd.googlegro ups.com...
James,

Seems like that's always the case. Just remember that all-nighters
become 5% less productive per year of coder's age past age 23. :)
Also remember that 82.7% of all statistics are made up on the spot.

PS
>

Stephan

pigeonrandle wrote:
>Stephan,
Thanks for your reply. I already have a big list of things i still need
to do, and it seems to be getting bigger and BIGGER!

Thanks again,
James.

ssamuel wrote:
James,

A few of the things that I've found useful in releasing software to end
users:

1. Go through every line and look at the exception list in the
framework docs for any methods you call. Understand when each is
thrown, and catch every (and only) exception that you can do something
with. Assume anything not caught will give the user a nasty error.
Catching SecurityException on a disk write is more important than
FileNotFoundException: good users tend to know where their files are
more often then they know that they don't have write permissions to the
department share.

2. Any time anything goes wrong, do the following: show the user a
polite message asking them to change their input (like sales, the
customer is always right; your software made the error, not them), and
write extensive debugging information some place where they'll be able
to get it to you.

3. Document everything public. If you're releasing a library, use the
built-in XML documentation that plugs into Intellisense. If you're
releasing non-library software, document from turning on the computer
through all normal tasks as bulleted how-to guides. Include a glossary
and screen shots. Don't bother writing mission statements and such
because no one reads them. Searchable online troubleshooting guides
have always seemed to be the most useful for my users.

4. Write and work around test cases that includes inane things, like
people unplugging USB drives in the middle of saving and the disk
filling up. Someone will be missing installation files, configuration,
proper access to the thing you assume everyone has access to, etc.

5. Don't wait for people to save configuration and don't make them load
it. Give them options like starting where they left off.

I'm sure there's more but that'll take you a long way.

I'm not sure about the usefulness of obfuscation: it's been proven
extensively that there is almost no security in obfuscation. Those who
want to reverse engineer always find a way. I prefer to patent and be
ready to defend my claim. Also, know your rights as a copyright holder;
anything original you do is copyrighted by you whether you explicitly
claim it or not.
HTH!
Stephan
pigeonrandle wrote:
Hi,
I have written several pieces of software and would like to hear any
thoughts anyone has on what measures i should take to ensure(!) its
stability and security at the hands of the *users*. I have obviously
put error handling in :O) but have heard of loads of other things i
could do like obfuscation and assembly signing.

All comments welcomed and appreciated in advance, so ... thanks!
James Randle.
Oct 30 '06 #6
I'd heard it was closer to 85.7%.

And is that a compound percentage, or will i be brain dead at, errrr,
53?

Cheers for your replies,
James.

On Oct 30, 5:47 pm, "PS" <ecneserpeg...@hotmail.comwrote:
"ssamuel" <ssam...@gmail.comwrote in messagenews:11*********************@e64g2000cwd.go oglegroups.com...
James,
Seems like that's always the case. Just remember that all-nighters
become 5% less productive per year of coder's age past age 23. :)Also remember that 82.7% of all statistics are made up on the spot.

PS


Stephan
pigeonrandle wrote:
Stephan,
Thanks for your reply. I already have a big list of things i still need
to do, and it seems to be getting bigger and BIGGER!
Thanks again,
James.
ssamuel wrote:
James,
A few of the things that I've found useful in releasing software to end
users:
1. Go through every line and look at the exception list in the
framework docs for any methods you call. Understand when each is
thrown, and catch every (and only) exception that you can do something
with. Assume anything not caught will give the user a nasty error.
Catching SecurityException on a disk write is more important than
FileNotFoundException: good users tend to know where their files are
more often then they know that they don't have write permissions to the
department share.
2. Any time anything goes wrong, do the following: show the user a
polite message asking them to change their input (like sales, the
customer is always right; your software made the error, not them), and
write extensive debugging information some place where they'll be able
to get it to you.
3. Document everything public. If you're releasing a library, use the
built-in XML documentation that plugs into Intellisense. If you're
releasing non-library software, document from turning on the computer
through all normal tasks as bulleted how-to guides. Include a glossary
and screen shots. Don't bother writing mission statements and such
because no one reads them. Searchable online troubleshooting guides
have always seemed to be the most useful for my users.
4. Write and work around test cases that includes inane things, like
people unplugging USB drives in the middle of saving and the disk
filling up. Someone will be missing installation files, configuration,
proper access to the thing you assume everyone has access to, etc.
5. Don't wait for people to save configuration and don't make them load
it. Give them options like starting where they left off.
I'm sure there's more but that'll take you a long way.
I'm not sure about the usefulness of obfuscation: it's been proven
extensively that there is almost no security in obfuscation. Those who
want to reverse engineer always find a way. I prefer to patent and be
ready to defend my claim. Also, know your rights as a copyright holder;
anything original you do is copyrighted by you whether you explicitly
claim it or not.
HTH!
Stephan
pigeonrandle wrote:
Hi,
I have written several pieces of software and would like to hear any
thoughts anyone has on what measures i should take to ensure(!) its
stability and security at the hands of the *users*. I have obviously
put error handling in :O) but have heard of loads of other things i
could do like obfuscation and assembly signing.
All comments welcomed and appreciated in advance, so ... thanks!
James Randle.- Hide quoted text -- Show quoted text -
Oct 31 '06 #7

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

13
by: Roy Smith | last post by:
I've got a C library with about 50 calls in it that I want to wrap in Python. I know I could use some tool like SWIG, but that will give me a too-literal translation; I want to make some...
2
by: Alex Dribin | last post by:
Hi, Are there ready solutions for auto-wrapping lines in ostream? I am using ostream for output and want this output to be wrapped at some position. Of course I can monitor stream pointer...
11
by: yawnmoth | last post by:
word wrapping normally treats some spaces as line feeds, if there hasn't been a line feed for quite a while. so while a string with eighty consecutive a's might not word wrap, a space placed...
7
by: mercurius_1 | last post by:
I am having a problem with content being wrapped down the page in Internet Explorer. This is the page in question, which I have validated: www.lynngoldstein.com When the browser window is...
5
by: nimdez | last post by:
Hi, I am working on an existing code base in which a lot of data displayed to the user is formatted in tables. Most tables are printed row-by-row using printf() with "%s" print conversion...
2
by: dam_fool_2003 | last post by:
My understanding about wrapping is that we add utilities to a lib function for our specific use. So days ago in the c.l.c I saw a function def as: void * xmalloc (size_t size) { register void...
33
by: Xah Lee | last post by:
The Harm of hard-wrapping Lines 20050222 Computing Folks of the industry: please spread the debunking of the truncating line business of the fucking unix-loving fuckheads, as outlines here:...
8
by: Nathan | last post by:
I am trying to prevent a horizontal list from wrapping. Each list item is floated with "float: left". Currently I use an ugly hack. I set the width of the list to a large number which is...
0
by: bp_jobemail | last post by:
I'm trying to use PHP to wrap the output of an HTML form before it goes into a precompiled C cgi script. Essentially, the company that I work for uses a purchased precompiled c program for their...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.