The sole purpose of sharing these slides are to educate the beginners of IT and Computer Science/Engineering. Credits should go to the referred material and also CICRA campus, Colombo 4, Sri Lanka where I taught these in 2017.
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Software Engineering
1. Software Engineering
CICRA Pathway to Deakin Degree
Professional Diploma in Network and Systems Administration
Tharindu Weerasinghe
www.tharinduweerasinghe.com
2. Overview
• Introduction to Software Engineering
• Software Development Life Cycle
• Software Development Methods
• Programming Languages
• Compilers and Assemblers
• Basic Programming with C++
• Object Oriented Programming
• Introduction to Data Structures
3. Introduction
• In my point of view, Software Engineering is planning, designing,
implementing, maintaining and supporting of software systems for
specific work given. It pivots around areas on requirement gathering
and analysis, system design, prototyping, system implementation,
system integrating, system testing, system deployment and system
support.
• Different Types of Software:
l
Embedded Software (Running on Devices)
l
System Software (Like Operating Systems)
l
Application Software (Database Programs, Web based software, Word Processors
etc) [1]
l
Specific Application Software:
l
Enterprise Resource Planning (ERP) Systems
l
Content Management Systems (CMS)
l
Human Resource Management (HRM) Systems
4. Software/System Development Life Cycle
• All about gathering requirement, planning, designing, developing and
maintaining a software system. [2, 3]
• Many professionals involved in different phases.
l
Project Managers
l
Business System Analysts
l
Software Architects
l
Software Developers
l
Software Testers
l
Implementation Engineers
l
Customer Support Teams
5. Software Development Methods
• There are a lot methods but here I am giving you a few of the most common.
•
• Waterfall Method
Step by Step Mechanism which involves different phases of the life
cycle [4].
6. Software Development Methods
• Waterfall Method [4]:
l
Advantages:
l
Simple
l
Clearly defined steps
l
Targets are clearly defined
l
Disadvantages:
l
No delivery until all phases are finished
l
Not good for OOP and complex projects
l
Not good for long and ongoing projects
8. Software Development Methods
• Agile Methods [6, 7]:
• Caters different projects differently.
• Small time frames with well defined outcomes.
• Working software is delivered after each iteration.
• More interactive.
9. Software Development Methods
• Scrum Methodology [7, 8]:
• Key Stakeholders:
• Product Owner – Gathers requirements, Discusses with the S/W
architects, Writes use-cases, Deals with major stakeholders of the
project, Release Management.
• Scrum Master – Makes sure the team is adhering to the scrum
principles, Coaches the scrum team, Ensures proper communication
between the product owner and the team
• Scrum Team - The team that performs the defined goals;
11. Programming Languages
• The main platform where we can give instructions to the computer
to do something, with the help of predefined syntax.
l
Assembly Languages (Low-Level)
l
Z80, C
l
High-level Languages (OOP supported and Scripting)
l
C++, Java, C#.Net, VB.Net, PHP, Python, Javascript
l
13. Assemblers
• Converts assembly code into machine code.
Sample Assembly Code [9]:
Start: .org $8020
SEI
LDA #$80
STA $0315
LDA #$2D
STA $0314
CLI
RTS
INC $D020
JMP $EA31
l
In machine code:
8020 78
8021 A9 80
8023 8D 15 03
8026 A9 2D
8028 8D 14 03
802B 58
802C 60
802D EE 20 D0
14. Programming in C++
// Our first program in C++
#include <iostream>
int main()
{
std::cout << "CICRA Diploma";
return 0;
}
15. Programming in C++
//Strings
#include <iostream>
#include <string>
using namespace std;
int main ()
{
string myString;
myString = "I am new to CICRA!";
cout << myString << endl;
myString = "I am not new to CICRA";
cout << myString << endl;
return 0;
}
16. Programming in C++
//Basic Arithmetic Operations
#include <iostream>
#include <iomanip>
using namespace std;
int main ()
{
int a, b;
a = 15.00;
b = 10.00;
cout << "a + b = ";
cout << a+b << endl;
cout << "a - b = ";
cout << a-b << endl;
cout << "a * b = ";
cout << a*b << endl;
cout << "a / b = ";
cout << setprecision(2) << (float (a)/float (b)) <<
endl;
17. #include <iostream>
#include <iomanip>
using namespace std;
int main ()
{
int x, y, z;
z = 1;
char input;
cout << "Please Enter Number1:" << endl;
cin >> x;
cout << "Please Enter Number2:" << endl;
cin >> y;
if (x > y) {
cout << "nNumber1 is greater than Number2 " << endl << endl;
if ((x > 10) && (x < 20)){
do{
if (z<9)
cout << z << ",";
else
cout << z << ".";
z++;
}while(z<10);
}
}
else if (x==y) {
cout << "Number1 is equal to Number2"<< endl;
cout << "n======= Enter Options A to B =======n";
cout << "A. List Even Numbers between 0 to 10n";
cout << "B. List ODD Numbers between 0 to 10n";
cout << "nYour Option: ";
cin >> input;
switch (input){
case 'A':
for (int i=1; i<=10; i++){
if (i%2 == 0)
cout << i << " | ";
}
break;
case 'B':
for (int i=0; i<=10; i++){
if (i%2 == 1)
cout << i << " | ";
}
break;
default:
cout<<"nWrong Option!n";
}
}
else{
cout << "Number1 is less than Number2" << endl;
if (x < 10){
for (int i=0; i < x; i++){
cout << i << " ";
18. Programming in C++
Exercise:
1. Write a program to get the input from user for a
Centigrade Temperature and Output the Answer in
Fahrenheit.
Note: T(°F) = T(°C) × 1.8 + 32
2. Write a program to list down all prime numbers
between 0 and 20.
Note: A prime number is a number that can be divided
only from itself and 1, with out any remainder.
19. OOP Concepts in a nutshell
Class
Objects
Abstraction
Encapsulation
Inheritance
Overloading
Exception Handling
21. OOP Concepts in a nutshell
Class – Represents a real world entity;
Blue-print of an object
Object – An instance of a class
Abstraction – Hiding private information;
showing public things
Encapsulation -Binding data and functions
in a class
Inheritance – What you have inherited from
your ancestors. What you get from your
parent/super class.
Polymorphism -Many forms! Same function,
object can be used to manipulate different
things.
Exception Handling - Handle unresolved
errors or run-time errors.
22. OOP in C++ - in a nutshell
#include <iostream>
using namespace std;
// Base/Parent/Super class
class Shape {
public:
void setWidth(int w) {
width = w;
}
void setHeight(int h) {
height = h;
}
void setRadius(float r){
radius = r;
}
int calculateArea();
int calculatePerimeter();
protected:
int width;
int height;
float radius;
string color;
};
// Derived/Child class1
class Rectangle: public Shape {
public:
int calculateArea() {
return (width * height);
}
int calculatePerimeter(){
return (width*2 + height*2);
}
};
// Derived class2
class Circle: public Shape {
public:
int calculateArea() {
return (pi * radius * radius);
}
int calculatePerimeter(){
return (2*pi*radius);
}
protected:
float pi = 3.142;
};
int main(void) {
//Creating a Rectangle object
Rectangle Rect;
//Creating and initializing a Circle object
Circle Cir;
Rect.setWidth(5);
Rect.setHeight(7);
Cir.setRadius(5.5);
// Print the details of the Rectangle object.
cout << "Rect Area: " << Rect.calculateArea() << endl;
cout << "Rect Perimeter: " << Rect.calculatePerimeter() << endl << endl;
// Print the area of the Rectangle object.
cout << "Cir Area: " << Cir.calculateArea() << endl;
cout << "Cir Perimeter: " << Cir.calculatePerimeter() << endl;
23. OOP Concepts in a nutshell
Class – Represents a real world entity;
Blue-print of an object
Object – An instance of a class
Abstraction – Hiding private information;
showing public things
Encapsulation -Binding data and functions
in a class
Inheritance – What you have inherited from
your ancestors. What you get from your
parent/super class.
Polymorphism -Many forms! Same function,
object can be used to manipulate different
things.
Exception Handling - Handle unresolved
errors or run-time errors.
26. Let's talk something on S/W Testing and QA (Discussion)
* Testing is very important as same as development
*Developers must do unit testing/developer testing
*Dedicated test engineers write test data
*Automated testing is used extensively now.
*QA is making sure all functionality work according to the
initial specification approved by the client.
27. References – Mentioned with Thanks
[1] http://www.webopedia.com/TERM/A/application.html
[2]https://en.wikipedia.org/wiki/Systems_development_life_cycle
[3] https://www.techopedia.com/definition/22193/software-development-life-cycle-sdlc
[4]https://www.tutorialspoint.com/sdlc/sdlc_waterfall_model.htm
[5]https://www.tutorialspoint.com/sdlc/sdlc_iterative_model.htm
[6]https://www.tutorialspoint.com/sdlc/sdlc_agile_model.htm
[7]https://www.versionone.com/agile-101/agile-methodologies/
[8] http://www.c-sharpcorner.com/UploadFile/d9c992/the-agile-scrum-framework/
[9] http://wiki.c2.com/?MachineCode
[10] http://www.cplusplus.com/doc/tutorial/program_structure/
[11]http://www.cplusplus.com/doc/tutorial/variables/
[12]http://www.rapidtables.com/convert/temperature/how-celsius-to-fahrenheit.htm
[13]http://www.studytonight.com/cpp/cpp-and-oops-concepts.php
[14]http://tx.english-ch.com/teacher/aisa/level-a/animal-classes/
[15] http://magizbox.com/training/object_oriented_programming/site/overview/
[16]http://www.studytonight.com/data-structures/introduction-to-data-structures
Special Thanks: Seebo Networks Lanka (Pvt) Ltd. And IFS R&D International (Pvt) Ltd for all the
things I learned there and also knowledge, tips and hints taken from their training materials;
specially IFS and also internet resources that I referred apart from above specially for images for
DS which I could not mention the URLs here; they were take from my Articles to Vidusara
Magazine.