CE 407 – Software engineering
CE 407 – Software engineering; Weekly hours: 2+1, ECTS: 4
To explain what software engineering is and why it is important; To explain some ethical and professional issues that are important for software engineers; To explain what a socio-technical system is and the distinction between this and a computer-based system; To discuss legacy systems and why these are critical to many businesses; To explain what is meant by a critical system where system failure can have severe human or economic consequence; To introduce software process models and to describe some generic process models and when they may be used; To introduce CASE technology to support software process activities; To introduce the concepts of user and system requirements; To distinguish the role of requirements management in support of other requirements engineering processes; To introduce architectural design and to discuss its importance; To explain the advantages and disadvantages of different distributed systems architectures; To discuss client-server and distributed object architectures; To introduce peer-to-peer and service-oriented architectures as new models of distributed computing; To discuss the essence of agile development methods; To explain the principles and practices of extreme programming; To introduce software verification and validation and to discuss the distinction between them; To explain the distinctions between validation testing and defect testing; To describe the principles of system and component testing; To introduce the fundamentals of software costing and pricing; To explain why different techniques should be used for software estimation; To introduce the quality management process and key quality management activities; To explain the role of standards in quality management. Introduction to software engineering; Socio-technical system; Critical system; Software processes; Software requirements; Requirement engineering processes; Architectural design; Distributed systems architecture; Rapid software development; Verification and validation; Software testing; Software cost estimation; Quality management.