Mata kuliah Tahun : T0144 – Advanced Topics in Software Engineering : 2010 Pertemuan 1 Introduction to Software Engineering Learning Outcomes Pada akhir pertemuan ini, diharapkan : Mahasiswa dapat menjelaskan Definisi, Tujuan, dan Peranan Software Engineering sebagai Disiplin Ilmu 3 Outline Material • • • • • • Software Engineering Definition Objectives of Software Engineering Software Engineering vs Computer Science Why do we need Software Engineering? SE Sub Disciplines Course Overview 4 Software Engineering Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software. 5 Objectives of Software Engineering A profession and field of study dedicated to creating software that is of • higher quality, • more affordable, • maintainable, • and quicker to build. Software Engineering vs Computer Science • Computer Science puts a lot of emphasis on Programming. • A Software Engineer needs to know Programming, but it is not enough. • A good Software Engineer not only require good technical skills but also “soft skills”. Art vs Science • Is Programming an Art? • Creative + Intuitive vs Systematic + Scientific • “Software Craftmanship” is an approach to software development that emphasizes the coding skills of the software developers themselves. It is a response by software developers to the perceived ills of the mainstream software industry, including the prioritization of financial concerns over code quality. “Software Crisis” • The term was used to describe the impact of rapid increases in computer power and the complexity of the problems which could be tackled. • In essence, it refers to the difficulty of writing correct, understandable, and verifiable computer programs. • The roots of the software crisis are complexity, expectations, and change. Signs of “Software Crisis” • • • • • • • Projects running over-budget. Projects running over-time. Software was very inefficient. Software was of low quality. Software often did not meet requirements. Projects were unmanageable and code difficult to maintain. Software was never delivered. “no silver bullet” • • • • SE tries to answer these challenges Methodologies, Process, Best Practices But there’s no magic silver bullet that can solve everything Brooks argues that "there is no single development, in either technology or management technique, which by itself promises even one order of magnitude [tenfold] improvement within a decade in productivity, in reliability, in simplicity." • He also states that "we cannot expect ever to see two-fold gains every two years" in software development, like there is in hardware development. SE Sub Disciplines (1/3) 1. Software requirements: The elicitation, analysis, specification, and validation of requirements for software. 2. Software design: The design of software is usually done with Computer-Aided Software Engineering (CASE) tools and use standards for the format, such as the Unified Modeling Language (UML). 3. Software development: The construction of software through the use of programming languages. SE Sub Disciplines (2/3) 4. Software testing: an empirical investigation conducted to provide stakeholders with information about the quality of the product or service 5. Software maintenance: Software systems often have problems and need enhancements for a long time after they are first completed. This subfield deals with those problems. 6. Software configuration management: Since software systems are very complex, their configuration (such as versioning and source control) have to be managed in a standardized and structured method. SE Sub Disciplines (3/3) 7. Software engineering management: The management of software systems borrows heavily from project management, but there are nuances encountered in software not seen in other management disciplines. 8. Software development process: The process of building software is hotly debated among practitioners with the main paradigms being agile or waterfall. 9. Software engineering tools, i.e. CASE tools. 10. Software quality : measures how well software is designed (quality of design), and how well the software conforms to that design (quality of conformance). What we will cover in this course • • • • Software Design (Architecture) Software Development Software Development Process Software Engineering Tools References • Guide to the Software Engineering Body of Knowledge - 2004 Version. IEEE Computer Society. p. 1–1. ISBN 0-7695-2330-7. http://www.swebok.org/ • Software Engineering on Wikipedia http://en.wikipedia.org/wiki/Software_engineering • Art and Computer Programming http://onlamp.com/pub/a/onlamp/2005/06/30/artofprog.html • Art In programming – Andrew Hunt & David Thomas http://www.pragmaticprogrammer.com/articles/ArtInProgramming.pdf • The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition (2nd Edition) - Frederick P. Brooks 16