SlideShare a Scribd company logo
DEFINEER ACADEMY
www.defineer.com V1.0 1
 © 2017 Ertan Deniz All rights reserved.
 Content can be used and shared without permission.
2
COPYRIGHT
www.defineer.com V1.0
 Software Engineers should learn similarities from other
engineering diciplines.
 Software Engineers should learn differences between software
product and other engineering products.
 Software Engineering is more than coding. (SW Book,
Brugge&Dutoit)
 Software products should be treated as two distinct domains.
Business and Technology. They should be clearly separated. Main
focus should be on business.
 Software products are developed once, used/copied many times.
This was the specific feature that does not exist in other engineering
products.
3www.defineer.com V1.0
Software Engineering - General
 Software Project Managers should know about software processes
and support management activities in a process driven manner.
Resource allocation and scheduling are just some of the activities in
project management.
 Humans (Team Members) are the first class elements in any
software project.
 Like any project, Software project also has limited resources.
(Time, Budget, Humans, Technology)
 First document will be published in any software project should
be scope document. (Project Scope, Problem Definition)
 Includes high level requirements. (Main functionality included
in the system)
 If exists, clearly express the features not included in the system
4www.defineer.com V1.0
Software Project Management
 Software development is an engineering process. Firstly, identify
your process by selecting a well-known process. Secondly, customize
it based on your requirements.
 Monitor your software process and collect some metrics to
understand how to improve it.
 Software Process Customizations/Optimizations should be done
incrementally. (Track & Identify & Apply)
 Everytime be ready for change requests.
 Interconnect all the stakeholders (Users, Analysts,
Developers,Testers etc) in a well established communication
infrastructure.
 Develop a common communication language (Formats, Principles,
Models, Activities)
5www.defineer.com V1.0
Software Process Management
 Eliciting the requirements
 Firstly, Explain how will you work with the customer. (Users)
 Ask questions to understand the system behaviours.
 If exists, observe the current/old system behaviours.
 Identify the main problems/critical points that puts everyone in
trouble.
 Identify expactations that will make everyone comfortable and happy.
 Documenting requirements
 Explain as real life scenarios and in the form of flow. (Remember that
software statements are executed in flow sequentially or in parallel)
 Since software is an engineering product, it should be expressed in
terms of models that show interaction and dependencies between
elements.
 Share requirements documentation with customer/users and ask
them for validation.
 Requirements elicitation activity should be done incrementally.
6www.defineer.com V1.0
Requirements Elicitation & Analysis
 Identify design goals (Simplicity, Performance, Security, Rapid
Development)
Identify tradeoffs and the way to go. (Development time vs
Readability,Robustness; Maintainability,Usability vs Functionality,
Buy vs Build)
 Divide system into smaller subsystems (Subsystem
decomposition)
 Distribute the system responsibilities into sub-systems.
 Next, into classes. (In detailed design)
 Next, into methods (Functions) (In detailed design)
 Systems/Classes should be highly cohesive and loosely coupled.
Details will be published as new presentation (Notes On Object
Oriented Programming)
7www.defineer.com V1.0
Architecture & Design (1)
 Think frameworks are made up of reusable software components.
The tradeoff is in which degree software components may be
developed or reused from others. (Open source, Commercial)
 Using frameworks
 Provides high level of reusability
 Tested & Proven components (Developed and maintained by others)
 Decrease the cost of the project
 Easily focus on your business (Separation of concerns)
 Simplifies the development (Hides the complexity)
 Requires a learning curve
 Framework should be supported with many different samples
 If the framework tries to solve too many problems, it may be very
difficult to use after a while.
 Depending on a software framework completely comes with some
limitations. According to the project requirements (especially for larger
projects) these limitations may restrict the movement area.
8www.defineer.com V1.0
Architecture & Design –
Considering Application Frameworks (2)
 Developing frameworks
 If software project has no budget contraints and time pressure,
frameworks (i.e technical software components) may be developed.
 Be aware of architecting, developing, maintaining frameworks are hard.
 If there are similar projects in the same domain and reusability of the
