Lecture Softwareengineering-Vertiefung 1 Introduction Summer term 2014 TU Chemnitz Department of Computer Science Dr. Dirk Müller
Overview Introduction Organizational issues Process of software inspection, process of software production Prototyping, configuration and version management Project management, methods of effort/cost estimation, software metrics Software quality, maintenance and software evolution Generic programming, templates, reflection in Java Design patterns (Singleton, Decorator, Adapter, Factory), adaptive and aspect-oriented programming 2/10
Organizational Issues Module: 577050 Softwareengineering-Vertiefung Time: Monday, 11:30 13:00 Place: room 1/205 3 or 5 credit points Test in written form, 60 min or 90 min, at the end of summer term 12 sessions: 7.4., 14.4., 21.4. Easter Monday, 28.4., 5.5., 12.5., 19.5., 26.5., 2.6., 9.6. Whit Monday, 16.6., 23.6., 30.6., 7.7., 14.7. 3/10
Text Books Ian Sommerville: Software Engineering 9, Addison-Wesley, 2010 [Som10] Helmut Balzert: Lehrbuch der Softwaretechnik. Softwaremanagement, 2. Auflage. Springer-Verlag, 2008, [Bal08] Helmut Balzert: Lehrbuch der Softwaretechnik. Basiskonzepte und Requirements Engineering, 3. Auflage. Springer-Verlag, 2009, [Bal09] Helmut Balzert: Lehrbuch der Softwaretechnik. Entwurf, Implementierung, Installation und Betrieb, 3. Auflage, Springer-Verlag, 2011 [Bal11] 4/10
Magic Triangle Good software shall be created quickly and at low costs. In most cases, focusing on two goals necessary since 1968 (NATO conference in Garmisch) engineer-like approach advertised because size and complexity with unstructured methods no more manageable Quality Time Costs 5/10
Definitions Goal: cost-effective development of SW of high quality David Parnas [1]: Design for Change multi-person construction of multi-version programs Helmut Balzert: Zielorientierte Bereitstellung und systematische Verwendung von Prinzipien, Methoden und Werkzeugen für die arbeitsteilige, ingenieurmäßige Entwicklung und Anwendung von umfangreichen Softwaresystemen. Zielorientiert bedeutet die Berücksichtigung z. B. von Kosten, Zeit, Qualität. [Bal09], S. 17 IEEE [2]: The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. 6/10
Quality of Software: ISO/IEC 9126 from 2001 Functionality Reliability Usability Suitability Accuracy Interoperability Security What? Maturity Fault tolerance Recoverability Understandability Learnability Operability In all groups: + compliance Software quality Resource utilization (e.g. memory, energy) Time behavior Analyzability Changeability Stability Testability Adaptability Installability Replaceability Efficiency Maintainability Portability Design for Change How? (non-functional properties) 7/10
Quality of Software: ISO/IEC 250mn from 2011 Software product Quality Requirements and Evaluation (SQuaRE) 2 new main criteria, now 8 in total Security Compatibility: Co-existence and Interoperability Functionality was renamed to Functional suitability Efficiency was renamed to Performance efficiency Maintainability with modularity and reusability Reliability with availability 8/10
Challenges Repeating error patterns, debugging after tests is late and expensive => Software inspection Customer wants to have visible results quickly: Prototyping Requirements are corrected and extended, great number of versions=> Version management Time and costs are well measurable, but quality? => Software metrics Operation is normally longest phase => Maintenance and software evolution Concrete methodologies Templates, reflection, design patterns, aspect-oriented programming 9/10
References [1] Parnas, David Lorge. Software engineering or methods for the multiperson construction of multi-version programs. Programming Methodology. Springer Berlin Heidelberg, 1975. 225-235. [2] Abran, A. and J.W. Moore (exec. eds); P. Borque and R. Dupuis (eds.). 2004. SWEBOK: Guide to the Software Engineering Body of Knowledge. Piscataway, NJ, USA: IEEE 10/10