What is software engineering?
CS-160: Software Engineering
Instructor: Robert Bruce
Spring 2017

SLIDE 1: Software Engineering: a definition

  • "An organized, analytical approach to the design, development, use, and maintenance of software" (p. xxii).
  • Rod Stephens, Beginning Software Engineering

SLIDE 2: Software Engineering Project Tasks

  • Software engineering projects are comprised of tasks:
  • Requirements gathering
  • High-level design
  • Low-level design
  • Development
  • Testing
  • Deployment
  • Maintenance
  • Wrap-up
  • Source: Rod Stephens' Beginning software Engineering, p. 13

SLIDE 3: Requirements gathering

  • Identify and talk to your customer.
  • The customer will be using your software!
  • The customer has specific needs!
  • Define the project requirements.
  • Define the project scope.
  • Source: Rod Stephens' Beginning software Engineering, p. 4

SLIDE 4: High-level design

  • Identify resources needed for the project implementation such as:
  • Software Libraries.
  • Databases Management Systems.
  • Integrated Development Environments (IDE).
  • Hardware specific needs.
  • Define the project architecture:
  • Modularize the project into identifiable parts
  • How does each module contribute to the project as a whole?
  • Define target platforms for project implementation:
  • Android, iOS, Linux, Windows, OSX, etc.
  • Mobile, desktop, or web-based cross platform, etc.
  • Source: Rod Stephens' Beginning software Engineering, pp. 5-6

SLIDE 5: Low-level design

  • Once the high-level design has been defined:
  • Identify how each module will interoperate with other modules.
  • Define tables required in the database management system.
  • Source: Rod Stephens' Beginning software Engineering, p. 6

SLIDE 6: Development

  • Development is the stage where implementation (code) happens!
  • The modules are now being written by programmers.
  • Source: Rod Stephens' Beginning software Engineering, p. 6

SLIDE 7: Testing

  • After development, we begin the testing phase:
  • Does the implementation work as defined by specification?
  • Are there software bugs?
  • Now is the time for Quality Assurance testing.
  • Code must be tested to ensure it works as expected.
  • Source: Rod Stephens' Beginning software Engineering, pp. 6-8

SLIDE 8: Deployment

  • The software is released to the customer.
  • The dreaded version 1 ("one-point uh-oh").
  • Possibly in beta-mode.
  • Customer may identify bugs/glitches and provide feedback.
  • Source: Rod Stephens' Beginning software Engineering, pp. 8-9

SLIDE 9: Maintenance

  • You've deployed your application and...the bugs come rolling in!
  • Even with lots of testing, bugs inevitably happen!
  • In computer security related applications, zero days are discovered!
  • Maintenance is a natural progression in the software development lifecycle.
  • Maintenance is not an excuse to deploy buggy software and fix later!
  • Source: Rod Stephens' Beginning software Engineering, p. 9

SLIDE 10: Wrap-up

  • Wrap-up or post-mortem:
  • A wrap up is a time to reflect on what went well and what didn't.
  • Document your experiences in a report.
  • Ask how could the project be improved.
  • There will always be other software projects.
  • It's important to learn from past mistakes!
  • Source: Rod Stephens' Beginning software Engineering, pp. 9-11