Objectives and competences
The objective of this course is to provide a basic understanding of the software life cycle and the methods used in the context of a team-based disciplined development of software.
Content (Syllabus outline)
• Introduction: modelling the life cycle, concept of quality, the role of standards.
• Planning and managing the project: feasibility analysis, planning, project management, case study, work on project.
• Capturing the requirements: types and characteristics of requirements, requirements validation, expressing the requirements, case study, work on project.
• Designing the system: system architecture design, architectural styles.
• Implementation: design principles and methods, coding, user interface design, case study, work on project.
• Software verification: basic definitions, test case description, basic testing strategies, testing tools, writing test reports, formal verification, case study, work on project.
• Software maintenance: writing the user manual, maintenance problems, case study, work on project.
Learning and teaching methods
• lectures, tutorial, computer work.
Intended learning outcomes - knowledge and understanding
On completion of this course the student will be able to
• plan small projects and capture the requirements,
• write and verify specifications,
• design, debug, test and maintain medium size programs according to a selected standard,
• explain the role of quality and economy factors in the software design,
• explain the team-work problems,
• explain the project management problems.
Intended learning outcomes - transferable/key skills and other attributes
Communication skills: written skills in writing the project documentation, communicating with co-workers on the project.
Use of information technology: use of software development tools.
Readings
• R. S. Pressman, B. R. Maxim: Software Engineering: A Practitioner's Approach, Eighth Edition, McGraw-Hill Education, New York, 2015.
• I. Sommerville: Software Engineering, Tenth Edition, Pearson Education Limited, Harlow, 2016.
• S. L. Pfleeger, J. M. Atlee: Software Engineering: Theory and Practice, Fourth Edition, Pearson, London, 2009.
• T. Dogša: Verifikacija in validacija programske opreme, Univerza v Mariboru, Tehniška fakulteta, Maribor, 1993.
Prerequisits
Recommended knowledge: C or C++ programming.