• C

Points for opinions

I know this look long, but it should only take a few minutes of your time.

I am working on a final paper in my structured design class. The paper requires me to compare the 'text-book' version of structured design with real-world software design. As part of this assignment, I am supposed to get some input from people "working in the field of software design." (Not including myself or classmates, which makes it difficult.)

If you have professional experience in the field of software design, will you please answer the following questions? (Since it is a 'structured' design class, it would be helpful if you have professional 'structured' experience -- C, Pascal, etc.) I can offer 50 points each for the first four (useful) responses, and an extra 50 points to the best response.

A) Your real name (optional, but preferred):

B) Your software design title:
      When and how long?

C) Did you have separate teams for analysis, design and programming?

D) How closely did each of these teams work with each other and with the end users?

E) Please rate the following terms based on 1) how familiar you are with the term, and 2) how important your understanding of the concept has been to your success in this field. Rate them from 1 to 5 with 1 meaning very familiar/very important, and 5 meaning not at all familiar/important. Please feel free to add any comments that you think might help me.

1) The 'Black-Box' approach to design
2) Structure Charts
3) Module Interfaces
4) Function Specifications
5) Coupling
6) Cohesion
7) Factoring
8) Decision Splitting
9) System Shape
10) Fan-In / Fan-Out
11) Data-Flow Diagrams
12) Data Dictionary
13) Structured English
14) Decision Trees and Decision Tables
15) Entity Relationship Diagrams

(Please rate your familiarity first, and importance second so it is standard and easier to read - i.e. the answer 1, 5 means you're very familiar with the term, but it's not very important.)

If you feel more comfortable replying by e-mail, send it to jason_lewis@mailcity.com. I will post a separate question to award your points.

Also -- I am posting this question in several areas for better exposure. So I'll use the date/time stamp to determine the first four responses. I hope that's fair. (To keep it fair to the people who are willing to spend a fair amount of time on this, please post a simple note before you spend the time on a response. I'll use the time stamp from your simple note. I would rather reward the people who are willing to go out of their way, but I do need a quick response, too.)  Thanks in advance!  --J
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

jason_lewisAuthor Commented:
Edited text of question.
A) Gurpreet Sachdeva

B) NINA ASN.1 Compiler (1st Feb, 98 to Dec, 98)

C)No. There was only one team.

D)The interaction within the team was on day to day basis and with the end user was on weekly basis.


1)5, 2
2)5, 5
3)5, 5
4)5, 5
5)5, 5
6)5, 5
7)5, 5
8)1, 1
9)1, 1
10)1, 1
11)1, 1
12)5, 5
13)5, 5
14)5, 5
jason_lewisAuthor Commented:

I'm not rejecting your answer, I just want to leave this question open until tomorrow so that others can answer. (I already have four questions out there, so I'll ask you to re-post your answer to one of them tomorrow so that I can award your points.)  --J
Determine the Perfect Price for Your IT Services

Do you wonder if your IT business is truly profitable or if you should raise your prices? Learn how to calculate your overhead burden with our free interactive tool and use it to determine the right price for your IT services. Download your free eBook now!

A) Danny Pav
B) Programmer/Analyst or Software Engineer, professionally ssince 1993

C) NO.

D) Design reviews.

E) Please rate the following terms based on 1) how familiar you are with the term, and 2) how important your understanding of the concept has been to your success in this field. Rate them from 1 to 5 with 1 meaning very familiar/very important, and 5 meaning not at all familiar/important. Please feel free to add any comments that you think might help me.

familiar, important
1) 1,1
2) Structture Charts ???
3) 2,2
4) 1,1
5) 2,2
6) 1,1
7) 1,2
8) Decision Splitting ???
9) System Shape ????
10) 5,5
11) 3,4
12) 3,3
13) Structured English ???
14) 2,2
15) 2,2

Some of these need further clarification.
jason_lewisAuthor Commented:
Good point. Here are some better explanations.

Structure chart: How important is the use of a structure chart as a design tool (before programming) to layout the functions of a system?

Decision Splitting: Our book defines decision splitting as having the results of a decision carried out in a separate function. (An example of this might be passing a flag whose value indicates the action to be taken.) The book says it is to be avoided whenever possible. To me it's a matter of common sense, and there are times where it's useful or necessary to use it. I want to get an expert opinion on how important avoiding a decision split is in creating a successful system.

System Shape: When designing a system, how important is the system shape (input-driven, output-driven, balanced) to the successful design of a system? In other words, how important is it to separate the input validation, processing, and output formatting from the logic of the system?

Structured English: Our book defines this as an almost psuedocode-like way of specifying a process at the analysis stage. However, it uses more english-like vocabulary to allow the users to read it, and to avoid stepping on the designer's toes (by implying how the designer should do his job). I guess my question is, how important is a structured specification style? Do you normally specify a process in plain english or in step-by-step instructions.

I hope that clears it up. I appreciate your feedback. --J
Structure chart: 5 (uunfamiliar with any formal diagramming), 3 (we do simple boxes and arrow design scribbles in meetings)

