Software Engineering - PowerPoint PPT Presentation

About This Presentation
Title:

Software Engineering

Description:

Originally shared for: mashhoood.webs.com Lecture 6 Software Engineering Saeed Akhtar The University of Lahore – PowerPoint PPT presentation

Number of Views:189
Avg rating:3.0/5.0
Slides: 20
Provided by: freew172
Category:

less

Transcript and Presenter's Notes

Title: Software Engineering


1
Originally shared for mashhoood.webs.com
Lecture 6
  • Software Engineering

Saeed Akhtar
The University of Lahore
2
Review of Last Lecture
  • Working of Agile Model?
  • Pros and cons of Agile Model?
  • When to use Agile?
  • Difference from other Models?

3
Software Engineering Practices
4
The Essence of Practice
  • George Polya, in a book (about problem solving),
    describes the essence of software engineering
    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).

5
Core Software Engineering Principles
  • The reason it all exists Provide value to the
    customer and the user
  • KISSkeep it simple, stupid!
  • Does not mean quick and dirty
  • Maintain the product and project vision
  • What you produce, others will consume
  • Be open to the future
  • Plan ahead for reuse
  • Think! (before action)

6
Communication Practice
  • Principles
  • Listen (instead of talking too much)
  • Prepare before you communicate
  • Understand the business domain
  • Prepare an agenda
  • Facilitate the communication, there should be a
    leader
  • Ensure moving in a productive direction
  • Mediate any conflict
  • Ensure other principles are followed
  • Face-to-face is best
  • Take notes and document decisions

7
Communication Practice Principles Contd
  • Collaborate with the customer
  • Stay focused, modularize your discussion
    (conclude each issue)
  • Draw pictures when things are unclear
  • Move on
  • Once you agree to something
  • If you cant agree
  • Something is unclear and cannot be resolved at
    the moment
  • 10. Negotiation works best when both parties win
    (not a contest or game).
  • Compromise when necessary

8
Planning Practice
  • Principles
  • Understand the project scope
  • Scope clears your destination
  • Involve the customer (and other stakeholders)
  • Customer defines priorities and constraints
  • Negotiate order of delivery, timelines,
  • Recognize that planning is iterative (revised
    based on feedback)
  • Estimate based on what you know
  • Provide an indication of effort, cost, and task
    duration (maybe unreliable)
  • Consider risk

9
Planning Principles Contd
  • 6. Be realistic
  • Noise, change, mistakes, omissions, ambiguity
  • 7. Adjust granularity as you plan (level of
    details)
  • 8. Define how quality will be achieved (formal
    technical reviews, pair programming)
  • 9. Define how youll accommodate changes
  • 10. Track what youve planned and make adjustment

10
Planning Practices
  • Ask Boehms questions
  • Why is the system being developed?
  • Justify the expenditure of people, time, and
    money
  • What will be done?
  • Identify functionality
  • When will it be accomplished?
  • Workflow, timeline, milestones
  • Who is responsible for a function?
  • Where are they located (organizationally)?
  • How will the job be done technically and
    managerially?
  • How much of each resource is needed? (estimation)

11
Analysis Modeling Practice
  • We create models to gain a better understanding
    of the actual entity to be built
  • Analysis models represent the customer
    requirements by depicting the software in three
    different domains the information domain, the
    functional domain, and the behavioral domain.
  • Design models represent characteristics of the
    software that help practitioners to construct it
    effectively the architecture, the user
    interface, and component-level detail.

12
Analysis Modeling Practice
  • Analysis modeling principles
  • Represent the information domain
  • Input data from end-users, other systems, or
    external devices
  • Output data via the user interface, network
    interface, reports, graphics,
  • The data stores
  • Represent software functions
  • Different levels of abstraction
  • Represent software behavior
  • As a consequence of external events
  • Partition these representations
  • Partitioning divide and conquer
  • Layered or hierarchical
  • Move from essence toward implementation

13
Design Modeling Principles
  • Principles
  • Design must be traceable to the analysis model
  • Always consider architecture
  • Focus on the design of data
  • Interfaces (both user and internal) must be
    designed
  • Components should exhibit functional independence
  • Components should be loosely coupled
  • Design representation should be easily understood
  • The design model should be developed iteratively

14
Construction Practices
  • Preparation principles Before you write one line
    of code, be sure you
  • Understand of the problem youre trying to solve
    (see communication and modeling)
  • Understand basic design principles and concepts.
  • Pick a programming language that meets the needs
    of the software to be built and the environment
    in which it will operate.
  • Select a programming environment that provides
    tools that will make your work easier.
  • Create a set of unit tests that will be applied
    once the component you code is completed.

15
Construction Practices
  • Coding principles As you begin writing code, be
    sure you
  • Constrain your algorithms by following structured
    programming practice.
  • Select data structures that will meet the needs
    of the design.
  • Understand the software architecture and create
    interfaces that are consistent with it.
  • Keep conditional logic as simple as possible.
  • Create nested loops in a way that makes them
    easily testable.
  • Select meaningful variable names and follow other
    local coding standards.
  • Write code that is self-documenting.

16
Construction Practices
  • Validation Principles
  • After youve completed your first coding pass, be
    sure you
  • Conduct a code walkthrough when appropriate.
  • Perform unit tests and correct errors youve
    uncovered.
  • Refactor the code.

17
Construction Practices
  • Testing Principles
  • All tests should be traceable to requirements
  • Tests should be planned
  • Testing begins in the small and moves toward
    in the large

18
Deployment Practices
  • Principles
  • Manage customer expectations for each increment
  • A complete delivery package should be assembled
    and tested
  • Instructional materials must be provided to
    end-users
  • Buggy software should be fixed first, delivered
    later

19
Thank You
Write a Comment
User Comments (0)
About PowerShow.com