Advertisement
If you have a new account but are having problems posting or verifying your account, please email us on hello@boards.ie for help. Thanks :)
Hello all! Please ensure that you are posting a new thread or question in the appropriate forum. The Feedback forum is overwhelmed with questions that are having to be moved elsewhere. If you need help to verify your account contact hello@boards.ie
Hi all,
Vanilla are planning an update to the site on April 24th (next Wednesday). It is a major PHP8 update which is expected to boost performance across the site. The site will be down from 7pm and it is expected to take about an hour to complete. We appreciate your patience during the update.
Thanks all.

"Fundamental Principles of Software Engineering"

Options
  • 03-09-2019 7:11pm
    #1
    Registered Users Posts: 5,531 ✭✭✭


    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?


Comments

  • Moderators, Recreation & Hobbies Moderators Posts: 11,076 Mod ✭✭✭✭igCorcaigh


    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


  • Registered Users Posts: 772 ✭✭✭pillphil


    Hofstadter's law


  • Registered Users Posts: 869 ✭✭✭moycullen14


    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


  • Registered Users Posts: 7,500 ✭✭✭BrokenArrows


    "Fundamental Principles of Software Engineering"

    Whatever time and cost estimate someone gives you, double it and you will be more accurate. :D:D:D


  • Registered Users Posts: 14,715 ✭✭✭✭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.


  • Advertisement
  • Registered Users Posts: 1,547 ✭✭✭rock22




  • Registered Users Posts: 6,000 ✭✭✭Talisman


    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.


  • Moderators, Society & Culture Moderators Posts: 15,707 Mod ✭✭✭✭smacl


    Talisman wrote: »
    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. ;)


Advertisement