Print

Software Engineering

Course Instructors: Florica Moldoveanu, Alin Moldoveanu.

This course aims to introduce students to the basic principles of Software Engineering and to give them experience of developing a software system in a team. Specifically, it aims to: Enable students to identify and employ appropriate practices for the specification, design, testing and operation of large software systems. Make students familiar with UML modeling techniques. Involve students in the development of a piece of software which approximates as closely as possible in the university environment the software development conditions found in industry. Face the students with the team working problems.

Syllabus:

  • Software Life Cycle Models.
  • Waterfall model, V model, Spiral model, Rapid prototyping model, Iterative and incremental model, Rational Unified Process, Agile development.
  • User Requirements and Software Requirements specification.
  • The Requirements process and process Actors.
  • Requirements elicitation.
  • User Requirements definition.
  • Requirements analysis, Software Requirements Specification and Validation.
  • Content of Requirements documents.
  • Design.
  • Architectural design and detailed design.
  • Use of abstraction, information hiding, functional and hierarchical decomposition.
  • Contents of design documents.
  • Design patterns.
  • Software Systems modeling using UML.
  • Behavioral modeling: use cases, interaction diagrams, state diagrams, activity diagrams.
  • Structural modeling: class diagrams, object diagrams, components, interfaces, components diagrams, deployment diagrams.
  • Model management: packages, subsystems.
  • Software Verification and Validation. Reviews.
  • Testing during the Life Cycle: Unit testing, Integration testing, System testing, Acceptance testing, Regression testing.
  • Test case determination: Black-box tests, Structural tests, statistical tests.
  • Software Metrics.
  • Product metrics: Complexity metrics, Reliability metrics.
  • Process metrics: size based metrics, "Function points" based metrics, Productivity metrics.
  • Estimating the cost of a software project.
  • Software Quality.
  • Formal specification.
  • Software project management.
  • Planning activities : defining products, defining activities and work packages, estimating resources and duration, defining activity network, defining schedule and total cost.
  • Risk management.
  • Project reports.