framework is an ultimate goal, go ahead. They are like investments. You
pay some times. Next, you gain.
 Frameworks can be developed from stracth or based on pre-built (ready)
components
 It seems very difficult to develop everthing from scratch. Because,
problems are getting complex.
 Architect your framework infrastructure and develop
basic/common functionality for hosting components
 Let pre-built components plugged in.
 You can easiely change the component with the other one.
 Some of the components may developed from scratch within
your project balance.
9www.defineer.com V1.0
Architecture & Design –
Considering Application Frameworks (3)
 Model your architecture and design.
 Prepare an architecture documentation.
10www.defineer.com V1.0
Architecture & Design (4)
 Write programs that others can easily understand.
 Develop and follow coding guidelines. (Utilize from well-known
guidelines)
 Naming conventions are the first class.
 Firstly give meaningful names to your variables, classes and methods.
 Good naming decreases the documentations in the code.
 Classes/Functions should be in cooperation. Each one does one
job and well. (Unix Philosophy, Single Responsilibity Principle)
 Methods should include maximum 20-30 lines.
 Easily focus on method in the same screen without scrolling.
 Big methods should be converted into smaller methods.(Functional
Decomposition)
 Easy to read and easy to maintain.
 Smaller methods may be reusable.
 Details will be on new page. (Notes On Software Quality)
11www.defineer.com V1.0
Coding
 Testing is tightly bound with other activities in a software process.
You test the functionality specified in requirements analysis phase.
Requirement scenario will be the testing scenario. (System Testing)
You realize the integration between components and/or external
systems. (Integration Testing) Interconnection, messages, protocols
will all be specified in design phase and implemented in code
construction phase.
 Write programs to test your programs faster and with high level
coverage. (Unit Testing)
12www.defineer.com V1.0
Testing

More Related Content

What's hot

Software engineering
Software engineering Software engineering
Software engineering
MOHAMED RIYAZUDEEN
 
Software Engineering Assignment
Software Engineering AssignmentSoftware Engineering Assignment
Software Engineering Assignment
Sohaib Latif
 
Chapter 01
Chapter 01Chapter 01
Chapter 01
ans ali raza
 
Introduction to Software Engineering
Introduction to Software EngineeringIntroduction to Software Engineering
Introduction to Software Engineering
SADEED AMEEN
 
Introduction to Software Engineering
Introduction to Software EngineeringIntroduction to Software Engineering
Introduction to Software Engineering
Zahoor Khan
 
Software process
Software processSoftware process
Software process
Jennifer Polack
 
Software Engineering - Lecture 01
Software Engineering - Lecture 01Software Engineering - Lecture 01
Software Engineering - Lecture 01
Asifuzzaman Hridoy
 
Process Models IN software Engineering
Process Models IN software EngineeringProcess Models IN software Engineering
Process Models IN software Engineering
Arid Agriculture university rawalpindi
 
Software engineering note
Software engineering noteSoftware engineering note
Software engineering note
Neelamani Samal
 
Introduction to Software Engineering SE1
Introduction to Software Engineering SE1Introduction to Software Engineering SE1
Introduction to Software Engineering SE1
koolkampus
 
Software System Engineering - Chapter 2
Software System Engineering - Chapter 2Software System Engineering - Chapter 2
Software System Engineering - Chapter 2
Fadhil Ismail
 
Introduction to Software Engineering
Introduction to Software EngineeringIntroduction to Software Engineering
Introduction to Software Engineering
Majane Padua
 
process models- software engineering
process models- software engineeringprocess models- software engineering
process models- software engineering
Arun Nair
 
software Engineering process
software Engineering processsoftware Engineering process
software Engineering process
Raheel Aslam
 
Software Engineering- Crisis and Process Models
Software Engineering- Crisis and Process ModelsSoftware Engineering- Crisis and Process Models
Software Engineering- Crisis and Process Models
Nishu Rastogi
 
Software Engineering Process Models
Software Engineering Process Models Software Engineering Process Models
Software Engineering Process Models
Satya P. Joshi
 
