SlideShare ist ein Scribd-Unternehmen logo
1 von 22
Presented by: 
Akbar Ali
Software Engineering 
Software Engineering Practice 
Essence of Practice 
Core Principles of Software Engineering 
Types of Practice 
• Communication Practice 
• Planning Practice
 Software engineering (SE) is concerned with 
developing and maintaining software systems that 
behave reliably and efficiently, are affordable to develop 
and maintain, and satisfy all the requirements that 
customers have defined for them.
• Analysis: decompose a large problem into smaller, 
understandable pieces 
 abstraction is the key 
• Synthesis: build (compose) software from smaller 
building blocks 
 composition is challenging
 The analysis process
 The synthesis process
 Consists of a collection of concepts, principles, methods, 
and tools that a software engineer calls upon on a daily 
basis 
 Equips managers to manage software projects and software 
engineers to build computer programs 
 Provides necessary technical and management how to 
getting the job done.
1) Understand the problem (communication and analysis) 
• Who has a stake in the solution to the problem? 
• What are the unknowns? and what (data, function, behavior) are 
required to properly solve the Problem? 
• Can the problem be compartmentalized? Is it possible to represent 
smaller problems that may be easier to understand. 
• Can the problem be represented graphically? Can analysis model 
be created? 
2) Plan a solution (planning, modeling and software design) 
• Have you seen similar problems like this before? 
• Has a similar problem been solved? If so, are the elements of the 
solution reusable? 
• Can sub problems be defined and are solutions available for the 
sub problems?
3) Carry out the plan (construction; code generation) 
• Does the solution conform to the plan? Is the source code 
traceable back to the design? 
• Is each component of the solution correct? Has the design and 
code been reviewed, or better? 
4) Examine the results for accuracy (testing and quality assurance) 
• Is it possible to test each component of the solution? Has a 
reasonable testing strategy been implemented? 
• Does the solution produce results that conform to the data, 
function, and behavior that are required? 
• Has the Software been validated against all stakeholders 
requirement?
1) Remember the reason that the software exists 
• The software should provide value to its users and satisfy the 
requirements 
2) Keep it simple 
• All design and implementation should be as simple as possible 
3) Maintain the vision of the project 
• A clear vision is essential to the project’s success 
4) Others will consume what you produce 
• Always specify, design, and implement knowing that someone else 
will later have to understand and modify what you did
5) Be open to the future 
• Never design yourself into a corner; build software that can be easily 
changed and adapted. 
6) Plan ahead for software reuse 
• Reuse of software reduces the long-term cost and increases the value of the 
program and the reusable components. 
7) Think, then act 
• Placing clear, complete thought before action will almost always produce 
better results
Communication Practice 
Planning Practice 
Modeling Practice 
Construction Practice 
Testing Practice 
Deployment Practice
Communication 
Project initiation 
Requirements gathering 
Planning Estimating 
Scheduling Tracking 
Modelling 
Analysis Design 
Construction 
Code Test 
Deployment 
Delivery 
Support 
Feedback
1) Listen to the speaker and concentrate on what is being said 
2) Prepare before you meet by researching and 
understanding the problem 
3) Someone should facility the meeting and have an agenda 
4) Face-to-face communication is best, but also have a 
document or presentation to focus the discussion 
5) Take notes and document decisions 
6) Strive for collaboration and consensus 
7) Stay focused on a topic; modularize your discussion 
8) If something is unclear, draw a picture 
9) Move on to the next topic a) after you agree to something, 
b) if you cannot agree to something, or c) if a feature or 
function is unclear and cannot be clarified at the moment 
10) Negotiation is not a contest or a game; it works best when 
both parties win 
14
1) Understand the scope of the project 
2) Involve the customer in the planning activity 
3) Recognize that planning is iterative; things will 
change 
4) Estimate based only on what you know 
5) Consider risk as you define the plan 
6) Be realistic on how much can be done each day 
by each person and how well 
7) Adjust granularity as you define the plan 
8) Define how you intend to ensure quality 
9) Describe how you intend to accommodate 
change 
10)Track the plan frequently and make adjustments 
as required 
15
1) The information domain of a problem (the data that 
flows in and out of a system) must be represented and 
understood 
2) The functions that the software performs must be 
defined 
3) The behavior of the software (as a consequence of 
external events) must be represented 
4) The models that depict information, function, and 
behavior must be partitioned in a manner that uncovers 
detail in a layered (or hierarchical) fashion 
5) The analysis task should move from essential 
information toward implementation detail
1) The design should be traceable to the analysis model 
2) Always consider the software architecture of the system to be 
built 
3) Design of data is as important as design of processing 
functions 
4) Interfaces (both internal and external) must be designed with 
care 
5) User interface design should be tuned to the needs of the 
end-user and should stress ease of use 
6) Component-level design should be functionally independent 
(high cohesion) 
7) Components should be loosely coupled to one another and to 
the external environment 
8) Design representations (models) should be easily 
understandable 
9) The design should be developed iteratively; with each 
iteration, the designer should strive for greater simplicity
1) Understand the problem you are trying to solve 
2) Understand basic design principles and concepts 
3) Pick a programming language that meets the needs of 
the software to be built and the environment in which it 
will operate 
4) Select a programming environment that provides tools 
that will make your work easier 
5) Create a set of unit tests that will be applied once the 
component you code is completed
1) Constrain your algorithms by following structured 
programming practices 
2) Select data structures that will meet the needs of the 
design 
3) Understand the software architecture and create 
interfaces that are consistent with it 
4) Keep conditional logic as simple as possible 
5) Create nested loops in a way that makes them easily 
testable 
6) Select meaningful variable names and follow other 
local coding standards 
7) Write code that is self-documenting 
8) Create a visual layout (e.g., indentation and blank lines) 
that aids code understanding
1) Conduct a code walkthrough 
2) Perform unit tests (black-box and white-box) and 
correct errors you have uncovered 
3) Refactor the code
1) All tests should be traceable to the software 
requirements 
2) Tests should be planned long before testing begins 
3) The Pareto principle applies to software testing 
• 80% of the uncovered errors are in 20% of the code 
4) Testing should begin “in the small” and progress toward 
testing “in the large” 
• Unit testing --> integration testing --> validation 
testing --> system testing 
5) Exhaustive testing is not possible
1) Customer expectations for the software must be 
managed 
• Be careful not to promise too much or to mislead the 
user 
2) A complete delivery package should be assembled and 
tested 
3) A support regime must be established before the 
software is delivered 
4) Appropriate instructional materials must be provided to 
end users 
5) Buggy software should be fixed first, delivered later

