SlideShare a Scribd company logo
7
Most read
11
Most read
18
Most read
Software Engineering II
By: Muhammad Usman
email:mu702823@gmail.com
 Principle #1. Divide and conquer. Stated in a more
technical manner, analysis and design should always
emphasize separation of concerns (SoC).
 Principle #2. Understand the use of abstraction. At it
core, an abstraction is a simplification of some complex
element of a system used to communication meaning in a
single phrase.
 Principle #3. Strive for consistency. A familiar context
makes software easier to use.
 Principle #4. Focus on the transfer of information. Pay
special attention to the analysis, design, construction, and
testing of interfaces.
Principles that Guide Practice
Principles that Guide Practice
 Principle #5. Build software that exhibits effective
modularity. Separation of concerns (Principle #1)
establishes a philosophy for software. Modularity provides
a mechanism for realizing the philosophy.
 Principle #6. Look for patterns. Brad Appleton
suggests that: “The goal of patterns within the software
community is to create a body of literature to help
software developers resolve recurring problems
encountered throughout all of software development.
 Principle #7. When possible, represent the problem
and its solution from a number of different
perspectives.
 Principle #8. Remember that someone will maintain
the software.
Communication Principles
 Principle #1. Listen. Try to focus on the speaker’s
words, rather than formulating your response to those
words.
 Principle # 2. Prepare before you communicate.
Spend the time to understand the problem before you
meet with others.
 Principle # 3. Someone should facilitate the activity.
Every communication meeting should have a leader (a
facilitator) to keep the conversation moving in a
productive direction; (2) to mediate any conflict that does
occur, and (3) to ensure than other principles are
followed.
 Principle #4. Face-to-face communication is best.
But it usually works better when some other
representation of the relevant information is present.
Communication Principles
 Principle # 5. Take notes and document decisions.
Someone participating in the communication should
serve as a “recorder” and write down all important
points and decisions.
 Principle # 6. Strive for collaboration. Collaboration
and consensus occur when the collective knowledge of
members of the team is combined …
 Principle # 7. Stay focused, modularize your
discussion. The more people involved in any
communication, the more likely that discussion will
bounce from one topic to the next.
Communication Principles
 Principle # 8. If something is unclear, draw a
picture.
 Principle # 9.
 (a) Once you agree to something, move on;
 (b) If you can’t agree to something, move on;
 (c) If a feature or function is unclear and cannot be
clarified at the moment, move on.
 Principle # 10. Negotiation is not a contest or a
game. It works best when both parties win.
Planning Principles
 Principle #1. Understand the scope of the project.
It’s impossible to use a roadmap if you don’t know
where you’re going. Scope provides the software team
with a destination.
 Principle #2. Involve the customer in the planning
activity. The customer defines priorities and
establishes project constraints.
 Principle #3. Recognize that planning is iterative. A
project plan is never engraved in stone. As work begins,
it very likely that things will change.
 Principle #4. Estimate based on what you know.
The intent of estimation is to provide an indication of
effort, cost, and task duration, based on the team’s
current understanding of the work to be done.
Planning Principles
 Principle #5. Consider risk as you define the plan. If
you have identified risks that have high impact and high
probability, contingency planning is necessary.
 Principle #6. Be realistic. People don’t work 100
percent of every day.
 Principle #7. Adjust granularity as you define the
plan. Granularity refers to the level of detail that is
introduced as a project plan is developed.
 Principle #8. Define how you intend to ensure quality.
The plan should identify how the software team intends to
ensure quality.
Planning Principles
 Principle #9. Describe how you intend to
accommodate change. Even the best planning can be
obviated by uncontrolled change.
 Principle #10. Track the plan frequently and make
adjustments as required. Software projects fall behind
schedule one day at a time.
Modeling Principles
 In software engineering work, two classes of models
can be created:
1. Requirements models (also called analysis
models) represent the customer requirements by
depicting the software in three different domains:
the information domain, the functional domain, and
the behavioral domain.
2. Design models represent characteristics of the
software that help practitioners to construct it
effectively: the architecture, the user interface, and
component-level detail.
1.Requirements Modeling Principles
 Principle #1. The information domain of a problem
must be represented and understood.
 Principle #2. The functions that the software
performs must be defined.
 Principle #3. The behavior of the software (as a
consequence of external events) must be
represented.
 Principle #4. The models that depict information,
function, and behavior must be partitioned in a
manner that uncovers detail in a layered (or
hierarchical) fashion.
 Principle #5. The analysis task should move from
essential information toward implementation detail.
2. Design Modeling Principles
 Principle #1. Design should be traceable to the
