SlideShare una empresa de Scribd logo
1 de 12
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

Más contenido relacionado

La actualidad más candente

Software Engineering Assignment
Software Engineering AssignmentSoftware Engineering Assignment
Software Engineering AssignmentSohaib Latif
 
Introduction to Software Engineering
Introduction to Software EngineeringIntroduction to Software Engineering
Introduction to Software EngineeringSADEED AMEEN
 
Introduction to Software Engineering
Introduction to Software EngineeringIntroduction to Software Engineering
Introduction to Software EngineeringZahoor Khan
 
Software Engineering - Lecture 01
Software Engineering - Lecture 01Software Engineering - Lecture 01
Software Engineering - Lecture 01Asifuzzaman Hridoy
 
Software engineering note
Software engineering noteSoftware engineering note
Software engineering noteNeelamani Samal
 
Introduction to Software Engineering SE1
Introduction to Software Engineering SE1Introduction to Software Engineering SE1
Introduction to Software Engineering SE1koolkampus
 
Software System Engineering - Chapter 2
Software System Engineering - Chapter 2Software System Engineering - Chapter 2
Software System Engineering - Chapter 2Fadhil Ismail
 
Introduction to Software Engineering
Introduction to Software EngineeringIntroduction to Software Engineering
Introduction to Software EngineeringMajane Padua
 
process models- software engineering
process models- software engineeringprocess models- software engineering
process models- software engineeringArun Nair
 
software Engineering process
software Engineering processsoftware Engineering process
software Engineering processRaheel Aslam
 
Software Engineering- Crisis and Process Models
Software Engineering- Crisis and Process ModelsSoftware Engineering- Crisis and Process Models
Software Engineering- Crisis and Process ModelsNishu 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 1Fadhil Ismail
 
CS8494 SOFTWARE ENGINEERING Unit-2
CS8494 SOFTWARE ENGINEERING Unit-2CS8494 SOFTWARE ENGINEERING Unit-2
CS8494 SOFTWARE ENGINEERING Unit-2SIMONTHOMAS S
 
Software engineering Questions and Answers
Software engineering Questions and AnswersSoftware engineering Questions and Answers
Software engineering Questions and AnswersBala Ganesh
 
Software engineering layers
Software engineering layersSoftware engineering layers
Software engineering layersSelf-employed
 

La actualidad más candente (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 a Notes on software engineering

UNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvf
UNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvfUNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvf
UNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvfputtipavan23022023
 
Software design.edited (1)
Software design.edited (1)Software design.edited (1)
Software design.edited (1)FarjanaAhmed3
 
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 DevelopmentSameer Chavan
 
Software engineering introduction
Software engineering introductionSoftware engineering introduction
Software engineering introductionVishal Singh
 
SOFTWARE DEVELOPMENT AND PROCESS MODELS.pptx
SOFTWARE DEVELOPMENT AND PROCESS MODELS.pptxSOFTWARE DEVELOPMENT AND PROCESS MODELS.pptx
SOFTWARE DEVELOPMENT AND PROCESS MODELS.pptxSanthanalakshmiSelva2
 
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 ProjectsGabor Guta
 
Clean architecture with asp.net core
Clean architecture with asp.net coreClean architecture with asp.net core
Clean architecture with asp.net coreSam Nasr, MCSA, MVP
 
Software Engineering Unit-1
Software Engineering Unit-1Software Engineering Unit-1
Software Engineering Unit-1Samura Daniel
 
A summary of software architecture guide
A summary of software architecture guideA summary of software architecture guide
A summary of software architecture guideTriet Ho
 
Introduction,Software Process Models, Project Management
Introduction,Software Process Models, Project ManagementIntroduction,Software Process Models, Project Management
Introduction,Software Process Models, Project Managementswatisinghal
 

Similar a 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
 

Último

Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
 
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...Akihiro Suda
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Angel Borroy López
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalLionel Briand
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfStefano Stabellini
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)jennyeacort
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLionel Briand
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsSafe Software
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 

Último (20)

Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
 
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive Goal
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdf
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and Repair
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data Streams
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 

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