Software System Engineering - Chapter 1
Software System Engineering - Chapter 1Software System Engineering - Chapter 1
Software System Engineering - Chapter 1
Fadhil Ismail
 
CS8494 SOFTWARE ENGINEERING Unit-2
CS8494 SOFTWARE ENGINEERING Unit-2CS8494 SOFTWARE ENGINEERING Unit-2
CS8494 SOFTWARE ENGINEERING Unit-2
SIMONTHOMAS S
 
Software engineering Questions and Answers
Software engineering Questions and AnswersSoftware engineering Questions and Answers
Software engineering Questions and Answers
Bala Ganesh
 
Software engineering layers
Software engineering layersSoftware engineering layers
Software engineering layers
Self-employed
 

What's hot (20)

Software engineering
Software engineering Software engineering
Software engineering
 
Software Engineering Assignment
Software Engineering AssignmentSoftware Engineering Assignment
Software Engineering Assignment
 
Chapter 01
Chapter 01Chapter 01
Chapter 01
 
Introduction to Software Engineering
Introduction to Software EngineeringIntroduction to Software Engineering
Introduction to Software Engineering
 
Introduction to Software Engineering
Introduction to Software EngineeringIntroduction to Software Engineering
Introduction to Software Engineering
 
Software process
Software processSoftware process
Software process
 
Software Engineering - Lecture 01
Software Engineering - Lecture 01Software Engineering - Lecture 01
Software Engineering - Lecture 01
 
Process Models IN software Engineering
Process Models IN software EngineeringProcess Models IN software Engineering
Process Models IN software Engineering
 
Software engineering note
Software engineering noteSoftware engineering note
Software engineering note
 
Introduction to Software Engineering SE1
Introduction to Software Engineering SE1Introduction to Software Engineering SE1
Introduction to Software Engineering SE1
 
Software System Engineering - Chapter 2
Software System Engineering - Chapter 2Software System Engineering - Chapter 2
Software System Engineering - Chapter 2
 
Introduction to Software Engineering
Introduction to Software EngineeringIntroduction to Software Engineering
Introduction to Software Engineering
 
process models- software engineering
process models- software engineeringprocess models- software engineering
process models- software engineering
 
software Engineering process
software Engineering processsoftware Engineering process
software Engineering process
 
Software Engineering- Crisis and Process Models
Software Engineering- Crisis and Process ModelsSoftware Engineering- Crisis and Process Models
Software Engineering- Crisis and Process Models
 
Software Engineering Process Models
Software Engineering Process Models Software Engineering Process Models
Software Engineering Process Models
 
Software System Engineering - Chapter 1
Software System Engineering - Chapter 1Software System Engineering - Chapter 1
Software System Engineering - Chapter 1
 
CS8494 SOFTWARE ENGINEERING Unit-2
CS8494 SOFTWARE ENGINEERING Unit-2CS8494 SOFTWARE ENGINEERING Unit-2
CS8494 SOFTWARE ENGINEERING Unit-2
 
Software engineering Questions and Answers
Software engineering Questions and AnswersSoftware engineering Questions and Answers
Software engineering Questions and Answers
 
Software engineering layers
Software engineering layersSoftware engineering layers
Software engineering layers
 

Similar to Notes on software engineering

UNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvf
UNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvfUNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvf
UNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvf
puttipavan23022023
 
Software design.edited (1)
Software design.edited (1)Software design.edited (1)
Software design.edited (1)
FarjanaAhmed3
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
Harsh Jegadeesan
 
Ch05
Ch05Ch05
Lecture1422914635
Lecture1422914635Lecture1422914635
Cnpm bkdn
Cnpm bkdnCnpm bkdn
Cnpm bkdn
Ankit yadav
 
Standards Based Approach to User Interface Development
Standards Based Approach to User Interface DevelopmentStandards Based Approach to User Interface Development
Standards Based Approach to User Interface Development
Sameer Chavan
 
Chapter1
Chapter1Chapter1
Chapter1
mansab MIRZA
 
