The goal of this unit is to introduce to the students concepts which will achieve the following objectives:
- Provide the students necessary conceptual background for undertaking advanced studies in software engineering, through courses or on their own.
- Define what is meant by software engineering and describe the differences between computer science and software engineering.
- Identify the characteristics of “good software”.
- To introduce ethical and professional issues that are useful to software engineers
- Define what is meant by the term “process” and how it applies to software development.
- Describe several different models of the software development process and understand their drawbacks and when they are applicable.
- To know what software engineering is and its importance as well as having answers to key questions related to software engineering
- To introduce architectural design and to discuss its importance
- To explain the architectural design decisions.
- Differentiate between the system life cycle and a system development methodology
- To introduce the concepts of software requirements (user, system and specification requirements)
- To explain how software requirements may be organised in a requirements document
- To understand the concepts of software design
- Introduce the notations of the Unified Modeling Language (UML)
- To discuss coding and unit testing
- To understand testing techniques that are geared to discover program faults
- To understand specific approaches to object-oriented testing