Session #1
SOFTWARE ENGINEERING IN PRACTICE 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
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.
Software Engineering in Practical Approach #1
2
What is “Software Engineering”?
Software Engineering in Practical Approach #1
3
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.” Software Engineering in Practical Approach #1
4
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 Software Engineering in Practical Approach #1
5
Science vs Engineering Science Science is about understanding the origins, nature, and behavior of the universe and all it contains Scientists try to understand nature. Scientists are concerned with WHY something happens. Scientists dream about doing great things.
Engineering Engineering is about solving problems by rearranging the stuff of the world to make new things. Engineers try to make things that do not exist in nature. Engineers are concerned THAT something happens. Engineers do them. Software Engineering in Practical Approach #1
6
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
Software Engineering in Practical Approach #1
7
Science vs Engineering 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 use.
• Engineers stress invention. • To embody an invention the engineer must put his idea in concrete terms, and design something that people can • 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) Software Engineering in Practical Approach #1
8
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. Software Engineering in Practical Approach #1
9
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)
Software Engineering in Practical Approach #1
10
Engineering and Engineer • Engineer is someone who practices engineering (in Indonesia: “insinyur [Ir.]”) Do you know? Sarjana Teknik <> Insinyur! ST = gelar akademis; Ir = gelar profesi ST bisa mendapatkan Ir melalui sertifikasi profesi.
Software Engineering in Practical Approach #1
11
Intermezzo
Source: PII website, 2011
Software Engineering in Practical Approach #1
12
Intermezzo
Software Engineering in Practical Approach #1
13
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
Software Engineering in Practical Approach #1
14
What is “Software Engineering”?
Software Engineering in Practical Approach #1
15
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. Software Engineering in Practical Approach #1
16
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) Software Engineering in Practical Approach #1
17
Software Engineering SOFTWARE PRODUCTION
System Testing Design Requirement Construction Implementation Capturing
Initiation Planning
Monitoring & Controlling
Execution Staffing Budgeting
Software Engineering in Practical Approach #1
18
Software Engineering • RPL bukan cabang dari Computer Science yang mempelajari technical coding / programming [algorithm, data structure, programming language, etc].
Software Engineering in Practical Approach #1
19
SE based on SWEBOK*) *) Software Engineering Body of Knowledge, IEEE Computer Society, 2004
• • • • •
S/W requirement Software S/W design Development S/W construction S/W testing S/W configuration management
• S/W engineering Project management Management • S/W engineering process • S/W quality • S/W maintenance
• Software engineering Tools & tools and methods Basic-Theories • Knowledge area of the related disciplines Software Engineering in Practical Approach #1
20
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. Software Engineering in Practical Approach #1
21
SE in Practice: Problem to Answer • SE digunakan untuk menjawab permasalahan, seperti: – Mengapa development software tidak selesaiselesai? – Mengapa biaya development-nya begitu tinggi? – Mengapa error selalu ditemukan setelah dideliver ke kustomer? – Mengapa kita terlalu lama me-maintain software eksisting? – Dll. Software Engineering in Practical Approach #1
22
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.
Software Engineering in Practical Approach #1
23
SE in Practice: Best Practice • Best practice dari pengalaman panjang dalam melakukan development perangkat lunak *).
Information Strategic Planning Requirement Analysis System Design System Construction System Testing Implementation Data Acquisition
*) contoh kasus pada perusahaan tempat narasumber pernah bekerja; dengan beberapa penyesuaian.
Documentation Maintenance
Software Engineering in Practical Approach #1
24
SOFTWARE DEVELOPMENT ↗
SE in Practice: Activity Mapping Info. Strategic Planning
Requirement Analysis System Design System Construction Project Start
System Testing Implementation Data Acquisition Documentation Maintenance M-1
M-2
M-3
M-4
M-5
Software Engineering in Practical Approach #1
M-6 25
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
SOFTWARE DEVELOPMENT ↗
The Real Activity Mapping Info. Strategic Planning
Requirement Analysis
Requirement Analysis (cont’) System Design (cont’)
System Design
System Construction (cont’)
System Construction Project Start
System Testing
Syst. Testing (cont’) Implementation
Data Acquisition
Data Acq. (cont’)
Documentation Maintenance M-1
M-2
M-3
M-4
M-5
Software Engineering in Practical Approach #1
M-6 29
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 Feb. 6, 1942 USA engineers in failure analysis
~Henry Petroski
Software Engineering in Practical Approach #1
32
Software is Never Finished It’s like a journey with no the end.
Software Engineering in Practical Approach #1
33
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