Ivica Crnkovic Mälardalen University Software Engineering Division ivica.crnkovic@mdh.se http://www.idt.mdh.se/~icc Page 1, 3/12/2016 Contents What is Software Engineering? Software Engineering and Science Methods of Software Engineering Software Engineering Research Example – Software architecture Page 2, 3/12/2016 What is Software Engineering? Software engineering is an engineering discipline which is concerned with all aspects of software production from the early stages of system specification through to maintaining the system after gone into use. Ian Sommerville, Software Engineering We need further explanation of: Engineering discipline All aspects of software production Page 3, 3/12/2016 Engineering Engineers make the things work Solving problems understand the problem analyze the problem Find solutions Constructing the solution from parts that address the problem's various aspects - do a synthesis To achieve the goal engineers apply theories, methods and tools from different disciplines Search for solutions even when there is not theory or methods Page 4, 3/12/2016 Analysis of a problem PROBLEM Identify different aspects of the problem Arrange the problems in clearly defined and understandable sub-problems Subproblem 1 Subproblem 2 Subproblem 3 Page 5, 3/12/2016 The synthesis Find solutions for subproblems Solution 1 Solution 2 Solution 3 Solution 4 Put together solutions to a consistent view Provide (make) a solution SOLUTION Page 6, 3/12/2016 Engineering vs. Software Engineering Many similarities Methods and procedures Similar objectives and goals Many differences Difference between software and hardware/the real world Software – no physical limits Not visible Modifiable More complex Different theories and methods used Different experiences, traditions Different maturity level Page 24, 3/12/2016 All aspects of Software Development Aspects Technical (how technically solve the problem) Organizational (how to organize people) Processes and Methods Business aspects Professional and ethical responsibility Research and Science Page 25, 3/12/2016 Computer Science Vs. Software Engineering COMPUTER SCIENCE Computer Functions OTHER SCIENCES Theories CUSTOMER Problem SOFTWARE ENGINEERING Software Engineering Research & Science Principles, Methods and Tools to Solve Problem and Construct Solutions Solution Page 28, 3/12/2016 Methods and Technologies Solution Phases Requirements Analysis Design Implementation Test Delivery Maintenance Service Software/Systems Engineering Methods Different Technologies Page 30, 3/12/2016 SE disciplines and areas From European Software Engineering Conference and Symposium on the Foundations of Software Engineering Requirements Engineering Specification and Verification Software Architecture and Design Analysis and Testing Development Paradigms and Software Processes Evolution and Refactoring Tools and Environments Empirical Software Engineering Software Metrics Software Quality and Performance Component-based Software Engineering Model Driven Engineering Web Applications Distributed Systems and Middleware Service Oriented Applications Mobile and Embedded System Open Standards and Certification Software Economics and Human Resources Dependability (safety, security, reliability) Case Studies and Experience Reports Page 31, 3/12/2016 Software Engineering Methods - Examples Requirements Analysis Design Implementation Test Delivery Maintenance Service Project Management Software Development Models and Processes support Component-based Software Engineering (CBSE) Requirements Engineering Analyse/design methods (UML, OOP, Formal methods, ...) Architectural analysis (tradeoff analysis, quality, attributes…) Programming Methods /Languages Configuration Management Test and Verification Customer support, Maintenance Page 33, 3/12/2016 What is then Software Engineering Research? Analyzing natures of problems and their solutions Finding more general principles that SE can use Developing methods and tools Implementing principles on new problem domains …… Page 34, 3/12/2016 Software Engineering Research Research methods used SE Exemplified by Software Architecture Presentation extracted from Mary Shaw’s presentation on ICSE 2001 in Toronto http://www-2.cs.cmu.edu/~Compose/paper_abstracts/etaps-2002.html Page 35, 3/12/2016 The basic characteristic of SE REAL WORLD Practical problem ? REAL WORLD Practical Solution Page 36, 3/12/2016 Software engineering and Scientific Methods Page 37, 3/12/2016 Research Strategy Software engineering and Scientific Methods Page 38, 3/12/2016 Validation of the Result Software engineering and Scientific Methods Page 39, 3/12/2016 Nasreddin story and Software Engineering Story about a lost ring Nasreddin Hodja Page 40, 3/12/2016 Software engineering and Scientific Methods Page 41, 3/12/2016 SE Research process Research Questions Research Results Result Validation Page 42, 3/12/2016 Software engineering and Scientific Methods Page 43, 3/12/2016 Example: Software Architecture The software architecture of a program or computing system is the structure or structures of the system, which comprise software components, the externally visible properties of those components and the relationships among them L. Bass, P. Clements, R. Kazman, Software Architecture In Practise, Addison Wesley, 1998 System subsystem component Subsystem component component Page 45, 3/12/2016 Software engineering and Scientific Methods Page 46, 3/12/2016 Software engineering and Scientific Methods Page 47, 3/12/2016 Software engineering and Scientific Methods Page 48, 3/12/2016 Software engineering and Scientific Methods Page 49, 3/12/2016 Software engineering and Scientific Methods Page 50, 3/12/2016 Software engineering and Scientific Methods Page 51, 3/12/2016 Software engineering and Scientific Methods Page 52, 3/12/2016 Software engineering and Scientific Methods Page 55, 3/12/2016 Software engineering and Scientific Methods Page 56, 3/12/2016 Software engineering and Scientific Methods Page 57, 3/12/2016 Software engineering and Scientific Methods Page 58, 3/12/2016 Software engineering and Scientific Methods Page 59, 3/12/2016 Software engineering and Scientific Methods Page 60, 3/12/2016 What characteristic is the real world? The basic of SE REAL WORLD Practical problem ? REAL WORLD Practical Solution 1) What are the problems from the real world? Are they general? What are the elements of them? 2) Are the solutions general? What are their limits? EMPIRICAL SOFWTARE ENGNEERING Software engineering and Scientific Methods Page 61, 3/12/2016 Empirical Software Engineering – approches Case studies Systematically study a case using different methods – – – – Interview people Observe Get information from the information sources (documents) Participate in the case Experiments Isolate the subject of study Perform measurements Compare results from different groups Surveys Ask questions to a large group Provide statistical results Systematic literature review Software engineering and Scientific Methods Page 62, 3/12/2016 Look, there are black sheep here! There is one black sheep! Physicist The sheep are black! Mathematician The sheep are black! Biologist There exists at least one sheep that is at least black from Software engineering and Scientific Methods one side! Software engineer Page 63, 3/12/2016 Traps of empirical engineering Generalization from one case and tautology You see the facts you classify the facts you check whether your classification is in compliance with the facts What is wrong here? Generalisation and grounded theory Grounded theory – you build your theory from the observations (you start the observation without the theory) What is problematic here? Experiments You do experiments on two groups and measure the differences (typical case - Students performing the experiment What is a risk here? Software engineering and Scientific Methods Page 64, 3/12/2016 Validation in empirical SE Construct validity relates to the collected data and how well the data represent the investigated phenomenon Internal validity concerns the connection between the observed behavior and the proposed explanation for the behavior, i.e. it is about ensuring that the actual conclusions are true. External validity concerns the possibilities to generalize the results from a study. Reliability concerns the possibilities to reach the same conclusions if the study is repeated by another researcher. Software engineering and Scientific Methods Page 65, 3/12/2016 Summary Software Engineering is oriented on practical things from the real word Understanding problems, providing software solutions SE uses methods and tools for solving the problems from different disciplines SE research Understanding principles Defining principle for solving the problems Developing methods and tools Page 75, 3/12/2016