Weitere ähnliche Inhalte

Was ist angesagt?

Evolving role of Software,Legacy software,CASE tools,Process Models,CMMI
Evolving role of Software,Legacy software,CASE tools,Process Models,CMMIEvolving role of Software,Legacy software,CASE tools,Process Models,CMMI
Evolving role of Software,Legacy software,CASE tools,Process Models,CMMInimmik4u
 
Formal Specification in Software Engineering SE9
Formal Specification in Software Engineering SE9Formal Specification in Software Engineering SE9
Formal Specification in Software Engineering SE9koolkampus
 
Coupling and cohesion
Coupling and cohesionCoupling and cohesion
Coupling and cohesionSutha31
 
Design Concept software engineering
Design Concept software engineeringDesign Concept software engineering
Design Concept software engineeringDarshit Metaliya
 
Waterfall model ppt final
Waterfall model ppt  finalWaterfall model ppt  final
Waterfall model ppt finalshiva krishna
 
Software requirements specification
Software requirements specificationSoftware requirements specification
Software requirements specificationlavanya marichamy
 
Evolutionary models
Evolutionary modelsEvolutionary models
Evolutionary modelsPihu Goel
 
Decomposition technique In Software Engineering
Decomposition technique In Software Engineering Decomposition technique In Software Engineering
Decomposition technique In Software Engineering Bilal Hassan
 
Introduction to Software Project Management
Introduction to Software Project ManagementIntroduction to Software Project Management
Introduction to Software Project ManagementReetesh Gupta
 
Human Computer Interaction - Interaction Design
Human Computer Interaction - Interaction DesignHuman Computer Interaction - Interaction Design
Human Computer Interaction - Interaction DesignVrushali Dhanokar
 
component based development model
component based development modelcomponent based development model
component based development modelMuneeba Qamar
 
Uml in software engineering
Uml in software engineeringUml in software engineering
Uml in software engineeringMubashir Jutt
 
Software Quality Attributes
Software Quality AttributesSoftware Quality Attributes
Software Quality AttributesHayim Makabee
 
Spiral model presentation
Spiral model presentationSpiral model presentation
Spiral model presentationSayedFarhan110
 
Lecture-1: Introduction to web engineering - course overview and grading scheme
Lecture-1: Introduction to web engineering - course overview and grading schemeLecture-1: Introduction to web engineering - course overview and grading scheme
Lecture-1: Introduction to web engineering - course overview and grading schemeMubashir Ali
 

Was ist angesagt? (20)

Introduction to Compiler design
Introduction to Compiler design Introduction to Compiler design
Introduction to Compiler design
 
