Presentation is loading. Please wait.

Presentation is loading. Please wait.

THE PROCESS OF WRITING SOFTWARE Python: System Engineering 1.

Similar presentations


Presentation on theme: "THE PROCESS OF WRITING SOFTWARE Python: System Engineering 1."— Presentation transcript:

1 THE PROCESS OF WRITING SOFTWARE Python: System Engineering http://www.flickr.com/photos/iamthestig2/3925864142/sizes/l/in/photostream/ 1

2 Computing Systems A computing system is composed of  hardware: the physical components of the system  software: the instructions that control the hardware Hardware components include:  Motherboard  Central processing unit (CPU)  Memory (RAM / Drives)  IO Devices  Video Card  Sound Card  Network Card 2

3 Hardware: CPU Central Processing Unit  An electronic chip that performs instructions  The “brains” of a computing system  A CPU can only perform very simple tasks:  Can add/subtract/multiply/divide two numbers  Can compare two numbers to see if one is smaller/larger  Can copy/move data from one place to another  CPU’s appear more powerful than this since these tasks are done very quickly 3

4 Software and Programming Tell the CPU to add two numbers  Load the number from memory location 2001 into CPU register R1  Load the number from memory location 2002 into CPU register R2  Add the numbers in registers R1 and R2  Copy the result into memory location 2003 Programming in such a low-level fashion would not be good. Would like to write something like  c = a + b Programming languages make it easier for a programmer to talk to the CPU 4

5 Overview of Computation Natural-language : a language used by people  If it is written, it is defined by a system of symbols and notations that communicate the content of the language  Examples: English, Spanish, French, Arabic, Tamil, etc… Programming language : a language used by computers  A system of symbols and notations that communicate computational content to the CPU. 5

6 Low/High level languages Low-level language  Any language that is “close” to machine instructions  Not meant for human readability  Specific to the CPU High-level language  Any language that is closer to “natural” language  Easier to read and understand  Portable 6

7 Languages Object code, bytecode Assembly Fortran, C Algol, Pascal, Ada Python, Java, Ruby microcode High Level Low Level Natural Language English, Chinese, Japanese, …

8 Machine Language Example (Pentium III Linux Box) 01111111 01000101 01001100 01000110 00000001 00000000 … Low Level Example Can you understand this code? 8

9 Assembly Example (Pentium III Linux Box).file “hello.c”.version “01.01”.section.rodata.LCO:.string“Hello World\n”.text.align 4.globl main.typemain,@function main: pushl %ebp movl %esp,%ebp pushl $.LCO call printf addl $4,%esp xorl %eax,%eax jmp.L1.p2align 4,,7.L1: leave ret Intermediate Level Example Can you understand this code? 9

10 C Language Example (machine independent) #include void main() { printf(“Hello World\n”); } High Level Example Can you understand this code? 10

11 Python Example print "Hello World" High Level Example Can you understand this code? 11

12 Compiled vs. Interpreted 12 Compiler Source Program Executable Code (THE CPU) Executable Code (THE CPU) Input Output Interpreter Source Program Output Input CPU Compilation: The language is brought down to the level of the machine using a translator. The translator is often called a compiler. Interpretation: The machine is brought up to the level of the language by the use of a virtual machine. This machine is often known as an interpreter.

13 Waterfall model The waterfall model involves the following processes  Analysis: Figure out exactly what the problem is. Understand as much of the problem as possible  Requirements: Describe exactly what your program will do (not necessarily how).  Design: Describe the variables, functions and classes of the solution. Describe the algorithms that will be used in your software.  Implement: Translate the design into a programming language and enter it into the computer. This course will use Python.  Test/Debug: Execute your implementation and devise tests that are designed to expose errors (bugs).  Maintenance: Continue to improve/develop/fix the program in response to user needs. 13

14 Waterfall 14

15 Example: Temperature Conversion Narrative: Susan is spending a year of study in China to learn advanced computer science programming.  She speaks Chinese fluently and listens to the radio every morning to figure out what the temperature will be so that she can dress appropriately.  The temperatures are reported in units of Celsius but she thinks only in terms of Fahrenheit. The analysis is pretty easy in this case:  She wants to write a program to convert Celsius to Fahrenheit for her. 15

16 Example: Temperature Conversion Requirements  The program will allow her to type in a number that represents the temperature in degrees Celsius.  The program will then print out the corresponding temperature in degrees Fahrenheit.  The relationship between input and output must be well defined.  F = 9/5 * C + 32  F is degrees in Fahrenheit (the output)  C is degrees Celsius (the input) 16

17 Example: Temperature Conversion Design  This is usually written in fake code (psuedo-code)  This is not a programming language  Describes the essentials without worrying about detail  For example: Input the temperature in degrees C (call it celsius) Calculate Fahrenheit as (9/5)*celsuis + 32 Output Fahrenheit Input the temperature in degrees C (call it celsius) Calculate Fahrenheit as (9/5)*celsuis + 32 Output Fahrenheit 17

18 Example: Temperature Conversion Implementation  Must take the design and translate it into a program. # convert.py # A program to convert Celsius temps to Fahrenheit # by: Susan Computewell def main(): celsius = eval(input(“What is the Celsius temperature? ”)) fahrenheit = 9 / 5 * celsius + 32 print(“The temperature is”, fahrenheit, “degrees Fahrenheit) main() # convert.py # A program to convert Celsius temps to Fahrenheit # by: Susan Computewell def main(): celsius = eval(input(“What is the Celsius temperature? ”)) fahrenheit = 9 / 5 * celsius + 32 print(“The temperature is”, fahrenheit, “degrees Fahrenheit) main() 18

19 Example: Temperature Conversion Testing  How would you test this program? # convert.py # A program to convert Celsius temps to Fahrenheit # by: Susan Computewell def main(): celsius = eval(input(“What is the Celsius temperature? ”)) fahrenheit = 9 / 5 * celsius + 32 print(“The temperature is”, fahrenheit, “degrees Fahrenheit) main() # convert.py # A program to convert Celsius temps to Fahrenheit # by: Susan Computewell def main(): celsius = eval(input(“What is the Celsius temperature? ”)) fahrenheit = 9 / 5 * celsius + 32 print(“The temperature is”, fahrenheit, “degrees Fahrenheit) main() 19


Download ppt "THE PROCESS OF WRITING SOFTWARE Python: System Engineering 1."

Similar presentations


Ads by Google