HCI Chapter_2.pdf
HCI Chapter_2.pdfHCI Chapter_2.pdf
HCI Chapter_2.pdf
NorshadilaAhmadBadel1
 
HCI Chapter_2.ppt
HCI Chapter_2.pptHCI Chapter_2.ppt
HCI Chapter_2.ppt
NorshadilaAhmadBadel1
 
SA_UNIT_1.pptx
SA_UNIT_1.pptxSA_UNIT_1.pptx
SA_UNIT_1.pptx
ShwetaGajbhiye12
 
Software engineering introduction
Software engineering introductionSoftware engineering introduction
Software engineering introduction
Vishal Singh
 
SOFTWARE DEVELOPMENT AND PROCESS MODELS.pptx
SOFTWARE DEVELOPMENT AND PROCESS MODELS.pptxSOFTWARE DEVELOPMENT AND PROCESS MODELS.pptx
SOFTWARE DEVELOPMENT AND PROCESS MODELS.pptx
SanthanalakshmiSelva2
 
A Lightweight MDD Process Applied in Small Projects
A Lightweight MDD Process Applied in Small ProjectsA Lightweight MDD Process Applied in Small Projects
A Lightweight MDD Process Applied in Small Projects
Gabor Guta
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
Up2 Technology
 
Clean architecture with asp.net core
Clean architecture with asp.net coreClean architecture with asp.net core
Clean architecture with asp.net core
Sam Nasr, MCSA, MVP
 
Software Engineering Unit-1
Software Engineering Unit-1Software Engineering Unit-1
Software Engineering Unit-1
Samura Daniel
 
Waterfall model
Waterfall modelWaterfall model
Waterfall model
LPK Any Komputer
 
A summary of software architecture guide
A summary of software architecture guideA summary of software architecture guide
A summary of software architecture guide
Triet Ho
 
Introduction,Software Process Models, Project Management
Introduction,Software Process Models, Project ManagementIntroduction,Software Process Models, Project Management
Introduction,Software Process Models, Project Management
swatisinghal
 

Similar to Notes on software engineering (20)

UNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvf
UNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvfUNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvf
UNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvf
 
Software design.edited (1)
Software design.edited (1)Software design.edited (1)
Software design.edited (1)
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Ch05
Ch05Ch05
Ch05
 
Lecture1422914635
Lecture1422914635Lecture1422914635
Lecture1422914635
 
Cnpm bkdn
Cnpm bkdnCnpm bkdn
Cnpm bkdn
 
Standards Based Approach to User Interface Development
Standards Based Approach to User Interface DevelopmentStandards Based Approach to User Interface Development
Standards Based Approach to User Interface Development
 
Chapter1
Chapter1Chapter1
Chapter1
 
HCI Chapter_2.pdf
HCI Chapter_2.pdfHCI Chapter_2.pdf
HCI Chapter_2.pdf
 
HCI Chapter_2.ppt
HCI Chapter_2.pptHCI Chapter_2.ppt
HCI Chapter_2.ppt
 
SA_UNIT_1.pptx
SA_UNIT_1.pptxSA_UNIT_1.pptx
SA_UNIT_1.pptx
 
Software engineering introduction
Software engineering introductionSoftware engineering introduction
Software engineering introduction
 
SOFTWARE DEVELOPMENT AND PROCESS MODELS.pptx
SOFTWARE DEVELOPMENT AND PROCESS MODELS.pptxSOFTWARE DEVELOPMENT AND PROCESS MODELS.pptx
SOFTWARE DEVELOPMENT AND PROCESS MODELS.pptx
 
A Lightweight MDD Process Applied in Small Projects
A Lightweight MDD Process Applied in Small ProjectsA Lightweight MDD Process Applied in Small Projects
A Lightweight MDD Process Applied in Small Projects
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Clean architecture with asp.net core
Clean architecture with asp.net coreClean architecture with asp.net core
Clean architecture with asp.net core
 
Software Engineering Unit-1
Software Engineering Unit-1Software Engineering Unit-1
Software Engineering Unit-1
 