Decision Splitting: 2,2
You need to do decision splitting to do some functional factoring.  When you have two functions that are implemented in a very similar manner, you may have a single function with a parameter to tell it how to do one step or handle one case.  Then you hide this function (ex. make it private in C++, etc) and have the two that use left to be used (public in C++).

System Shape: 3,3 You want to be as modular as possible to allow pieces to be replaced with other pieces bearing the same interface.  However, we have not done a lot of this.

Structured English: 4,4 We don't have any formal spec for this.  We might say "read the data from the list" when it may be implemented as a database table, a tree, etc.
A) Anju Amur

B) Systems Analyst/Software Developer/Consultant since 1985.

C) Most of my experience is as a consultant/contractor, so I've seen many different types and sizes of projects.  There were seperate teams on approximately 40% of them (typically the largest projects).  There were a number of projects where I was expected to fill all of the roles by myself.

D) It varied from project to project.  On average the teams worked closely with each other, but didn't work as closely with the end-user (amazingly and rather sadly, the marketing department is often between the technical staff and the client during the development phase -- there's no direct contact with the end user until acceptance testing begins and the proverbial dung hits the fan...)

1) 1,2
2) 1,2
3) 1,2
4) Note: Your title for this item is "Function Specifications".  If you mean "Functional Requirements Specification", the answer is 1,1.  If instead you mean specifying the actual function names and arguments, the answer is 1,5.
5) 1,2 Loose coupling for me, please!  I've been on many projects which allowed tight coupling during the initial development and got away with it until the change requests or maintenance phase began.  I can't tell you the number of times I've heard "Do it quick and dirty to save time and money, we have deadlines to meet on a limited budget!" during initial development, then "Why in the world did we do it that way?  Who's the idiot who did this?" when it comes to changes and maintenance.
6) 5,?
7) 5,?
8) 1,4
9) 1,1
10) 1,3
11) 1,2
12) 1,3
13) 1,3
14) 1,3
15) 1,3

Let me know if you need more detail.  I'll be happy to oblige.

A) Your real name (optional, but preferred): Abdij Bhat

B) Your software design title: Senior Programmer
When and how long? 2 yrs fom 1997

C) Did you have separate teams for analysis, design and programming? : Yes, But two of us were common in all teams

D) How closely did each of these teams work with each other and with the end users? : As closely as possible. There used to be daily meetings to discuss/co-relate findings/give progress updates/solve problems/clarify doubts with each of the team. The same meeting we had with the customer on a weekly basis or as-and-when-needed basis.

E) Please rate the following terms based on 1) how familiar you are with the term, and 2) how important your understanding of the concept has been to your success in this field.

1) The 'Black-Box' approach to design : 1,2 (Needed in the High Level designing of the project)
2) Structure Charts : 1,2 (If given it is very easy for both technical and non-technical people to follow)
3) Module Interfaces : 1,1 (Very essential since the programmers can easily accomplish the design requirement if this is provided. Its important for integration stage of the project where modules developed by different programmers are combined to give the project. If interfaces are not properly defined the code might not compile and of course working is out of question (unless the programmers themselves have worked it between themselve). A formal document will always be helpful)
4) Function Specifications : 1,1 (Reasons same as 3. Also during the maintainance phase of the project the programmer who has coded might not be available. A new person will find it helpful if such a document giving the function specs is available. It is useful also for testing guys)
5) Coupling : 1,1 (Should be avoided as far as possible. Else getting to trace a functionality will involve a lot of code tracing)
6) Cohesion : 1,1
7) Factoring : 2,2 (Allows distributed functionalities)
8) Decision Splitting : 1,2 (You can have different functions to handle different decision but its better that all the branching takes place at one place)
9) System Shape : 1,1 (Its useful to seperate out these in the design phase. advantages are that development, coding, testing, maintainance is easy)
10) Fan-In / Fan-Out : 5,5
11) Data-Flow Diagrams : 1,2 (Very helpful if you have it)
12) Data Dictionary : 1,4 (Better to have but time consuming)
13) Structured English : 1,2 (Depends on the kind of the project. Some project involve only technical persons there the importance to this is not much. Some times we are forced to documnet out analysis/ design in an easy english so that the Marketing guys and the customer (may be non-technical) can follow it)
14) Decision Trees and Decision Tables : 1,3 Same as 12
15) Entity Relationship Diagrams : 1,2 (Depends on the project. System side projects generally use these very sparingly but the Applications side projects especially ones involving database use them regularly)

Hope this is ok with you.

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
jason_lewisAuthor Commented:
My sincere thanks to all of you. I think the paper turned out pretty well. (I'll know for sure by this time next week.)

Choosing a 'best' answer was not easy. Everyone's input was extremely helpful. However, it looks like Abdij put the most effort into his answer, so I felt that was the fair choice.

I will post new questions with points for the rest of you.

Thanks again!  --J
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today

From novice to tech pro — start learning today.