Evolving role of Software,Legacy software,CASE tools,Process Models,CMMI
Evolving role of Software,Legacy software,CASE tools,Process Models,CMMIEvolving role of Software,Legacy software,CASE tools,Process Models,CMMI
Evolving role of Software,Legacy software,CASE tools,Process Models,CMMI
 
Formal Specification in Software Engineering SE9
Formal Specification in Software Engineering SE9Formal Specification in Software Engineering SE9
Formal Specification in Software Engineering SE9
 
Coupling and cohesion
Coupling and cohesionCoupling and cohesion
Coupling and cohesion
 
Design Concept software engineering
Design Concept software engineeringDesign Concept software engineering
Design Concept software engineering
 
Waterfall model ppt final
Waterfall model ppt  finalWaterfall model ppt  final
Waterfall model ppt final
 
Software requirements specification
Software requirements specificationSoftware requirements specification
Software requirements specification
 
Software design
Software designSoftware design
Software design
 
Evolutionary models
Evolutionary modelsEvolutionary models
Evolutionary models
 
Decomposition technique In Software Engineering
Decomposition technique In Software Engineering Decomposition technique In Software Engineering
Decomposition technique In Software Engineering
 
Introduction to Software Project Management
Introduction to Software Project ManagementIntroduction to Software Project Management
Introduction to Software Project Management
 
UML
UMLUML
UML
 
Human Computer Interaction - Interaction Design
Human Computer Interaction - Interaction DesignHuman Computer Interaction - Interaction Design
Human Computer Interaction - Interaction Design
 
component based development model
component based development modelcomponent based development model
component based development model
 
Uml in software engineering
Uml in software engineeringUml in software engineering
Uml in software engineering
 
Software Quality Attributes
Software Quality AttributesSoftware Quality Attributes
Software Quality Attributes
 
software engineering
software engineeringsoftware engineering
software engineering
 
Spiral model presentation
Spiral model presentationSpiral model presentation
Spiral model presentation
 
Lecture-1: Introduction to web engineering - course overview and grading scheme
Lecture-1: Introduction to web engineering - course overview and grading schemeLecture-1: Introduction to web engineering - course overview and grading scheme
Lecture-1: Introduction to web engineering - course overview and grading scheme
 
Software process
Software processSoftware process
Software process
 

Ähnlich wie Software Engineering Practice

Software engineering -core topics
Software engineering -core topicsSoftware engineering -core topics
Software engineering -core topicsAmnah_Ch
 
Introduction to software engineering
Introduction to software engineeringIntroduction to software engineering
Introduction to software engineeringHitesh Mohapatra
 
Unit 2 SEPM_ Requirement Engineering
Unit 2 SEPM_ Requirement EngineeringUnit 2 SEPM_ Requirement Engineering
Unit 2 SEPM_ Requirement EngineeringKanchanPatil34
 
Function Oriented and Object Oriented Design,Modularization techniques
Function Oriented and Object Oriented Design,Modularization techniquesFunction Oriented and Object Oriented Design,Modularization techniques
Function Oriented and Object Oriented Design,Modularization techniquesnimmik4u
 
Introduction of Software Engineering
Introduction of Software EngineeringIntroduction of Software Engineering
Introduction of Software EngineeringMuhammadTalha436
 
Software Engineering Methodologies
Software Engineering MethodologiesSoftware Engineering Methodologies
Software Engineering MethodologiesNesrine Shokry
 
Basics of software engineering
Basics of software engineeringBasics of software engineering
Basics of software engineeringMadhav Suratkar
 
Design Concepts in Software Engineering-1.pptx
Design Concepts in Software Engineering-1.pptxDesign Concepts in Software Engineering-1.pptx
Design Concepts in Software Engineering-1.pptxKarthigaiSelviS3
 
Introduction To Software Concepts Unit 1 & 2
Introduction To Software Concepts Unit 1 & 2Introduction To Software Concepts Unit 1 & 2
Introduction To Software Concepts Unit 1 & 2Raj vardhan
 
unit 1.pptx regasts sthatbabs shshsbsvsbsh
unit 1.pptx regasts sthatbabs shshsbsvsbshunit 1.pptx regasts sthatbabs shshsbsvsbsh
unit 1.pptx regasts sthatbabs shshsbsvsbshsagarjsicg
 
Pressman_ch_9_design_engineering.ppt
Pressman_ch_9_design_engineering.pptPressman_ch_9_design_engineering.ppt
Pressman_ch_9_design_engineering.pptMotherTheresa2
 
