Software Engineering
CICRA Pathway to Deakin Degree
Professional Diploma in Network and Systems Administration
Tharindu Weerasinghe
www.tharinduweerasinghe.com
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
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
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
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].
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
Software Development Methods
• Iterative Method [5]
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.
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;
Software Development Methods
• Scrum Methodology [7, 8]:
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
Compilers
• Converts high-level programs into low-level programs
or machine code so that the hardware can
understand.
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
Programming in C++
// Our first program in C++
#include <iostream>
int main()
{
std::cout << "CICRA Diploma";
return 0;
}
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;
}
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;
#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 << " ";
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.
OOP Concepts in a nutshell
Class
Objects
Abstraction
Encapsulation
Inheritance
Overloading
Exception Handling
OOP Concepts in a nutshell
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.
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;
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.
Introduction to Data Structures in a nutshell
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.
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.

Software Engineering

  • 1.
    Software Engineering CICRA Pathwayto Deakin Degree Professional Diploma in Network and Systems Administration Tharindu Weerasinghe www.tharinduweerasinghe.com
  • 2.
    Overview • Introduction toSoftware 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 mypoint 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 LifeCycle • 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
  • 7.
  • 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;
  • 10.
    Software Development Methods •Scrum Methodology [7, 8]:
  • 11.
    Programming Languages • Themain 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
  • 12.
    Compilers • Converts high-levelprograms into low-level programs or machine code so that the hardware can understand.
  • 13.
    Assemblers • Converts assemblycode 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++ //BasicArithmetic 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> usingnamespace 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 ina nutshell Class Objects Abstraction Encapsulation Inheritance Overloading Exception Handling
  • 20.
    OOP Concepts ina nutshell
  • 21.
    OOP Concepts ina 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 ina 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.
  • 24.
    Introduction to DataStructures in a nutshell
  • 26.
    Let's talk somethingon 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 – Mentionedwith 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.