Software Engineering in Practical Approach: an Experience ......Scientists try to understand nature....
Transcript of Software Engineering in Practical Approach: an Experience ......Scientists try to understand nature....
Software Engineering in Practical Approach: an Experience Sharing Jurusan Teknik Informatika Politeknik Elektronika Negeri
ITS SURABAYA, Sept., 20-22, 2011
BAHTIAR H. SUHESTA IT Practitioner, Writer-preneur, and Founder of An-Nabwah Group
SOFTWARE ENGINEERING IN PRACTICE Session #1
Topics
• What is Engineering, Engineer, and Software Engineering?
• Software Engineering in Practice: its application, problem to answer, failure curve, its activities, and what really happened.
• The software engineering problems.
• Discussion.
2 Software Engineering in Practical Approach #1
What is “Software Engineering”?
3 Software Engineering in Practical Approach #1
Engineering
• The term engineering is derived from the word engineer, which itself dates back to 1325, when an engine’er (literally, one who operates an engine) originally referred to “a constructor of military engines”.
• The word “engine” itself is of even older origin, ultimately deriving from the Latin ingenium, meaning “innate quality, especially mental power, hence a clever invention.”
4 Software Engineering in Practical Approach #1
Engineering is…
• The creative application of scientific principles to:
– design or develop structures, machines, apparatus, or manufacturing processes, or
– works utilizing them singly or in combination; or
– construct or operate the same with full cognizance of their design; or
– forecast their behavior under specific operating conditions;
all as respects an intended function, economics of operation, and safety to life and property.
~ The American Engineers’ Council for Professional Development 5 Software Engineering in Practical Approach #1
Science vs Engineering Science Engineering
Science is about understanding the origins, nature, and behavior of the universe and all it contains
Engineering is about solving problems by rearranging the stuff of the world to make new things.
Scientists try to understand nature.
Engineers try to make things that do not exist in nature.
Scientists are concerned with WHY something happens.
Engineers are concerned THAT something happens.
Scientists dream about doing great things.
Engineers do them.
6 Software Engineering in Practical Approach #1
Science vs Engineering
• Scientists study the world as it is; engineers create the world that has never been.
• —Theodore von Kármán
Theodore von Kármán
May 11, 1881 – May 7, 1963 a Hungarian-American aerospace
engineer and physicist
7 Software Engineering in Practical Approach #1
Science vs Engineering
• Engineers stress invention.
• To embody an invention the engineer must put his idea in concrete terms, and design something that people can use.
• Since a design has to be concrete, it must have all the needed information, especially for engineers working on new designs.
• Most often, they are limited by insufficient scientific knowledge. Thus they study mathematics, physics, chemistry, biology, mechanics, etc. Often they have to add to the sciences relevant to their profession. Thus engineering sciences are born.
~ Stated by Fung et al (Foundation of Solid Mechanics)
a device, a gadget, a material, a method, a computing program, an
innovative experiment, a new solution to a problem, or an
improvement on what is existing
8 Software Engineering in Practical Approach #1
Science vs Engineering
• Engineers welcome any and all available scientific knowledge, but they needn't wait for scientists to give them the go-ahead to invent, design, or develop the machinery to advance technology or to check it when it runs out of control.
• Without understanding this, we will continue to underfund the engineering needed to solve our greatest problems.
9 Software Engineering in Practical Approach #1
Engineering is…
• Engineering is not merely knowing and being knowledgeable, like a walking encyclopedia; engineering is not merely analysis; engineering is not merely the possession of the capacity to get elegant solutions to non-existent engineering problems; engineering is practicing the art of the organized forcing of technological change... Engineers operate at the interface between science and society...
~ Dean Gordon Brown (Massachusetts Institute of Technology (1962)
10 Software Engineering in Practical Approach #1
Engineering and Engineer
• Engineer is someone who practices engineering (in Indonesia: “insinyur [Ir.]”)
Sarjana Teknik <> Insinyur! ST = gelar akademis; Ir = gelar profesi
ST bisa mendapatkan Ir melalui sertifikasi profesi.
Do you know?
11 Software Engineering in Practical Approach #1
Intermezzo
Source: PII website, 2011
12 Software Engineering in Practical Approach #1
Intermezzo
13 Software Engineering in Practical Approach #1
The Ideal Engineer
• The ideal engineer is a composite... He is not a scientist, he is not a mathematician, he is not a sociologist or a writer; but he may use the knowledge and techniques of any or all of these disciplines in solving engineering problems.
~ N. W. Dougherty, 1955
14 Software Engineering in Practical Approach #1
What is “Software Engineering”?
15 Software Engineering in Practical Approach #1
Software Engineering
• A profession dedicated to designing, implementing, and modifying software, so that it is of high quality, affordable, maintainable, and fast to build.
• A systematic approach to the analysis, design, assessment, implementation, test, maintenance and reengineering of software;
• The application of engineering to software.
16 Software Engineering in Practical Approach #1
Software Engineering
• Rekayasa Perangkat Lunak / RPL (in Indonesia)
• Suatu disiplin ilmu yang membahas semua aspek produksi perangkat lunak, mulai dari tahap awal requirement capturing (analisa kebutuhan pengguna), specification (menentukan spesifikasi dari kebutuhan pengguna), desain, coding, testing sampai pemeliharaan sistem setelah digunakan.
~ Romi Satria Wahono (berdasar pendapat Ian Sommerville)
17 Software Engineering in Practical Approach #1
Software Engineering
Requirement Capturing
System Design
Testing
Implementation Construction
Execution
Staffing
Monitoring & Controlling Planning
Initiation
Budgeting
SOFTWARE PRODUCTION
18 Software Engineering in Practical Approach #1
Software Engineering
• RPL bukan cabang dari Computer Science yang mempelajari technical coding / programming [algorithm, data structure, programming language, etc].
19 Software Engineering in Practical Approach #1
SE based on SWEBOK*)
• S/W requirement • S/W design • S/W construction • S/W testing • S/W configuration
management
*) Software Engineering Body of Knowledge, IEEE Computer Society, 2004
• S/W engineering management
• S/W engineering process • S/W quality • S/W maintenance
Software Development
Project Management
• Software engineering tools and methods
• Knowledge area of the related disciplines
Tools & Basic-Theories
20 Software Engineering in Practical Approach #1
SE in Practice: Its Application
• Aplikasi SE dalam praktek: manajemen kegiatan produksi perangkat lunak.
• Ada 2 bagian besar: – Software Development (pembangunan perangkat
lunak) berhubungan dengan bagaimana perangkat lunak dirancang dan dibangun.
– Project Management (manajemen proyek pembangunan perangkat lunak) berhubungan dengan bagaimana perancangan dan pembangunan perangkat lunak bisa terlaksana dengan baik hingga berhasil diimplementasikan.
21 Software Engineering in Practical Approach #1
SE in Practice: Problem to Answer
• SE digunakan untuk menjawab permasalahan, seperti: – Mengapa development software tidak selesai-
selesai?
– Mengapa biaya development-nya begitu tinggi?
– Mengapa error selalu ditemukan setelah dideliver ke kustomer?
– Mengapa kita terlalu lama me-maintain software eksisting?
– Dll.
22 Software Engineering in Practical Approach #1
SE in Practice: SW Failure Curve
• Software Engineering methods strive to reduce the magnitude of the spikes and the slopes of the actual curve of software failure curve.
23 Software Engineering in Practical Approach #1
SE in Practice: Best Practice
Software Engineering in Practical Approach #1 24
Information Strategic Planning
Requirement Analysis
System Design
System Construction
System Testing
Implementation
Data Acquisition
Documentation
Maintenance
• Best practice dari pengalaman panjang dalam melakukan development perangkat lunak *).
*) contoh kasus pada perusahaan tempat narasumber pernah bekerja; dengan beberapa penyesuaian.
M-2 M-3 M-4 M-5 M-6 M-1
SE in Practice: Activity Mapping
Software Engineering in Practical Approach #1 25
Info. Strategic Planning
Requirement Analysis
System Design
System Construction
System Testing
Implementation
Data Acquisition
Documentation
Maintenance
Project Start
SOFTWARE DEVELOPMENT ↗
SE in Practice: Activity Mapping
• Information Strategic Planning biasa dilakukan di awal, setelah positif mendapatkan proyek untuk dikerjakan atau seringkali jauh sebelum proyek tersebut definitif.
• Setidaknya melakukan observasi dan interview / diskusi dengan (calon) kustomer; untuk menyusun user requirement awal, budget, dan skedul untuk pembuatan proposal penawaran.
Software Engineering in Practical Approach #1 26
SE in Practice: Activity Mapping
• Jika sudah definitif, pekerjaan awal adalah melakukan Requirement Analysis. Jika belum melakukan Information Strategic Planning, maka pekerjaan tersebut digabung pada fase ini.
• Output Requirement Analysis digunakan sebagai dasar melakukan System Design.
• Output System Design digunakan sebagai dasar programmer untuk develop software pada fase System Construction.
Software Engineering in Practical Approach #1 27
SE in Practice: Activity Mapping
• Selama System Construction dilakukan System Testing untuk memeriksa hasil konstruksi.
• Pada fase ini diperlukan data untuk melakukan testing, sehingga Data Acquisition sudah bisa dilakukan sejak fase awal ini.
• Sedangkan Documentation pada dasarnya dilakukan sejak proses dokumentasi mulai; yakni sejak Requirement Analysis, atau bahkan sebelum itu; hingga Maintenance selesai dan project closed.
Software Engineering in Practical Approach #1 28
M-2 M-3 M-4 M-5 M-6 M-1
The Real Activity Mapping
Software Engineering in Practical Approach #1 29
Info. Strategic Planning
Requirement Analysis
System Design
System Construction
System Testing
Implementation
Data Acquisition
Documentation
Maintenance
Project Start
SOFTWARE DEVELOPMENT ↗
Requirement Analysis (cont’)
System Design (cont’)
System Construction (cont’)
Syst. Testing (cont’)
Data Acq. (cont’)
The Main Problem
Software Engineering in Practical Approach #1 30
The Main Problem
Software Engineering in Practical Approach #1 31
Apakah SE-nya SALAH?
Engineers ... are not superhuman. They make mistakes in their assumptions, in their calculations, in their conclusions. That they make mistakes is forgivable; that they catch them is imperative. Thus it is the essence of modern engineering not only to be able to check one's own work but also to have one's work checked and to be able to check the work of others. ~Henry Petroski
32 Software Engineering in Practical Approach #1
Henry Petroski Feb. 6, 1942
USA engineers in failure analysis
Software is Never Finished
Software Engineering in Practical Approach #1 33
It’s like a journey with no the end.
Software is Never Finished
• It's a fact of life: software is never finished. It's either buggy or not secure.
• Microsoft issues patches monthly, some companies even more often. Oracle seems to take a more leisurely pace, issuing patches only quarterly service pack
• There was only one product that strikes us as being finished, and that was MS-DOS 2.1. Of course, that was a while ago.
Software Engineering in Practical Approach #1 34
Discussion
Software Engineering in Practical Approach #1 35