SlideShare uma empresa 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

Mais conteúdo relacionado

Mais procurados

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
 

Mais procurados (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
 

Semelhante 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
 

Semelhante 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

Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringHironori Washizaki
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecturerahul_net
 
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonLeveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonApplitools
 
eSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolseSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolsosttopstonverter
 
Patterns for automating API delivery. API conference
Patterns for automating API delivery. API conferencePatterns for automating API delivery. API conference
Patterns for automating API delivery. API conferencessuser9e7c64
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxAndreas Kunz
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
Ronisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited CatalogueRonisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited Catalogueitservices996
 
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
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZABSYZ Inc
 
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingOpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingShane Coughlan
 
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...OnePlan Solutions
 
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesAmazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesKrzysztofKkol1
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfDrew Moseley
 
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
 
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
 
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxReal-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxRTS corp
 
SoftTeco - Software Development Company Profile
SoftTeco - Software Development Company ProfileSoftTeco - Software Development Company Profile
SoftTeco - Software Development Company Profileakrivarotava
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Developmentvyaparkranti
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf31events.com
 

Último (20)

Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their Engineering
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecture
 
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonLeveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
 
eSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolseSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration tools
 
Patterns for automating API delivery. API conference
Patterns for automating API delivery. API conferencePatterns for automating API delivery. API conference
Patterns for automating API delivery. API conference
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
Ronisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited CatalogueRonisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited Catalogue
 
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
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZ
 
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingOpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
 
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
 
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesAmazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdf
 
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...
 
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...
 
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxReal-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
 
SoftTeco - Software Development Company Profile
SoftTeco - Software Development Company ProfileSoftTeco - Software Development Company Profile
SoftTeco - Software Development Company Profile
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Development
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.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