1 5.1 Software Engineering Practice Provide value to the user KIS—keep it simple! Maintain the...
-
Upload
juliet-lang -
Category
Documents
-
view
216 -
download
0
Transcript of 1 5.1 Software Engineering Practice Provide value to the user KIS—keep it simple! Maintain the...
1
5.1 Software Engineering 5.1 Software Engineering PracticePractice
1.1. Provide value to the userProvide value to the user
2.2. KIS—keep it simple!KIS—keep it simple!
3.3. Maintain the product and project “vision”Maintain the product and project “vision”
4.4. What you produce, others will consumeWhat you produce, others will consume
5.5. Be open to the futureBe open to the future
6.6. Plan ahead for reusePlan ahead for reuse
7.7. Think!Think!
What is the difference between simple and oversimplified What is the difference between simple and oversimplified in the software engineering context? in the software engineering context?
Do these principles apply to both agile and Do these principles apply to both agile and traditional/prescriptive methods? traditional/prescriptive methods?
2
5.2 Communication 5.2 Communication PracticesPractices
Principles (Chapter 7)Principles (Chapter 7)1.1. ListenListen
2.2. Prepare before you communicatePrepare before you communicate
3.3. Facilitate the communicationFacilitate the communication
4.4. Face-to-face is bestFace-to-face is best
5.5. Take notes and document decisionsTake notes and document decisions
6.6. Collaborate with the customerCollaborate with the customer
7.7. Stay focusedStay focused
8.8. Draw pictures when things are unclearDraw pictures when things are unclear
9.9. Move on …Move on …
10.10. Negotiation works best when both parties win.Negotiation works best when both parties win.
How does agile communication differ from traditional sw engineering How does agile communication differ from traditional sw engineering communication? communication?
3
5.3 Planning 5.3 Planning PracticesPractices
Principles (Chapters 21-24)Principles (Chapters 21-24)1.1. Understand the project scopeUnderstand the project scope2.2. Involve the customer (and other stakeholders)Involve the customer (and other stakeholders)3.3. Recognize that planning is iterativeRecognize that planning is iterative4.4. Estimate based on what you knowEstimate based on what you know5.5. Consider riskConsider risk6.6. Be realisticBe realistic7.7. Adjust granularity as you planAdjust granularity as you plan8.8. Define how quality will be achievedDefine how quality will be achieved9.9. Define how you’ll accommodate changesDefine how you’ll accommodate changes10.10. Track what you’ve plannedTrack what you’ve planned
4
5.3 Planning 5.3 Planning PracticesPractices
Boehm’s WBoehm’s W55HH PrincipleHH Principle Why is the system being developed?Why is the system being developed? What will be done?What will be done? When will it be accomplished?When will it be accomplished? Who is responsible?Who is responsible? Where are they located (organizationally)?Where are they located (organizationally)? How will the job be done technically and How will the job be done technically and
managerially?managerially? How much of each resource is needed?How much of each resource is needed?
5
5.4 Modeling 5.4 Modeling PracticesPractices
We create models to gain a better understanding We create models to gain a better understanding of the actual entity to be builtof the actual entity to be built
Analysis modelsAnalysis models represent the customer represent the customer requirements by depicting the software in three requirements by depicting the software in three different domains: the information domain, the different domains: the information domain, the functional domain, and the behavioral domain. functional domain, and the behavioral domain.
Design modelsDesign models represent characteristics of the represent characteristics of the software that help practitioners to construct it software that help practitioners to construct it effectively: the architecture, the user interface, effectively: the architecture, the user interface, and component-level detail.and component-level detail.
6
Elements of the analysis model (Chapter 8)Elements of the analysis model (Chapter 8) Data modelData model Flow modelFlow model Class modelClass model Behavior modelBehavior model
Elements of the design model (Chapters 9-12)Elements of the design model (Chapters 9-12) Data designData design Architectural designArchitectural design Component designComponent design Interface designInterface design
How important is the architectural vision of a software system? How important is the architectural vision of a software system?
5.4 Modeling 5.4 Modeling PracticesPractices
7
5.5 Construction 5.5 Construction PracticesPractices
Preparation principles:Preparation principles: Before you write one line Before you write one line of code, be sure you:of code, be sure you:
1.1. Understand of the problem you’re trying to solve (see Understand of the problem you’re trying to solve (see communicationcommunication and and modelingmodeling))
2.2. Understand basic design principles and concepts.Understand basic design principles and concepts.
3.3. Pick a programming language that meets the needs of the Pick a programming language that meets the needs of the software to be built and the environment in which it will software to be built and the environment in which it will operate.operate.
4.4. Select a programming environment that provides tools Select a programming environment that provides tools that will make your work easier.that will make your work easier.
5.5. Create a set of unit tests that will be applied once the Create a set of unit tests that will be applied once the component you code is completedcomponent you code is completed.
8
5.5 Construction 5.5 Construction PracticesPractices
Coding principles: Coding principles: As you begin writing code, be sure you:As you begin writing code, be sure you:1.1. Constrain your algorithms by following structured Constrain your algorithms by following structured
programming [BOH00] practice.programming [BOH00] practice.
2.2. Select data structures that will meet the needs of the design.Select data structures that will meet the needs of the design.
3.3. Understand the software architecture and create interfaces Understand the software architecture and create interfaces that are consistent with it.that are consistent with it.
4.4. Keep conditional logic as simple as possible.Keep conditional logic as simple as possible.
5.5. Create nested loops in a way that makes them easily testable.Create nested loops in a way that makes them easily testable.
6.6. Select meaningful variable names and follow other local coding Select meaningful variable names and follow other local coding standards.standards.
7.7. Write code that is self-documenting.Write code that is self-documenting.
8.8. Create a visual layout (e.g., indentation and blank lines) that Create a visual layout (e.g., indentation and blank lines) that aids understanding.aids understanding.
9
5.5 Construction 5.5 Construction PracticesPractices
Validation Principles: Validation Principles: After you’ve completed After you’ve completed your first coding pass, be sure you:your first coding pass, be sure you:
1.1. Conduct a code walkthrough when appropriate.Conduct a code walkthrough when appropriate.
2.2. Perform unit tests and correct errors you’ve uncovered.Perform unit tests and correct errors you’ve uncovered.
3.3. Refactor the code. Refactor the code.
10
5.5 Construction 5.5 Construction PracticesPractices
Testing Principles (Chapters 13 and 14)Testing Principles (Chapters 13 and 14)1.1. All tests should be traceable to requirementsAll tests should be traceable to requirements
2.2. Tests should be plannedTests should be planned
3.3. The Pareto Principle applies to testingThe Pareto Principle applies to testing
4.4. Testing begins “in the small” and moves toward “in the Testing begins “in the small” and moves toward “in the large”large”
5.5. Exhaustive testing is not possibleExhaustive testing is not possible
What defines a successful software test? What defines a successful software test?
11
5.6 Deployment 5.6 Deployment PracticesPractices
PrinciplesPrinciples1.1. Manage customer expectations for each incrementManage customer expectations for each increment
2.2. A complete delivery package should be assembled and A complete delivery package should be assembled and testedtested
3.3. A support regime should be establishedA support regime should be established
4.4. Instructional materials must be provided to end-usersInstructional materials must be provided to end-users
5.5. Buggy software should be fixed first, delivered laterBuggy software should be fixed first, delivered later