Waterfall model
Waterfall modelWaterfall model
Waterfall model
 
A summary of software architecture guide
A summary of software architecture guideA summary of software architecture guide
A summary of software architecture guide
 
Introduction,Software Process Models, Project Management
Introduction,Software Process Models, Project ManagementIntroduction,Software Process Models, Project Management
Introduction,Software Process Models, Project Management
 

Recently uploaded

How GenAI Can Improve Supplier Performance Management.pdf
How GenAI Can Improve Supplier Performance Management.pdfHow GenAI Can Improve Supplier Performance Management.pdf
How GenAI Can Improve Supplier Performance Management.pdf
Zycus
 
ACE - Team 24 Wrapup event at ahmedabad.
ACE - Team 24 Wrapup event at ahmedabad.ACE - Team 24 Wrapup event at ahmedabad.
ACE - Team 24 Wrapup event at ahmedabad.
Maitrey Patel
 
WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...
WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...
WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...
Luigi Fugaro
 
Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...
Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...
Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...
The Third Creative Media
 
一比一原版(sdsu毕业证书)圣地亚哥州立大学毕业证如何办理
一比一原版(sdsu毕业证书)圣地亚哥州立大学毕业证如何办理一比一原版(sdsu毕业证书)圣地亚哥州立大学毕业证如何办理
一比一原版(sdsu毕业证书)圣地亚哥州立大学毕业证如何办理
kgyxske
 
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
dakas1
 
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
safelyiotech
 
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdfBaha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
Baha Majid
 
Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...
Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...
Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...
Paul Brebner
 
14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision
ShulagnaSarkar2
 
The Rising Future of CPaaS in the Middle East 2024
The Rising Future of CPaaS in the Middle East 2024The Rising Future of CPaaS in the Middle East 2024
The Rising Future of CPaaS in the Middle East 2024
Yara Milbes
 
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
XfilesPro
 
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
kalichargn70th171
 
Voxxed Days Trieste 2024 - Unleashing the Power of Vector Search and Semantic...
Voxxed Days Trieste 2024 - Unleashing the Power of Vector Search and Semantic...Voxxed Days Trieste 2024 - Unleashing the Power of Vector Search and Semantic...
Voxxed Days Trieste 2024 - Unleashing the Power of Vector Search and Semantic...
Luigi Fugaro
 
The Comprehensive Guide to Validating Audio-Visual Performances.pdf
The Comprehensive Guide to Validating Audio-Visual Performances.pdfThe Comprehensive Guide to Validating Audio-Visual Performances.pdf
The Comprehensive Guide to Validating Audio-Visual Performances.pdf
kalichargn70th171
 
Transforming Product Development using OnePlan To Boost Efficiency and Innova...
Transforming Product Development using OnePlan To Boost Efficiency and Innova...Transforming Product Development using OnePlan To Boost Efficiency and Innova...
Transforming Product Development using OnePlan To Boost Efficiency and Innova...
OnePlan Solutions
 
WWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders AustinWWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders Austin
Patrick Weigel
 
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...
kalichargn70th171
 
Enhanced Screen Flows UI/UX using SLDS with Tom Kitt
Enhanced Screen Flows UI/UX using SLDS with Tom KittEnhanced Screen Flows UI/UX using SLDS with Tom Kitt
Enhanced Screen Flows UI/UX using SLDS with Tom Kitt
Peter Caitens
 
The Role of DevOps in Digital Transformation.pdf
The Role of DevOps in Digital Transformation.pdfThe Role of DevOps in Digital Transformation.pdf
The Role of DevOps in Digital Transformation.pdf
mohitd6
 

Recently uploaded (20)

How GenAI Can Improve Supplier Performance Management.pdf
How GenAI Can Improve Supplier Performance Management.pdfHow GenAI Can Improve Supplier Performance Management.pdf
How GenAI Can Improve Supplier Performance Management.pdf
 
