Implementasi dan Testing Sistem IMPLEMENTASI DAN TESTING SISTEM System Development Life Cycle System Specification Requirements Analysis Architectural Design Unit Testing Coding & Debugging Detailed Design System Testing Maintenance Software Construction/Implementation Verifying that the groundwork has been laid so that construction can proceed successfully Designing and writing routines and modules Creating data types and naming variables Selecting control structures and organizing blocks of statements Finding and fixing errors Reviewing other team members’ low-level designs and code and having them review yours Polishing code by carefully formatting and commenting it 1 Prihandoko Implementasi dan Testing Sistem Integrating software components that have been built separately Tuning code to make it smaller and faster Why is Software Construction Important? Construction is a large part of software development Construction is the pivotal (center) activity in software development With a focus on construction, the individual programmer’s productivity can improve enormously Construction’s product, the source code, is often the only accurate description of the software Construction is the only activity that’s guaranteed to be done Software Metaphors/Style of Programming 1. Software Penmanship: Writing Code o It is like writing a casual letter – just write it from start to finish. It does not require any formal planning o Problems: if the software is a project that requires more than one person 2 Prihandoko Implementasi dan Testing Sistem 2. Software Farming: Growing a System o It is like planting seeds and growing crops. You design a piece, code a piece, test a piece and add it to the system a little bit at a time o Problems: you don’t have any direct control over how the software develops 3. Software Oyster Farming: System Accretion o This approach is done by adding to your software a small amount at a time, that is, incremental designing, building and testing o Problems: it takes time to finish, but more reliable 4. Software Construction: Building Software o Developing software like building a tower o It covers planning, preparation, and execution o Apply reuse code, library, tools, etc to speed up the process Prerequisites to Construction (Why is it important?) Prerequisites: the work that must be done to prepare for software construction 3 Prihandoko Implementasi dan Testing Sistem Many programmers don’t make preparation because: o They can’t resist the urge to begin coding o Managers force programmer to do coding soon Doing prerequisites before construction is necessary for: o Planning the stages of software development o Create a blueprint to be reviewed and approved before coding o Finding error or mistakes at the early stages Problem-Definition Prerequisite Future Improvement System Testing Construction Architecture Requirements Analysis Problem Definition 4 Prihandoko Implementasi dan Testing Sistem A clear statement of the problem that the system is supposed to solve. Requirements Prerequisite Formal requirements is important o Help to ensure that the user, not programmer, drives the system functionality o Minimize changes to a system after development o Specifying requirements adequately is a key to a project success, perhaps even more important than effective construction techniques The cost of errors detected in architecture stage is 5 times more expensive than in requirement phase. If detected in coding, 10 times more expensive; during system test is 20 times; during acceptance test is 50 times; and during maintenance is 100 times. Architecture/Design Prerequisite The quality of the design determines the conceptual integrity of the system, and the quality of the system 5 Prihandoko Implementasi dan Testing Sistem Typical architectural components: o Program organization (project modules) o Change strategy (make it flexible to change) o Buy vs build decisions (tools, libraries) o Major data structures (database structure) o Key algorithms (such as sorting technique) o Major objects to be implemented o Generic functionality (user interface, input/output) o Error processing (preventing & detecting error) o Robustness (ability to continue running after error) o Performance goals (in terms of speed & memory) o General architectural quality (open platform, future improvements) Language Selection Program Best Languages Structured data C/C++, Pascal Quick&dirty proj Basic Fast execution Assembler, C Easy-to-maintain Pascal Real-time prog Assembler, C String Basic Pascal manipulation 6 Worst Lang Basic, Assembler Pascal, Assembler Basic C, Fortran Basic, Fortran C Prihandoko Implementasi dan Testing Sistem Key Points Metaphor helps you understand the software development process by relating it to other activities you already know about Treating software construction as similar to building construction suggests careful preparation Attention to quality at the beginning has a greater influence on product quality than at the end If a good problem definition hasn’t been specified, you might be solving the wrong problem during construction 7 Prihandoko