CSE_2014 SE MODULE 1 V.10.pptx
CSE_2014 SE MODULE 1 V.10.pptxCSE_2014 SE MODULE 1 V.10.pptx
CSE_2014 SE MODULE 1 V.10.pptxAbdulMateen516672
 

Ähnlich wie Software Engineering Practice (20)

Software engineering -core topics
Software engineering -core topicsSoftware engineering -core topics
Software engineering -core topics
 
Introduction to software engineering
Introduction to software engineeringIntroduction to software engineering
Introduction to software engineering
 
Software engineering
Software engineeringSoftware engineering
Software engineering
 
Unit 2 SEPM_ Requirement Engineering
Unit 2 SEPM_ Requirement EngineeringUnit 2 SEPM_ Requirement Engineering
Unit 2 SEPM_ Requirement Engineering
 
Function Oriented and Object Oriented Design,Modularization techniques
Function Oriented and Object Oriented Design,Modularization techniquesFunction Oriented and Object Oriented Design,Modularization techniques
Function Oriented and Object Oriented Design,Modularization techniques
 
3.pptx
3.pptx3.pptx
3.pptx
 
Lecture 1 SE.pptx
Lecture 1 SE.pptxLecture 1 SE.pptx
Lecture 1 SE.pptx
 
Chapter1
Chapter1Chapter1
Chapter1
 
Introduction of Software Engineering
Introduction of Software EngineeringIntroduction of Software Engineering
Introduction of Software Engineering
 
Ch 9-design-engineering
Ch 9-design-engineeringCh 9-design-engineering
Ch 9-design-engineering
 
Software Engineering Methodologies
Software Engineering MethodologiesSoftware Engineering Methodologies
Software Engineering Methodologies
 
Design engineering
Design engineeringDesign engineering
Design engineering
 
Basics of software engineering
Basics of software engineeringBasics of software engineering
Basics of software engineering
 
Design Concepts in Software Engineering-1.pptx
Design Concepts in Software Engineering-1.pptxDesign Concepts in Software Engineering-1.pptx
Design Concepts in Software Engineering-1.pptx
 
Introduction To Software Concepts Unit 1 & 2
Introduction To Software Concepts Unit 1 & 2Introduction To Software Concepts Unit 1 & 2
Introduction To Software Concepts Unit 1 & 2
 
Design final
Design finalDesign final
Design final
 
unit 1.pptx regasts sthatbabs shshsbsvsbsh
unit 1.pptx regasts sthatbabs shshsbsvsbshunit 1.pptx regasts sthatbabs shshsbsvsbsh
unit 1.pptx regasts sthatbabs shshsbsvsbsh
 
Pressman_ch_9_design_engineering.ppt
Pressman_ch_9_design_engineering.pptPressman_ch_9_design_engineering.ppt
Pressman_ch_9_design_engineering.ppt
 
The Role of the Architect
The Role of the ArchitectThe Role of the Architect
The Role of the Architect
 
CSE_2014 SE MODULE 1 V.10.pptx
CSE_2014 SE MODULE 1 V.10.pptxCSE_2014 SE MODULE 1 V.10.pptx
CSE_2014 SE MODULE 1 V.10.pptx
 

Kürzlich hochgeladen

Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 

Kürzlich hochgeladen (20)

Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 

