# SE2 - lesson 01 #### Elisabeta di Nitto ##### 8 October 2015 ### Course Informations Software Engineering 1 was focused more on development *in the small*, while this course is focused more on *in the large* development. ### Books recommendations - Sommerville - Hans Van Vliet: Software Engineering: principles and practice, 3rd edition - Ghezzi Jazayeri, Mandrioli: Ingegneria del software. ##### Check the course forum through beep ### Introduction #### Why is Software Engineering important? Software is everywhere in our society, and developing new software as mantaining legacy software (e.g. Cobol software in banks) are skills very important in our society. Software is also important related to the global telecomunication Infrastructure, which mutually depends on software. Also in energy applications, and manufactoring systems software has an important role ##### Software can also be used to address problems like: - Increasing number of elderly people - Climate change. - Reducing the power consumption of the global network - Simulate the effects of global changes. - Increasing world population - Combating international terrorism Software Engineering is useful to manage the complexity of software-intensive systems and ensure their reliability. ##### Software whe are dealing with are: - large and complex - built by teams - exist in many version - last many Years - undergo changes In general SE have to do with multi-version software of multi-person development. #### Characteristics of Software Engineering: - Systematic approach to development, operation, maintenance, deployment and retirement of software. - Prediction of costs and time necessary to develop a new software. ##### Deals with cost-effective solutions to practical problems bu applying scientific knowledge in building software artifacts in the service of the human race. - Cost-effective - practical problema - scientific knowledge - building things - service to the human race These topics are common with other engineering fields. ##### Programming skills are not enough __Programmer__ - Develops a complete Programmer - works on known specifications - works individually __Software Engineer__ - Identifies requirements - Design a component to be combined with other components - Work in teams #### Skills of a software engineer: - Technical - Project Management - Cognitive - Enterprise organization - Interaction with different cultures - Domain knowledge - The quality of human resources is of primary importance