Boards.ie uses cookies. By continuing to browse this site you are agreeing to our use of cookies. Click here to find out more x
Post Reply  
 
Thread Tools Search this Thread
03-09-2019, 19:11   #1
veryangryman
Registered User
 
veryangryman's Avatar
 
Join Date: Nov 2007
Posts: 4,359
"Fundamental Principles of Software Engineering"

I have been given a short assignment to discuss these. Is there a definitive list anywhere. A google search gives mixed results, nothing definitive. Any idea what the common list is?
veryangryman is offline  
Advertisement
03-09-2019, 20:00   #2
igCorcaigh
Registered User
 
Join Date: Feb 2011
Posts: 2,730
That's very vague, but gives you room to explore.

How about developing on these points:

Object oriented programming
Design patterns
SOLID principles
n-tier architecture
Cohesion, encapsulation, separation of concerns etc
igCorcaigh is offline  
Thanks from:
03-09-2019, 20:07   #3
pillphil
Registered User
 
Join Date: Jan 2009
Posts: 730
Hofstadter's law
pillphil is offline  
04-09-2019, 09:20   #4
moycullen14
Registered User
 
Join Date: Jul 2010
Posts: 670
Try 'The mythical man month' Fifty years old, still true, still ignored.

Fundamentally, it's a people business.

https://en.wikipedia.org/wiki/The_Mythical_Man-Month
moycullen14 is offline  
04-09-2019, 11:50   #5
BrokenArrows
Registered User
 
BrokenArrows's Avatar
 
Join Date: Feb 2005
Posts: 7,159
"Fundamental Principles of Software Engineering"

Whatever time and cost estimate someone gives you, double it and you will be more accurate.
BrokenArrows is offline  
Advertisement
04-09-2019, 11:55   #6
Earthhorse
Registered User
 
Earthhorse's Avatar
 
Join Date: Sep 2002
Posts: 18,773
Send a message via Yahoo to Earthhorse
I always liked Steve McConnell's take on this in Code Complete, which is that the primary imperative of software development is to manage complexity.

If you took that as your headline principle other principles may flow from there.
Earthhorse is offline  
Thanks from:
04-09-2019, 12:44   #7
rock22
Registered User
 
Join Date: Jun 2010
Posts: 467
"Fundamental Principles of Software Engineering"
rock22 is offline  
Thanks from:
05-09-2019, 14:04   #8
Talisman
Registered User
 
Join Date: Aug 2005
Posts: 3,811
Quote:
Originally Posted by veryangryman View Post
I have been given a short assignment to discuss these. Is there a definitive list anywhere. A google search gives mixed results, nothing definitive. Any idea what the common list is?
The term 'Fundamental Principles' suggests that there is a simple list of best practices. I'm not sure I have ever seen such a list presented as a single body because the realm of Software Engineering is too vast and complex to be defined by a few simple rules. I would expect any such list to contain the following:

- The problem to be solved needs to be understood.
- There will be tradeoffs in any solution and they should be well documented.
- Change is inevitable and should be both planned and managed.
- Where possible complexity should be minimised/abstracted away.
- The development process needs to be flexible.
- Existing standards should be adhered to rather than reinventing the wheel.
- SOLID principles should be followed when developing a solution.

I don't think that list is by any means definitive but it provides a good basis for you to discuss in your assignment. Think of the Software Engineering process as a complex journey from A to B - anything that eases the complexity of the journey should be considered as part of the Fundamental Principles discussion.
Talisman is offline  
Thanks from:
06-09-2019, 19:03   #9
smacl
Moderator
 
smacl's Avatar
 
Join Date: Feb 2006
Posts: 11,955
Quote:
Originally Posted by Talisman View Post
The term 'Fundamental Principles' suggests that there is a simple list of best practices. I'm not sure I have ever seen such a list presented as a single body because the realm of Software Engineering is too vast and complex to be defined by a few simple rules. I would expect any such list to contain the following:

- The problem to be solved needs to be understood.
- There will be tradeoffs in any solution and they should be well documented.
- Change is inevitable and should be both planned and managed.
- Where possible complexity should be minimised/abstracted away.
- The development process needs to be flexible.
- Existing standards should be adhered to rather than reinventing the wheel.
- SOLID principles should be followed when developing a solution.

I don't think that list is by any means definitive but it provides a good basis for you to discuss in your assignment. Think of the Software Engineering process as a complex journey from A to B - anything that eases the complexity of the journey should be considered as part of the Fundamental Principles discussion.
I tend to follow the contextual school of thought these days. No best practise just good practise for the problem in hand. Reading the likes of Code Complete and Design patterns gives some great ideas but I wouldn't treat them as gospel either. Fundamental Principals are also fine and dandy until you're starting point is a few thousand lines of someone else's code at which point having read Fowler's book on refactoring (i.e sweeping that crap under the carpet) wins big time.

Fundamental principals? Get it done, test the hell out of it, get paid and move on.
smacl is offline  
(2) thanks from:
Post Reply

Quick Reply
Message:
Remove Text Formatting
Bold
Italic
Underline

Insert Image
Wrap [QUOTE] tags around selected text
 
Decrease Size
Increase Size
Please sign up or log in to join the discussion

Thread Tools Search this Thread
Search this Thread:

Advanced Search



Share Tweet