Download presentation
Presentation is loading. Please wait.
1
Software Engineering Processes
The magic that makes your devices smart: smart phone, smart grid, smart car, smart classroom etc. 11/16/16, IEEE Foothill Section Computer Society
2
Dr. Tim H. Lin Education: Ph. D., Mathematics, Caltech (CIT) BSEE, National Taiwan University 20+years software development and management experience Areas of Interest: Natural Language Processing, Cyber Security, Artificial Intelligence, Machine Learning Instructing: C / C++ / C# / Java, OS, Computer Network (TCP/ IP), Discrete Structures, Data Structures Contact: 10/10/16, Cal Poly Pomona for Shandong Economic and IT Committee
3
My SE Colleagues at ECE Dr. Chandra: Data Structures, Microcontrollers, C/C++, MATLAB Dr. Monemi: Power Engineering, Security, Smart Grid, C / C++ / Java Dr. Yin: Performability and Reliability, C / C++ / C# / Java, OS, Verilog, Computer Architecture, Discrete Structures, Data Structures Dr. Salah Edin: Biomedical Engineering, DSP, Image Processing, C. 11/16/16, IEEE Foothill Section Computer Society
4
Colleagues in CS and in CIS
Dr. Sang: CS algorithm design, graph embedding, distributed computing, web applications, Java/C++, data structures, algorithms, object-oriented design & programming. Dr. Sun: CS, software engineering, cloud computing, mobile computing, Internet-Of-Things, software entrepreneurship, algorithms, object-oriented design & programming, software verification and validation Dr. Ma: CIS, Data Mining, Java, Web Development, Android App, System Analysis & Design 11/16/16, IEEE Foothill Section Computer Society
5
Agenda of today’s session
7:30 P.M. - 8:30 P.M. Presentation/Lecture Presentation with questions welcome Questions may be answered if it does not take long time to respond, otherwise it will be held till the Q & A session at 8:30 – 9:00 p.m. 8:30 P.M. - 9:00 P.M. Questions & Answers 11/16/16, IEEE Foothill Section Computer Society
6
A few words to the audience
Thanks for coming For industry guests, I hope to connect with you and maybe able to answer / address your questions (general / special) in the future through s or direct contact For students, I wish to set possibly some regular workshops (say monthly) to look / help on your coding style with different levels of expertise (have you taken 1, 2, 3, or more programming classes?) Please let me know if you need copy of this presentation file. 11/16/16, IEEE Foothill Section Computer Society
7
Myths of Software Engineering
Myth 1: Software is free / inexpensive (compared with hardware) Myth 2: The more people working on software, the less time it takes to complete Myth 3: Engineers (and engineering students) do not like software engineering or do not excel in software engineering. They enjoy coding, do not like testing, or documentation, nor for maintenance etc. See Pressman 11/16/16, IEEE Foothill Section Computer Society
8
A small software engineering question
How do you calculate Mathematically? (just add up one by one : 3, 6, 10, and then 15) Programmatically? (just write cout < or maybe print ?) What if now we want to calculate … + 100? Mathematically this is how Gauss calculated the sum of arithmetic series Programmatically this is how we use for loop instead of typing 100 numbers by brute force. What if now we want to calculate 1*2*3 *.. * 100 (or 100!). Mathematically there is no short hand or smart way of doing this Programmatically notice that in some computer program it shows 100! = 0, why? 11/16/16, IEEE Foothill Section Computer Society
9
What capabilities are needed in SE?
Basic logic reasoning Ability to know some human (natural) language and think in the artificial language (C / C++ / C# / Java / Python / JavaScript, etc.) Some mathematics Common sense to know the difference of doing things in math and SE Common sense to know when you need math to help design and implementing the code and verifying the outcome is correct (output is not always correct) Example: MATLAB mod (factorial (31), 26) ans = This means 31! % 26 = 0 by MATLAB. But 31!%26 = 0 by mathematics, by calculator etc. Common sense to know when you need SE (programming) to do the tedious work that math alone will take forever to do. 11/16/16, IEEE Foothill Section Computer Society
10
Theoretical Methodology: unstructured, structured, object oriented
Paradigms Concepts: Petri Net, data flow (DFD), control flow SDLC: (Development Cycle)Waterfall, spiral, rapid prototyping Project Management: balance among budget (cost), schedule, and quality Taxonomy: System Software, Application Software Platforms: host, cellular (IPhone, Android), server Client / server Metrics: Standards: IEEE, CMMI (Carnegie Mellon Univ’s SEI), DOD Organizations: IEEE Computer Society, ACM 11/16/16, IEEE Foothill Section Computer Society
11
Practical Computer Languages: C, C++, C#, Java, Python
Sectors: commercial, government and defense Open source: Linux, OpenCV Social Network: Facebook Consortium: Eclipse, Wikipedia Web services, web 2.0 11/16/16, IEEE Foothill Section Computer Society
12
Unstructured Programming (Assembly Programming)
Programming with Goto 1. Start 2. Go to 5 3. Process and Exit 4. Go to 3 5. Go to 4 This is equivalent to Start Process and Exit Assembly programming used lots of JMP, Branch if statements; these are Goto Statements 11/16/16, IEEE Foothill Section Computer Society
13
Structured Programming (C programming)
Using loops (for, while) and control constructs (if else). However data and functions acting on data are separate Example: // Data int hour, minute, second; // Function void SetTime( int hourValue, int minuteValue, int secondValue ) { hour = ( hourValue >= 0 && hourValue < 24 ) ? hourValue : 0; minute = ( minuteValue >= 0 && minuteValue < 60 ) ? minuteValue : 0; second = ( secondValue >= 0 && secondValue < 60 ) ? secondValue : 0; 11/16/16, IEEE Foothill Section Computer Society
14
Object Oriented Programming C++ / C# / Java etc
Object Oriented Programming C++ / C# / Java etc. (Group data and action in a class) 11/16/16, IEEE Foothill Section Computer Society
15
SDLC (Software Development Life Cycle)
Waterfall Spiral Rapid Prototyping 11/16/16, IEEE Foothill Section Computer Society
16
Waterfall Requirements / Spec Design Implementation
Testing and Debugging (Quality Assurance) Delivery: Code and Documents Maintenance 11/16/16, IEEE Foothill Section Computer Society
17
Requirements Engineering
Requirements are user requirements, what the user(s) want(s) to have for the product. This is the “what” stage of software product. Users usually have very vague idea of what they want (until they see the product / prototype, then they can see what they want, or say: this is what I mean). Unfortunately, product depends on the definition from the user. So advice / interaction from the development team is helpful. Documentation is generally called SRS (Software Requirements Spec) Review process is PDR (preliminary design review) There are many kinds of requirements: security requirement, safety requirement, timing, space, cost, budget etc. There are original requirements, derived requirements, etc. Some requirements may not be doable (that’s why validation is necessary), some requirements may be contradicting each other; some requirements may be too costly to implement. 11/16/16, IEEE Foothill Section Computer Society
18
Case of Need for transportation
What (requirements): a person needs to go from Los Angeles to San Francisco How (design): Walk Horseback or ride on animal Bike / Motorcycle Car Train Airplane Other means: 11/16/16, IEEE Foothill Section Computer Society
19
Case of Need for transportation
Implementation: Car: Buy a new car to go to SF Rent a car Hitchhike Ride on animal: Horse Camel Elephant 11/16/16, IEEE Foothill Section Computer Society
20
Case of Need for transportation
Testing Walking option not viable for LA to SF, but may work for CPP parking F9 to building 9 Car option viable for LA to SF; not that easy for LA to NY, impossible for LA to Honolulu. Airplane option viable for LA to Honolulu, maybe not for Pomona to Claremont. And so on Deliverables: a trip report Maintenance: revised plan for next trip 11/16/16, IEEE Foothill Section Computer Society
21
Case of Need for communications
(what or requirement) You at LA need to send a message to somebody at SF By snail mail By pony express By telegraph / telegram By land line phone By cellular phone By Skype 11/16/16, IEEE Foothill Section Computer Society
22
Software Design Design is the “how” part of the software development process. For the same “what”, there can be many different ways to do that or different “how”s. Example(s) Every design must be traceable back to a requirement (traceability) Documentation is called SDD Review process is CDR (Critical Design Review) 11/16/16, IEEE Foothill Section Computer Society
23
Software Implementation
Coding Standard Naming Standard Productivity in terms of LOC (lines of code) 11/16/16, IEEE Foothill Section Computer Society
24
Quality Assurance Code Walkthrough Testing Debugging
White box test Black box test Grey box test See example code in Console Application 2 Console Application 1 Debugging See stories of problems caused by software bugs 11/16/16, IEEE Foothill Section Computer Society
25
Overflow caused by data types
The outputs when running n = 5, n = 8, n = 10, n = 20, and n = 50 are shown below. 5! is 120 in Int16 5! is 120 in Int32 5! is 120 in Int64 8! is in Int16 8! is in Int32 8! is in Int64 10! is in Int16 10! is in Int32 10! is in Int64 20! is 0 in Int16 20! is in Int32 20! is in Int64 50! is 0 in Int16 50! is 0 in Int32 50! is in Int64 11/16/16, IEEE Foothill Section Computer Society
26
Levels of test Unit test Module test Integration test Subsystem test
Stress test Soak test Alpha test / beta test 11/16/16, IEEE Foothill Section Computer Society
27
V & V (Verification and Validation)
Verification is to do things right: Checks if design follows spec, implementation follows design, and uses testing and debugging to detect discrepancies and fix problems Validation is to do right things Checks if spec is correct, meaningful, reasonable, doable (legal, ethical, affordable etc.) and also if different statements from the spec do not conflict each other. 11/16/16, IEEE Foothill Section Computer Society
28
Delivery Deliverables Delivery date (schedule) Documents: Code
SRS (requirements), SDD (design) Test documents (test cases, test procedures, test reports), SQA (Software quality assurance) SUM (user’s manual) Code Delivery date (schedule) 11/16/16, IEEE Foothill Section Computer Society
29
Configuration Management
One person: One file without changes (no CM) One file with changes many times, but the same name (no CM, may lose some important data) One file with changes many times, with different names such as Filev1, Filev2, Filev3,.. (minimum CM). 11/16/16, IEEE Foothill Section Computer Society
30
Configuration Management (two or more persons accessing the same data or file)
Alice and Bob want to increment data by 3 and 5 respectively. Answer should be 108, and now is 105 since both try to change at the same time. Right way is when Alice checks out data for change, Bob can only check out for reading, but not for writing back. 11/16/16, IEEE Foothill Section Computer Society
31
CM Continued So either Alice and Bob have to follow an SOP (Standard Operating Procedure) or they use a software Configuration Management (or version control) to enforce this. Only one check out data (or documents) for editing at a time (the other one can check out for reading only). Version number should be used for the easy referral and checkpoint. This is followed by Linux OS (say major version number, minor version number etc.), Python, Android Studio, etc.. 11/16/16, IEEE Foothill Section Computer Society
32
Spiral Development stages in several iterations where requirement in each iteration can be modified based on the result of testing in the previous stage 11/16/16, IEEE Foothill Section Computer Society
33
Rapid Prototyping Develop an engineering prototype (not the final product for production) quickly to communicate with the users for requirements refining. Develop a pre-production prototype for the final refining or for beta test etc. 11/16/16, IEEE Foothill Section Computer Society
34
Platforms Platforms: Example: Java: J2SE, J2ME, J2EE Host
Mobile cellular (IPhone, Android), Server Example: Java: J2SE, J2ME, J2EE 11/16/16, IEEE Foothill Section Computer Society
35
Client / Server A client and a server as two separate computers / processes. Server starts first, listening to if / when the client starts Client starts and connects to server (using IP address search or host name search). Client and server then communicate using some protocols. Software needs to be implemented on the server and on the client Examples: print, (SMTP), file (FTP), TCP, IP etc. 11/16/16, IEEE Foothill Section Computer Society
36
Metrics Complexity Budget Productivity Cyclomatic number
If else branch Budget Man-months Productivity KLOC 11/16/16, IEEE Foothill Section Computer Society
37
Standards IEEE DOD Mil Std ISO
11/16/16, IEEE Foothill Section Computer Society
38
Organizations IEEE (Institute of Electrical and Electronic Engineers)
ACM (Association of Computing Machinery) ISO (international Standard Organization) 11/16/16, IEEE Foothill Section Computer Society
39
Computer Languages C C++ Java C# Python, PHP, JavaScript
11/16/16, IEEE Foothill Section Computer Society
40
Commercial Sector Companies: Google (Alphabet), Microsoft, Amazon, Oracle (Sun Micro etc.), eBay, FaceBook, Adobe, IBM, etc. Standard: IEEE Organization: IEEE, ACM Computer Languages: C / C++ / C#/ Java / Python Platforms: Windows, Unix / Linux, Mac 11/16/16, IEEE Foothill Section Computer Society
41
Government and Defense Sector
Companies / institutes: Northrop, Raytheon, Boeing, JPL (NASA), Lockheed. Government: Air Force, Navy, Army Standard: DOD Computer Languages: Specific languages used by different services such as JOVIAL (Air force), ADA 11/16/16, IEEE Foothill Section Computer Society
42
Open Source Linux / Unix: two OS are very similar, with OS written in C language. Unix is not open source. Linux is open source. Linux: Fedora, Ubuntu Unix: BSD Others: Sun (Solaris) OpenCV 11/16/16, IEEE Foothill Section Computer Society
43
Consortium Eclipse: a software IDE in several computer languages (Java, Python, etc) from these participating companies: Borland, IBM, RedHat etc. Wikipedia: web pages developed on voluntary basis from many contributors. 11/16/16, IEEE Foothill Section Computer Society
44
Conclusion Software development is both art and science (and engineering). Principles and SOP need to be exercised to ensure good product. However, creativity and imagination are also needed to have a software product that is outstanding. Software cost is a big percentage of the project and software pricing is a good science and art to master. Developing software is profitable. 11/16/16, IEEE Foothill Section Computer Society
45
Acknowledgements Thanks to IEEE Foothill Section
Chair / President : Mr. Max Cherubini Computer Society in IEEE Foothill Section: Chair: Mr. Bill Grist, Cochair: Mr. Raja Singh, Correspondence: Mr. Nick Ng, Web: Ar. Alberto Tom Yong Secretary: Professor Gerald Herder, CPP Thanks to IEEE CPP chapter Chair / President: Mr. Shawn Bahr 11/16/16, IEEE Foothill Section Computer Society
Similar presentations
© 2025 SlidePlayer.com Inc.
All rights reserved.