Document 15075198

advertisement
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
Download