ACE - Team 24 Wrapup event at ahmedabad.
ACE - Team 24 Wrapup event at ahmedabad.ACE - Team 24 Wrapup event at ahmedabad.
ACE - Team 24 Wrapup event at ahmedabad.
 
WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...
WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...
WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...
 
Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...
Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...
Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...
 
一比一原版(sdsu毕业证书)圣地亚哥州立大学毕业证如何办理
一比一原版(sdsu毕业证书)圣地亚哥州立大学毕业证如何办理一比一原版(sdsu毕业证书)圣地亚哥州立大学毕业证如何办理
一比一原版(sdsu毕业证书)圣地亚哥州立大学毕业证如何办理
 
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
 
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
 
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdfBaha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
 
Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...
Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...
Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...
 
14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision
 
The Rising Future of CPaaS in the Middle East 2024
The Rising Future of CPaaS in the Middle East 2024The Rising Future of CPaaS in the Middle East 2024
The Rising Future of CPaaS in the Middle East 2024
 
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
 
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
 
Voxxed Days Trieste 2024 - Unleashing the Power of Vector Search and Semantic...
Voxxed Days Trieste 2024 - Unleashing the Power of Vector Search and Semantic...Voxxed Days Trieste 2024 - Unleashing the Power of Vector Search and Semantic...
Voxxed Days Trieste 2024 - Unleashing the Power of Vector Search and Semantic...
 
The Comprehensive Guide to Validating Audio-Visual Performances.pdf
The Comprehensive Guide to Validating Audio-Visual Performances.pdfThe Comprehensive Guide to Validating Audio-Visual Performances.pdf
The Comprehensive Guide to Validating Audio-Visual Performances.pdf
 
Transforming Product Development using OnePlan To Boost Efficiency and Innova...
Transforming Product Development using OnePlan To Boost Efficiency and Innova...Transforming Product Development using OnePlan To Boost Efficiency and Innova...
Transforming Product Development using OnePlan To Boost Efficiency and Innova...
 
WWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders AustinWWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders Austin
 
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...
 
Enhanced Screen Flows UI/UX using SLDS with Tom Kitt
Enhanced Screen Flows UI/UX using SLDS with Tom KittEnhanced Screen Flows UI/UX using SLDS with Tom Kitt
Enhanced Screen Flows UI/UX using SLDS with Tom Kitt
 
The Role of DevOps in Digital Transformation.pdf
The Role of DevOps in Digital Transformation.pdfThe Role of DevOps in Digital Transformation.pdf
The Role of DevOps in Digital Transformation.pdf
 

