About Software Engineering

What is Software Engineering?

  • The word software engineering originated in 1960 at NATO conference
  • Software Engineering is not so much about code but about the methodologies taken to deliver a well developed product.

What are some methodologies use in SE?

  • Waterfall – Introduced by Winston Royce in 1970. First one to introduce the 5 Software Development Life Cycle (SDLC) method which are:
    1. Specification: Written executive summary with a final proposal plan.
    2. Design: Includes UML diagrams, classes and methods, no code!
    3. Implementation: Where coding takes place.
    4. Testing: Verification and validation phase, alpha and beta testing.
    5. Maintenance: Feedback.
  • Component Based Software Engineering (CBSE) – No need to reinvent the wheel, components are already available to start building or enhance the product (i.e. HelpScout, open source).
  • Clean Room Engineering (CRE) – An IBM software methodology which promises “zero defect software”, but is software ever bug free? There are a few requirements for CRE which are:
    1. Mathematical proofs of correctness for every line of code: before starting a project, the lead of the project must prove his approach mathematically.
    2. Programming in groups: IBM believes that programmers should work in groups not individually. This is because problems can be solved quicker in groups and there is a better learning opportunity.
    3. Statistical linguistic tool for testing: stress test the system to make sure everything is to specifications.
  • Spiral / Agile – encourages interaction between teams (product team with development team), engage discussion with funding agencies to enforce more communication. https://agilemanifesto.org/
  • Kanban – Originated in 1980s by Japanese car manufactories . Kanban promotes continuous collaboration and encourages active, ongoing learning and improving by defining the best possible team workflow. It is based on three key principles:
    1. Visualize what you do today (workflow): seeing all the items in context of each other can be very informative
    2. Limit the amount of work in progress (WIP): this helps balance the flow-based approach so teams don€™t start and commit to too much work at once
    3. Enhance flow: when something is finished, the next highest thing from the backlog is pulled into play