requirements model.
 Principle #2. Always consider the architecture of
the system to be built.
 Principle #3. Design of data is as important as
design of processing functions.
 Principle #5. User interface design should be tuned
to the needs of the end-user. However, in every
case, it should stress ease of use.
 Principle #6. Component-level design should be
functionally independent.
2. Design Modeling Principles
 Principle #7. Components should be loosely
coupled to one another and to the external
environment.
 Principle #8. Design representations (models)
should be easily understandable.
 Principle #9. The design should be developed
iteratively. With each iteration, the designer should
strive for greater simplicity.
Agile Modeling Principles
 Principle #1. The primary goal of the software team is
to build software, not create models.
 Principle #2. Travel light—don’t create more models
than you need.
 Principle #3. Strive to produce the simplest model
that will describe the problem or the software.
 Principle #4. Build models in a way that makes them
amenable to change.
 Principle #5. Be able to state an explicit purpose for
each model that is created.
 Principle #6. Adapt the models you develop to the
system at hand.
Agile Modeling Principles
 Principle #7. Try to build useful models, but forget
about building perfect models.
 Principle #8. Don’t become dogmatic about the syntax
of the model. If it communicates content successfully,
representation is secondary.
 Principle #9. If your instincts tell you a model isn’t
right even though it seems okay on paper, you
probably have reason to be concerned.
 Principle #10. Get feedback as soon as you can.
Construction Principles
 The construction activity encompasses a set of coding
and testing tasks that lead to operational software that
is ready for delivery to the customer or end-user.
 Coding principles and concepts are closely aligned
programming style, programming languages, and
programming methods.
 Testing principles and concepts lead to the design
of tests that systematically uncover different classes of
errors and to do so with a minimum amount of time
and effort.
Preparation Principles
 Before you write one line of code, be sure you:
1. Understand of the problem you’re 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.
Coding Principles
1. Constrain your algorithms by following structured
programming practice.
2. Consider the use of pair programming
3. Select data structures that will meet the needs of the design.
4. Understand the software architecture and create interfaces
that are consistent with it.
5. Keep conditional logic as simple as possible.
6. Create nested loops in a way that makes them easily
testable.
7. Select meaningful variable names and follow other local
coding standards.
Coding Principles
8. Write code that is self-documenting.
9. Create a visual layout (e.g., indentation and blank lines) that
aids understanding.
Validation Principles
 After you’ve completed your first coding pass,
be sure you:
1. Conduct a code walkthrough when
appropriate.
2. Perform unit tests and correct errors you’ve
uncovered.
3. Refactor the code.
Testing Principles
 Principle #1. All tests should be traceable to
customer requirements.
 Principle #2. Tests should be planned long before
testing begins.
 Principle #3. The Pareto principle applies to
software testing.
 Principle #4. Testing should begin “in the small”
and progress toward testing “in the large.”
 Principle #5. Exhaustive testing is not possible.
Deployment Principles
 Principle #1. Customer expectations for the
software must be managed. Too often, the customer
expects more than the team has promised to deliver,
and disappointment occurs immediately.
 Principle #2. A complete delivery package should
be assembled and tested.
 Principle #3. A support regime must be established
before the software is delivered. An end-user expects
responsiveness and accurate information when a
question or problem arises.
 Principle #4. Appropriate instructional materials
must be provided to end-users.
 Principle #5. Buggy software should be fixed first,
delivered later.

More Related Content

PPT
Ian Sommerville, Software Engineering, 9th Edition Ch1
PPTX
Evaluation of computer performance
PDF
Stepwise Project planning in software development
PPTX
Application layer
PPT
SQA-Plan.ppt
PPTX
Software myths | Software Engineering Notes
PPT
Spm unit 3
PPTX
Requirements engineering
Ian Sommerville, Software Engineering, 9th Edition Ch1
Evaluation of computer performance
Stepwise Project planning in software development
Application layer
SQA-Plan.ppt
Software myths | Software Engineering Notes
Spm unit 3
Requirements engineering

What's hot (20)