Notes on software engineering

  • 2.  © 2017 Ertan Deniz All rights reserved.  Content can be used and shared without permission. 2 COPYRIGHT www.defineer.com V1.0
  • 3.  Software Engineers should learn similarities from other engineering diciplines.  Software Engineers should learn differences between software product and other engineering products.  Software Engineering is more than coding. (SW Book, Brugge&Dutoit)  Software products should be treated as two distinct domains. Business and Technology. They should be clearly separated. Main focus should be on business.  Software products are developed once, used/copied many times. This was the specific feature that does not exist in other engineering products. 3www.defineer.com V1.0 Software Engineering - General
  • 4.  Software Project Managers should know about software processes and support management activities in a process driven manner. Resource allocation and scheduling are just some of the activities in project management.  Humans (Team Members) are the first class elements in any software project.  Like any project, Software project also has limited resources. (Time, Budget, Humans, Technology)  First document will be published in any software project should be scope document. (Project Scope, Problem Definition)  Includes high level requirements. (Main functionality included in the system)  If exists, clearly express the features not included in the system 4www.defineer.com V1.0 Software Project Management
  • 5.  Software development is an engineering process. Firstly, identify your process by selecting a well-known process. Secondly, customize it based on your requirements.  Monitor your software process and collect some metrics to understand how to improve it.  Software Process Customizations/Optimizations should be done incrementally. (Track & Identify & Apply)  Everytime be ready for change requests.  Interconnect all the stakeholders (Users, Analysts, Developers,Testers etc) in a well established communication infrastructure.  Develop a common communication language (Formats, Principles, Models, Activities) 5www.defineer.com V1.0 Software Process Management
  • 6.  Eliciting the requirements  Firstly, Explain how will you work with the customer. (Users)  Ask questions to understand the system behaviours.  If exists, observe the current/old system behaviours.  Identify the main problems/critical points that puts everyone in trouble.  Identify expactations that will make everyone comfortable and happy.  Documenting requirements  Explain as real life scenarios and in the form of flow. (Remember that software statements are executed in flow sequentially or in parallel)  Since software is an engineering product, it should be expressed in terms of models that show interaction and dependencies between elements.  Share requirements documentation with customer/users and ask them for validation.  Requirements elicitation activity should be done incrementally. 6www.defineer.com V1.0 Requirements Elicitation & Analysis
  • 7.  Identify design goals (Simplicity, Performance, Security, Rapid Development) Identify tradeoffs and the way to go. (Development time vs Readability,Robustness; Maintainability,Usability vs Functionality, Buy vs Build)  Divide system into smaller subsystems (Subsystem decomposition)  Distribute the system responsibilities into sub-systems.  Next, into classes. (In detailed design)  Next, into methods (Functions) (In detailed design)  Systems/Classes should be highly cohesive and loosely coupled. Details will be published as new presentation (Notes On Object Oriented Programming) 7www.defineer.com V1.0 Architecture & Design (1)
  • 8.  Think frameworks are made up of reusable software components. The tradeoff is in which degree software components may be developed or reused from others. (Open source, Commercial)  Using frameworks  Provides high level of reusability  Tested & Proven components (Developed and maintained by others)  Decrease the cost of the project  Easily focus on your business (Separation of concerns)  Simplifies the development (Hides the complexity)  Requires a learning curve  Framework should be supported with many different samples  If the framework tries to solve too many problems, it may be very difficult to use after a while.  Depending on a software framework completely comes with some limitations. According to the project requirements (especially for larger projects) these limitations may restrict the movement area. 8www.defineer.com V1.0 Architecture & Design – Considering Application Frameworks (2)
  • 9.  Developing frameworks  If software project has no budget contraints and time pressure, frameworks (i.e technical software components) may be developed.  Be aware of architecting, developing, maintaining frameworks are hard.  If there are similar projects in the same domain and reusability of the framework is an ultimate goal, go ahead. They are like investments. You pay some times. Next, you gain.  Frameworks can be developed from stracth or based on pre-built (ready) components  It seems very difficult to develop everthing from scratch. Because, problems are getting complex.  Architect your framework infrastructure and develop basic/common functionality for hosting components  Let pre-built components plugged in.  You can easiely change the component with the other one.  Some of the components may developed from scratch within your project balance. 9www.defineer.com V1.0 Architecture & Design – Considering Application Frameworks (3)
  • 10.  Model your architecture and design.  Prepare an architecture documentation. 10www.defineer.com V1.0 Architecture & Design (4)
  • 11.  Write programs that others can easily understand.  Develop and follow coding guidelines. (Utilize from well-known guidelines)  Naming conventions are the first class.  Firstly give meaningful names to your variables, classes and methods.  Good naming decreases the documentations in the code.  Classes/Functions should be in cooperation. Each one does one job and well. (Unix Philosophy, Single Responsilibity Principle)  Methods should include maximum 20-30 lines.  Easily focus on method in the same screen without scrolling.  Big methods should be converted into smaller methods.(Functional Decomposition)  Easy to read and easy to maintain.  Smaller methods may be reusable.  Details will be on new page. (Notes On Software Quality) 11www.defineer.com V1.0 Coding
  • 12.  Testing is tightly bound with other activities in a software process. You test the functionality specified in requirements analysis phase. Requirement scenario will be the testing scenario. (System Testing) You realize the integration between components and/or external systems. (Integration Testing) Interconnection, messages, protocols will all be specified in design phase and implemented in code construction phase.  Write programs to test your programs faster and with high level coverage. (Unit Testing) 12www.defineer.com V1.0 Testing