#Computer-Science#CS307#Software-Engineering IEEE: (1) the application of a systematic, disciplined, quantifiable approach to the development, operation, maintenance of Software; that is, the application of engineering to software. (2) the study of approaches as in (1).

  • The goal of software engineering is solving problems within constraints
    • Cost
    • Time
    • Customer
    • Others
    • And doing it with rigor
  • Solutions require effective communication
  • Sometimes you can solve problems by assembling pieces from existing components

Systematic Development and Evolution

  • An engineering process involves applying well understood techniques in an organized and disciplined way
  • Many practices have been formally standardized
  • Most development is evolutionary
  • Techniques are needed because systems have constraints
    • Time constraints, knowledge/capacity constraints, finite resources etc.

Software Engineering

  • Term software engineering was coined in 1968
    • People began to suggest that the principles of engineering should be applied to software development
  • Engineering is a licensed profession
    • You need a license, so the public stays protected
    • Software engineering is not. There was an attempt for there to be one at one point
    • Ethical practice is a key tenet of the profession
    • In many countries, software engineering does not (yet) require an engineering exam or license
  • Differences with other engineering fields
    • Foundations are primarily in computer science as opposed to natural sciences
    • Focus on discrete rather than continuous mathematics
    • Concentrates on abstract/logical entities instead of concrete/physical artifacts
    • No manufacturing phase
    • Maintenance is usually continued development or evolution not conventional wear and tear
  • Commonalities with other engineering fields
    • Engineers proceed by making a series of decisions, carefully evaluating options, and choosing an approach at each decision point that is appropriate for the current task in the current context
      • Appropriateness can be judged by trade-of analysis, which balances cost against benefits
    • Engineers measure things and when appropriate work quantitatively; they calibrate and validate their measurements; and they use approximations based on experience and empirical data
    • Engineers emphasize the use of a disciplined process when creating a design and can operate effectively as part of a team in doing so
    • Engineers can have multiple roles
      • Research, development, design, production, testing, construction, operations, management, and others such as sales, consulting, and teaching
    • Engineers use tools to apply processes systematically. Therefore the choice and use of appropriate tools is key to engineering
    • Engineers, via their professional societies, advance by the development and validation of principles, standards, and best practices