Software Engineering Practice

  • 2. Software Engineering Software Engineering Practice Essence of Practice Core Principles of Software Engineering Types of Practice • Communication Practice • Planning Practice
  • 3.  Software engineering (SE) is concerned with developing and maintaining software systems that behave reliably and efficiently, are affordable to develop and maintain, and satisfy all the requirements that customers have defined for them.
  • 4. • Analysis: decompose a large problem into smaller, understandable pieces  abstraction is the key • Synthesis: build (compose) software from smaller building blocks  composition is challenging
  • 7.  Consists of a collection of concepts, principles, methods, and tools that a software engineer calls upon on a daily basis  Equips managers to manage software projects and software engineers to build computer programs  Provides necessary technical and management how to getting the job done.
  • 8. 1) Understand the problem (communication and analysis) • Who has a stake in the solution to the problem? • What are the unknowns? and what (data, function, behavior) are required to properly solve the Problem? • Can the problem be compartmentalized? Is it possible to represent smaller problems that may be easier to understand. • Can the problem be represented graphically? Can analysis model be created? 2) Plan a solution (planning, modeling and software design) • Have you seen similar problems like this before? • Has a similar problem been solved? If so, are the elements of the solution reusable? • Can sub problems be defined and are solutions available for the sub problems?
  • 9. 3) Carry out the plan (construction; code generation) • Does the solution conform to the plan? Is the source code traceable back to the design? • Is each component of the solution correct? Has the design and code been reviewed, or better? 4) Examine the results for accuracy (testing and quality assurance) • Is it possible to test each component of the solution? Has a reasonable testing strategy been implemented? • Does the solution produce results that conform to the data, function, and behavior that are required? • Has the Software been validated against all stakeholders requirement?
  • 10. 1) Remember the reason that the software exists • The software should provide value to its users and satisfy the requirements 2) Keep it simple • All design and implementation should be as simple as possible 3) Maintain the vision of the project • A clear vision is essential to the project’s success 4) Others will consume what you produce • Always specify, design, and implement knowing that someone else will later have to understand and modify what you did
  • 11. 5) Be open to the future • Never design yourself into a corner; build software that can be easily changed and adapted. 6) Plan ahead for software reuse • Reuse of software reduces the long-term cost and increases the value of the program and the reusable components. 7) Think, then act • Placing clear, complete thought before action will almost always produce better results
  • 12. Communication Practice Planning Practice Modeling Practice Construction Practice Testing Practice Deployment Practice
  • 13. Communication Project initiation Requirements gathering Planning Estimating Scheduling Tracking Modelling Analysis Design Construction Code Test Deployment Delivery Support Feedback
  • 14. 1) Listen to the speaker and concentrate on what is being said 2) Prepare before you meet by researching and understanding the problem 3) Someone should facility the meeting and have an agenda 4) Face-to-face communication is best, but also have a document or presentation to focus the discussion 5) Take notes and document decisions 6) Strive for collaboration and consensus 7) Stay focused on a topic; modularize your discussion 8) If something is unclear, draw a picture 9) Move on to the next topic a) after you agree to something, b) if you cannot agree to something, or c) if a feature or function is unclear and cannot be clarified at the moment 10) Negotiation is not a contest or a game; it works best when both parties win 14
  • 15. 1) Understand the scope of the project 2) Involve the customer in the planning activity 3) Recognize that planning is iterative; things will change 4) Estimate based only on what you know 5) Consider risk as you define the plan 6) Be realistic on how much can be done each day by each person and how well 7) Adjust granularity as you define the plan 8) Define how you intend to ensure quality 9) Describe how you intend to accommodate change 10)Track the plan frequently and make adjustments as required 15
  • 16. 1) The information domain of a problem (the data that flows in and out of a system) must be represented and understood 2) The functions that the software performs must be defined 3) The behavior of the software (as a consequence of external events) must be represented 4) The models that depict information, function, and behavior must be partitioned in a manner that uncovers detail in a layered (or hierarchical) fashion 5) The analysis task should move from essential information toward implementation detail
  • 17. 1) The design should be traceable to the analysis model 2) Always consider the software architecture of the system to be built 3) Design of data is as important as design of processing functions 4) Interfaces (both internal and external) must be designed with care 5) User interface design should be tuned to the needs of the end-user and should stress ease of use 6) Component-level design should be functionally independent (high cohesion) 7) Components should be loosely coupled to one another and to the external environment 8) Design representations (models) should be easily understandable 9) The design should be developed iteratively; with each iteration, the designer should strive for greater simplicity
  • 18. 1) Understand the problem you are trying to solve 2) Understand basic design principles and concepts 3) Pick a programming language that meets the needs of the software to be built and the environment in which it will operate 4) Select a programming environment that provides tools that will make your work easier 5) Create a set of unit tests that will be applied once the component you code is completed
  • 19. 1) Constrain your algorithms by following structured programming practices 2) Select data structures that will meet the needs of the design 3) Understand the software architecture and create interfaces that are consistent with it 4) Keep conditional logic as simple as possible 5) Create nested loops in a way that makes them easily testable 6) Select meaningful variable names and follow other local coding standards 7) Write code that is self-documenting 8) Create a visual layout (e.g., indentation and blank lines) that aids code understanding
  • 20. 1) Conduct a code walkthrough 2) Perform unit tests (black-box and white-box) and correct errors you have uncovered 3) Refactor the code
  • 21. 1) All tests should be traceable to the software requirements 2) Tests should be planned long before testing begins 3) The Pareto principle applies to software testing • 80% of the uncovered errors are in 20% of the code 4) Testing should begin “in the small” and progress toward testing “in the large” • Unit testing --> integration testing --> validation testing --> system testing 5) Exhaustive testing is not possible
  • 22. 1) Customer expectations for the software must be managed • Be careful not to promise too much or to mislead the user 2) A complete delivery package should be assembled and tested 3) A support regime must be established before the software is delivered 4) Appropriate instructional materials must be provided to end users 5) Buggy software should be fixed first, delivered later