Software Engineering in Practical Approach: an Experience ......Scientists try to understand nature....

35
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

Transcript of Software Engineering in Practical Approach: an Experience ......Scientists try to understand nature....

Page 1: Software Engineering in Practical Approach: an Experience ......Scientists try to understand nature. Engineers try to make things that do not exist in nature. Scientists are concerned

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

Page 2: Software Engineering in Practical Approach: an Experience ......Scientists try to understand nature. Engineers try to make things that do not exist in nature. Scientists are concerned

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

Page 3: Software Engineering in Practical Approach: an Experience ......Scientists try to understand nature. Engineers try to make things that do not exist in nature. Scientists are concerned

What is “Software Engineering”?

3 Software Engineering in Practical Approach #1

Page 4: Software Engineering in Practical Approach: an Experience ......Scientists try to understand nature. Engineers try to make things that do not exist in nature. Scientists are concerned

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

Page 5: Software Engineering in Practical Approach: an Experience ......Scientists try to understand nature. Engineers try to make things that do not exist in nature. Scientists are concerned

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

Page 6: Software Engineering in Practical Approach: an Experience ......Scientists try to understand nature. Engineers try to make things that do not exist in nature. Scientists are concerned

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

Page 7: Software Engineering in Practical Approach: an Experience ......Scientists try to understand nature. Engineers try to make things that do not exist in nature. Scientists are concerned

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

Page 8: Software Engineering in Practical Approach: an Experience ......Scientists try to understand nature. Engineers try to make things that do not exist in nature. Scientists are concerned

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

Page 9: Software Engineering in Practical Approach: an Experience ......Scientists try to understand nature. Engineers try to make things that do not exist in nature. Scientists are concerned

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

Page 10: Software Engineering in Practical Approach: an Experience ......Scientists try to understand nature. Engineers try to make things that do not exist in nature. Scientists are concerned

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

Page 11: Software Engineering in Practical Approach: an Experience ......Scientists try to understand nature. Engineers try to make things that do not exist in nature. Scientists are concerned

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

Page 12: Software Engineering in Practical Approach: an Experience ......Scientists try to understand nature. Engineers try to make things that do not exist in nature. Scientists are concerned

Intermezzo

Source: PII website, 2011

12 Software Engineering in Practical Approach #1

Page 13: Software Engineering in Practical Approach: an Experience ......Scientists try to understand nature. Engineers try to make things that do not exist in nature. Scientists are concerned

Intermezzo

13 Software Engineering in Practical Approach #1

Page 14: Software Engineering in Practical Approach: an Experience ......Scientists try to understand nature. Engineers try to make things that do not exist in nature. Scientists are concerned

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

Page 15: Software Engineering in Practical Approach: an Experience ......Scientists try to understand nature. Engineers try to make things that do not exist in nature. Scientists are concerned

What is “Software Engineering”?

15 Software Engineering in Practical Approach #1

Page 16: Software Engineering in Practical Approach: an Experience ......Scientists try to understand nature. Engineers try to make things that do not exist in nature. Scientists are concerned

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

Page 17: Software Engineering in Practical Approach: an Experience ......Scientists try to understand nature. Engineers try to make things that do not exist in nature. Scientists are concerned

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

Page 18: Software Engineering in Practical Approach: an Experience ......Scientists try to understand nature. Engineers try to make things that do not exist in nature. Scientists are concerned

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

Page 19: Software Engineering in Practical Approach: an Experience ......Scientists try to understand nature. Engineers try to make things that do not exist in nature. Scientists are concerned

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

Page 20: Software Engineering in Practical Approach: an Experience ......Scientists try to understand nature. Engineers try to make things that do not exist in nature. Scientists are concerned

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

Page 21: Software Engineering in Practical Approach: an Experience ......Scientists try to understand nature. Engineers try to make things that do not exist in nature. Scientists are concerned

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

Page 22: Software Engineering in Practical Approach: an Experience ......Scientists try to understand nature. Engineers try to make things that do not exist in nature. Scientists are concerned

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

Page 23: Software Engineering in Practical Approach: an Experience ......Scientists try to understand nature. Engineers try to make things that do not exist in nature. Scientists are concerned

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

Page 24: Software Engineering in Practical Approach: an Experience ......Scientists try to understand nature. Engineers try to make things that do not exist in nature. Scientists are concerned

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.

Page 25: Software Engineering in Practical Approach: an Experience ......Scientists try to understand nature. Engineers try to make things that do not exist in nature. Scientists are concerned

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 ↗

Page 26: Software Engineering in Practical Approach: an Experience ......Scientists try to understand nature. Engineers try to make things that do not exist in nature. Scientists are concerned

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

Page 27: Software Engineering in Practical Approach: an Experience ......Scientists try to understand nature. Engineers try to make things that do not exist in nature. Scientists are concerned

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

Page 28: Software Engineering in Practical Approach: an Experience ......Scientists try to understand nature. Engineers try to make things that do not exist in nature. Scientists are concerned

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

Page 29: Software Engineering in Practical Approach: an Experience ......Scientists try to understand nature. Engineers try to make things that do not exist in nature. Scientists are concerned

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’)

Page 30: Software Engineering in Practical Approach: an Experience ......Scientists try to understand nature. Engineers try to make things that do not exist in nature. Scientists are concerned

The Main Problem

Software Engineering in Practical Approach #1 30

Page 31: Software Engineering in Practical Approach: an Experience ......Scientists try to understand nature. Engineers try to make things that do not exist in nature. Scientists are concerned

The Main Problem

Software Engineering in Practical Approach #1 31

Page 32: Software Engineering in Practical Approach: an Experience ......Scientists try to understand nature. Engineers try to make things that do not exist in nature. Scientists are concerned

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

Page 33: Software Engineering in Practical Approach: an Experience ......Scientists try to understand nature. Engineers try to make things that do not exist in nature. Scientists are concerned

Software is Never Finished

Software Engineering in Practical Approach #1 33

It’s like a journey with no the end.

Page 34: Software Engineering in Practical Approach: an Experience ......Scientists try to understand nature. Engineers try to make things that do not exist in nature. Scientists are concerned

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

Page 35: Software Engineering in Practical Approach: an Experience ......Scientists try to understand nature. Engineers try to make things that do not exist in nature. Scientists are concerned

Discussion

Software Engineering in Practical Approach #1 35