PDF
Address in the target code in Compiler Construction
PPTX
Ch 7 integrating quality activities in the projectlife cycle
PDF
Chapter 7 software reliability
RTF
CCNA Access Lists Questions
PDF
Chapter 8 software testing
PDF
Mobile transportlayer
PPTX
Cryptography
PPT
Greedy Algorihm
PPT
REQUIREMENT ENGINEERING
PPTX
Software quality assurance
PPT
Flow & Error Control
PPTX
Software maintenance
PPTX
Ch2-Software Engineering 9
PPTX
Software Requirement Specification
PPTX
Framing in data link layer
PDF
Random number generators
PPTX
Component level design
PPTX
Cost estimation using cocomo model
Address in the target code in Compiler Construction
Ch 7 integrating quality activities in the projectlife cycle
Chapter 7 software reliability
CCNA Access Lists Questions
Chapter 8 software testing
Mobile transportlayer
Cryptography
Greedy Algorihm
REQUIREMENT ENGINEERING
Software quality assurance
Flow & Error Control
Software maintenance
Ch2-Software Engineering 9
Software Requirement Specification
Framing in data link layer
Random number generators
Component level design
Cost estimation using cocomo model
Ad

Similar to Principles that Guide Practice (20)

PDF
5. ch 4-principles that guide practice
PPT
Lecture note 3 on software engineering and development
PPT
unit - 2 - software engineer practices.ppt
PPTX
It's computer science something UNIT 2.pptx
PPT
Software engineering -core topics
PPTX
Week 1Lecture2222222222222222222222.pptx
PPTX
Software engineering
PPT
lec9-ch7.ppt
PPTX
Pressman_Pressman_SoftwareEngineeringPA_9e_Ch006_PPT.pptx
PDF
Introduction to software engineering
PDF
softwareengineeringpractice-141002214920-phpapp02 (1).pdf
PPTX
Software Engineering Practice
PPTX
software engineering 2 Chapter notes of software engineering in detail to stu...
PPTX
sepm.pptx tttg. Y tfczAff. Rrfv vv f rfv.
PPT
Software engineering
PPT
Principles of guide practices for project
PPT
Chapter_04_of_Software_engineering_book.ppt
PPT
Software System Engineering - Chapter 3
PPT
Chapter_04.ppt
5. ch 4-principles that guide practice
Lecture note 3 on software engineering and development
unit - 2 - software engineer practices.ppt
It's computer science something UNIT 2.pptx
Software engineering -core topics
Week 1Lecture2222222222222222222222.pptx
Software engineering
lec9-ch7.ppt
Pressman_Pressman_SoftwareEngineeringPA_9e_Ch006_PPT.pptx
Introduction to software engineering
softwareengineeringpractice-141002214920-phpapp02 (1).pdf
Software Engineering Practice
software engineering 2 Chapter notes of software engineering in detail to stu...
sepm.pptx tttg. Y tfczAff. Rrfv vv f rfv.
Software engineering
Principles of guide practices for project
Chapter_04_of_Software_engineering_book.ppt
Software System Engineering - Chapter 3
Chapter_04.ppt
Ad

More from Islamia Univeristy Bahawalpur Bahawalnagar (15)

PPTX
PPTX
Spiral Model and other model
PPTX
PDF
A.topic1. introductionandbriefhistoryofpsychology presentation-
DOCX
3 .net framework class library
DOCX
DOCX
1 what is microsoft .net framework
PPTX

Recently uploaded (20)

PPTX
Introduction-to-Food-Packaging-and-packaging -materials.pptx
PDF
natwest.pdf company description and business model
PPTX
Hydrogel Based delivery Cancer Treatment
DOCX
"Project Management: Ultimate Guide to Tools, Techniques, and Strategies (2025)"
PPTX
worship songs, in any order, compilation
PPTX
nose tajweed for the arabic alphabets for the responsive
PPTX
ART-APP-REPORT-FINctrwxsg f fuy L-na.pptx
PPTX
The spiral of silence is a theory in communication and political science that...
PPTX
Project and change Managment: short video sequences for IBA
PDF
Nykaa-Strategy-Case-Fixing-Retention-UX-and-D2C-Engagement (1).pdf
DOCX
ENGLISH PROJECT FOR BINOD BIHARI MAHTO KOYLANCHAL UNIVERSITY
PPTX
English-9-Q1-3-.pptxjkshbxnnxgchchxgxhxhx
PPTX
fundraisepro pitch deck elegant and modern
PDF
Presentation1 [Autosaved].pdf diagnosiss
PPTX
PHIL.-ASTRONOMY-AND-NAVIGATION of ..pptx
PPTX
Effective_Handling_Information_Presentation.pptx
PPTX
_ISO_Presentation_ISO 9001 and 45001.pptx
PPTX
AcademyNaturalLanguageProcessing-EN-ILT-M02-Introduction.pptx
DOC
学位双硕士UTAS毕业证,墨尔本理工学院毕业证留学硕士毕业证
PPT
The Effect of Human Resource Management Practice on Organizational Performanc...
Introduction-to-Food-Packaging-and-packaging -materials.pptx
natwest.pdf company description and business model
Hydrogel Based delivery Cancer Treatment
"Project Management: Ultimate Guide to Tools, Techniques, and Strategies (2025)"
worship songs, in any order, compilation
nose tajweed for the arabic alphabets for the responsive
ART-APP-REPORT-FINctrwxsg f fuy L-na.pptx
The spiral of silence is a theory in communication and political science that...
Project and change Managment: short video sequences for IBA
Nykaa-Strategy-Case-Fixing-Retention-UX-and-D2C-Engagement (1).pdf
ENGLISH PROJECT FOR BINOD BIHARI MAHTO KOYLANCHAL UNIVERSITY
English-9-Q1-3-.pptxjkshbxnnxgchchxgxhxhx
fundraisepro pitch deck elegant and modern
Presentation1 [Autosaved].pdf diagnosiss
PHIL.-ASTRONOMY-AND-NAVIGATION of ..pptx
Effective_Handling_Information_Presentation.pptx
_ISO_Presentation_ISO 9001 and 45001.pptx
AcademyNaturalLanguageProcessing-EN-ILT-M02-Introduction.pptx
学位双硕士UTAS毕业证,墨尔本理工学院毕业证留学硕士毕业证
The Effect of Human Resource Management Practice on Organizational Performanc...

