Title: Software Engineering Practice: A Generic View
1Software Engineering Practice A Generic View
- INTRODUCTION
- Practice is the collection of concepts ,
principles, methods, and tools that a software
engineer calls upon a daily basis. - The Essence of Practice
- Understand the problem (Communication and
analysis) - Plan a solution (modeling and software design)
- Carry out the plan (code generation)
- Examine the result for accuracy (testing and
quality assurance)
2Software Engineering Practice A Generic View
- UNDERSTANDING THE PROBLEM
- Who has a stake in the solution to the problem?
- What are the unknowns?
- Can the problems be compartmentalized?
- Can the problem be represented graphically?
3Software Engineering Practice A Generic View
- PLAN THE SOLUTION
- Have you seen similar problems before?
- Has a similar problem been solved?
- Can subproblems be defined?
- Can you represent a solution in a manner that
leads to an effective implementation?
4Software Engineering Practice A Generic View
- CARRY OUT THE PLAN
- Does the solution conform?
- Is each component part of the solution probably
correct?
5Software Engineering Practice A Generic View
- EXAMINE THE RESULT
- Is it possible to test each component part of the
solution? - Does the solution produce results that conform to
the data, function, features, and behavior that
are required?
6Software Engineering Practice A Generic View
- CORE PRINCIPLES
- The reason it all exists. Provide value to the
user. - KISS (Keep It Simple, Stupid!)
- Maintain the vision.
- What you rpoduce, someone else will have to
consume. (implement knowing somone else will have
to understand what you are doing) - Be open to the future
- Plan ahead for reuse
- Think!
7Software Engineering Practice A Generic View
- COMMUNICATION PRACTICES
- Listen
- Prepare before you communicate
- Someone should facilitate the activity
- Face to Face communication is best
- Take notes and document decisions
- Strive for collaborations
- Stay focused
- If something is unclear, draw a picture
- Once you agree, move on. If you cant agree, move
on. - Negotiation must be win win.
8Software Engineering Practice A Generic View
- PLANNING PRACTICE
- Understand the scope
- Involve the customer in planning
- Recognize that planning is iterative
- Estimate based on what you know
- Consider the risk
- Be realistic.
- Define how you intend to ensure quality
- Describe how you intend to accommodate change.
9Software Engineering Practice A Generic View
- MODELING PRACTICE
- The domain must be understood
- Functions of the software must be defined
- Behavior of software must be represented
- The models that depict information, function, and
behavior must be partitioned in a manner that
uncovers detail in a layered fashion. - Analysis task should move from essential
information toward implementation detail.
10Software Engineering Practice A Generic View
- MODELING PRACTICE
- Design should be traceable.
- Consider the architecture of the system to be
built. - Design of data is as important as processing
functions. - Interfaces must be designed with
- User interfaces should be tuned to needs of the
end-user. - Component level design should be functionally
independent Single mindedness - Components should be loosely coupled
- Design representations should be easily
understandable contradicts formal mathematical - Design is iterative
11Software Engineering Practice A Generic View
- CODING PRINCIPLES
- PREPARATION
- Understand the problem
- Understand basic design principles and concepts
- Pick a programming language that meets the needs
of the software being built - Select a programming environment that makes you
work easier - Create sets of unit tests
12Software Engineering Practice A Generic View
- CODING PRINCIPLES
- CODING
- Select data structure that meet the needs of
design - Keep conditional logic as simple as possible
- Use meaningful variable names
- Follow local coding standards
- Write code that is self-documenting,
- Create a visual layout, i.e. indenting, better
have a tool do it for you
13Software Engineering Practice A Generic View
- CODING PRINCIPLES
- VALIDATION
- Conduct a code walkthrough when appropriate
- Perform unit tests, correct errors you uncovered
- Refactor code
14Software Engineering Practice A Generic View
- TESTING PRINCIPLES
- Testing is a process of executing a program with
the intent of finding an error - A good test case is one that has a high
probability of finding as-yet undiscovered error - A successful test case is one that uncovers an
as-yet undiscovered error. - PRINCIPLES
- All tests should be traceable to customer
requirements - Test should be planned long before testing begins
- 80 of all errors uncovered during testing is
traceable to 20 percent of all program components - Testing should begin in the small and progress
toward testing in the large - Exhaustive testing is not possible.
15Software Engineering Practice A Generic View
- DEPLOYMENT PRINCIPLES
- Customer expectations for the software must be
managed - A complete delivery package should be assembled
and tested. - A support regime must be established before the
software is delivered - Appropriate instructional material must be
provided to end-users. - Buggy software should be fixed first, delivered
later.