Principles that Guide Practice

  • 1. Software Engineering II By: Muhammad Usman email:mu702823@gmail.com
  • 2.  Principle #1. Divide and conquer. Stated in a more technical manner, analysis and design should always emphasize separation of concerns (SoC).  Principle #2. Understand the use of abstraction. At it core, an abstraction is a simplification of some complex element of a system used to communication meaning in a single phrase.  Principle #3. Strive for consistency. A familiar context makes software easier to use.  Principle #4. Focus on the transfer of information. Pay special attention to the analysis, design, construction, and testing of interfaces. Principles that Guide Practice
  • 3. Principles that Guide Practice  Principle #5. Build software that exhibits effective modularity. Separation of concerns (Principle #1) establishes a philosophy for software. Modularity provides a mechanism for realizing the philosophy.  Principle #6. Look for patterns. Brad Appleton suggests that: “The goal of patterns within the software community is to create a body of literature to help software developers resolve recurring problems encountered throughout all of software development.  Principle #7. When possible, represent the problem and its solution from a number of different perspectives.  Principle #8. Remember that someone will maintain the software.
  • 4. Communication Principles  Principle #1. Listen. Try to focus on the speaker’s words, rather than formulating your response to those words.  Principle # 2. Prepare before you communicate. Spend the time to understand the problem before you meet with others.  Principle # 3. Someone should facilitate the activity. Every communication meeting should have a leader (a facilitator) to keep the conversation moving in a productive direction; (2) to mediate any conflict that does occur, and (3) to ensure than other principles are followed.  Principle #4. Face-to-face communication is best. But it usually works better when some other representation of the relevant information is present.
  • 5. Communication Principles  Principle # 5. Take notes and document decisions. Someone participating in the communication should serve as a “recorder” and write down all important points and decisions.  Principle # 6. Strive for collaboration. Collaboration and consensus occur when the collective knowledge of members of the team is combined …  Principle # 7. Stay focused, modularize your discussion. The more people involved in any communication, the more likely that discussion will bounce from one topic to the next.
  • 6. Communication Principles  Principle # 8. If something is unclear, draw a picture.  Principle # 9.  (a) Once you agree to something, move on;  (b) If you can’t agree to something, move on;  (c) If a feature or function is unclear and cannot be clarified at the moment, move on.  Principle # 10. Negotiation is not a contest or a game. It works best when both parties win.
  • 7. Planning Principles  Principle #1. Understand the scope of the project. It’s impossible to use a roadmap if you don’t know where you’re going. Scope provides the software team with a destination.  Principle #2. Involve the customer in the planning activity. The customer defines priorities and establishes project constraints.  Principle #3. Recognize that planning is iterative. A project plan is never engraved in stone. As work begins, it very likely that things will change.  Principle #4. Estimate based on what you know. The intent of estimation is to provide an indication of effort, cost, and task duration, based on the team’s current understanding of the work to be done.
  • 8. Planning Principles  Principle #5. Consider risk as you define the plan. If you have identified risks that have high impact and high probability, contingency planning is necessary.  Principle #6. Be realistic. People don’t work 100 percent of every day.  Principle #7. Adjust granularity as you define the plan. Granularity refers to the level of detail that is introduced as a project plan is developed.  Principle #8. Define how you intend to ensure quality. The plan should identify how the software team intends to ensure quality.
  • 9. Planning Principles  Principle #9. Describe how you intend to accommodate change. Even the best planning can be obviated by uncontrolled change.  Principle #10. Track the plan frequently and make adjustments as required. Software projects fall behind schedule one day at a time.
  • 10. Modeling Principles  In software engineering work, two classes of models can be created: 1. Requirements models (also called analysis models) represent the customer requirements by depicting the software in three different domains: the information domain, the functional domain, and the behavioral domain. 2. Design models represent characteristics of the software that help practitioners to construct it effectively: the architecture, the user interface, and component-level detail.
  • 11. 1.Requirements Modeling Principles  Principle #1. The information domain of a problem must be represented and understood.  Principle #2. The functions that the software performs must be defined.  Principle #3. The behavior of the software (as a consequence of external events) must be represented.  Principle #4. The models that depict information, function, and behavior must be partitioned in a manner that uncovers detail in a layered (or hierarchical) fashion.  Principle #5. The analysis task should move from essential information toward implementation detail.
  • 12. 2. Design Modeling Principles  Principle #1. Design should be traceable to the requirements model.  Principle #2. Always consider the architecture of the system to be built.  Principle #3. Design of data is as important as design of processing functions.  Principle #5. User interface design should be tuned to the needs of the end-user. However, in every case, it should stress ease of use.  Principle #6. Component-level design should be functionally independent.
  • 13. 2. Design Modeling Principles  Principle #7. Components should be loosely coupled to one another and to the external environment.  Principle #8. Design representations (models) should be easily understandable.  Principle #9. The design should be developed iteratively. With each iteration, the designer should strive for greater simplicity.
  • 14. Agile Modeling Principles  Principle #1. The primary goal of the software team is to build software, not create models.  Principle #2. Travel light—don’t create more models than you need.  Principle #3. Strive to produce the simplest model that will describe the problem or the software.  Principle #4. Build models in a way that makes them amenable to change.  Principle #5. Be able to state an explicit purpose for each model that is created.  Principle #6. Adapt the models you develop to the system at hand.
  • 15. Agile Modeling Principles  Principle #7. Try to build useful models, but forget about building perfect models.  Principle #8. Don’t become dogmatic about the syntax of the model. If it communicates content successfully, representation is secondary.  Principle #9. If your instincts tell you a model isn’t right even though it seems okay on paper, you probably have reason to be concerned.  Principle #10. Get feedback as soon as you can.
  • 16. Construction Principles  The construction activity encompasses a set of coding and testing tasks that lead to operational software that is ready for delivery to the customer or end-user.  Coding principles and concepts are closely aligned programming style, programming languages, and programming methods.  Testing principles and concepts lead to the design of tests that systematically uncover different classes of errors and to do so with a minimum amount of time and effort.
  • 17. Preparation Principles  Before you write one line of code, be sure you: 1. Understand of the problem you’re 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.
  • 18. Coding Principles 1. Constrain your algorithms by following structured programming practice. 2. Consider the use of pair programming 3. Select data structures that will meet the needs of the design. 4. Understand the software architecture and create interfaces that are consistent with it. 5. Keep conditional logic as simple as possible. 6. Create nested loops in a way that makes them easily testable. 7. Select meaningful variable names and follow other local coding standards.
  • 19. Coding Principles 8. Write code that is self-documenting. 9. Create a visual layout (e.g., indentation and blank lines) that aids understanding.
  • 20. Validation Principles  After you’ve completed your first coding pass, be sure you: 1. Conduct a code walkthrough when appropriate. 2. Perform unit tests and correct errors you’ve uncovered. 3. Refactor the code.
  • 21. Testing Principles  Principle #1. All tests should be traceable to customer requirements.  Principle #2. Tests should be planned long before testing begins.  Principle #3. The Pareto principle applies to software testing.  Principle #4. Testing should begin “in the small” and progress toward testing “in the large.”  Principle #5. Exhaustive testing is not possible.
  • 22. Deployment Principles  Principle #1. Customer expectations for the software must be managed. Too often, the customer expects more than the team has promised to deliver, and disappointment occurs immediately.  Principle #2. A complete delivery package should be assembled and tested.  Principle #3. A support regime must be established before the software is delivered. An end-user expects responsiveness and accurate information when a question or problem arises.  Principle #4. Appropriate instructional materials must be provided to end-users.  Principle #5. Buggy software should be fixed first, delivered later.