Software Engineering Principles - PowerPoint PPT Presentation

Loading...

PPT – Software Engineering Principles PowerPoint presentation | free to view - id: 78d797-NTk4M



Loading


The Adobe Flash plugin is needed to view this content

Get the plugin now

View by Category
About This Presentation
Title:

Software Engineering Principles

Description:

Software Engineering Principles Principles form the basis of methods, techniques, methodologies and tools Seven important principles that may be used in all phases of ... – PowerPoint PPT presentation

Number of Views:143
Avg rating:3.0/5.0
Slides: 28
Provided by: Roger372
Category:

less

Write a Comment
User Comments (0)
Transcript and Presenter's Notes

Title: Software Engineering Principles


1
Software Engineering Principles
  • Principles form the basis of methods, techniques,
    methodologies and tools
  • Seven important principles that may be used in
    all phases of software development
  • Apply to the software product as well as the
    development process

2
Key principles
  • Rigor and formality
  • Separation of concerns
  • Modularity
  • Abstraction
  • Anticipation of change
  • Generality
  • Incrementally

3
Rigor and formality
  • Software engineering is a creative design
    activity, BUT It must be practiced systematically
  • Rigor is a necessary complement to creativity
    that increases our confidence in our developments
  • Formality is rigor at the highest degree

4
Examples Rigor and formality
  • Product
  • Formal-Mathematical analysis of program
    correctness
  • Rigorous-Systematic test data derivation
  • Process
  • Rigorous- detailed documentation of each
    development step in waterfall model
  • Formal- automated transformational process to
    derive program from formal specifications

5
Separation of concerns
  • To dominate complexity, separate the issues to
    concentrate on one at a time
  • "Divide conquer"
  • Supports parallelization of efforts and
    separation of responsibilities

6
Examples
  • Process Go through phases one after the other as
    in waterfall Model
  • Do separation of concerns by separating
    activities with respect to time
  • Product Keep different types of product
    requirements separate
  • Functionality discussed separately from the
    performance constraints

7
Modularity
  • A complex system may be divided into simpler
    pieces called modules
  • A system that is composed of modules is called
    modular
  • Supports application of separation of concerns
  • when dealing with a module we can ignore
    details of other modules

8
Modularity Cohesion and coupling
  • Each module should be highly cohesive
  • module understandable as a meaningful unit
  • Components of a module are closely related to
  • one another
  • Modules should exhibit low coupling
  • modules have low interactions with others
  • understandable separately

9
An Example
10
Abstraction
  • Identify the important aspects of a phenomenon
    and ignore its details
  • Special case of separation of concerns
  • The type of abstraction to apply depends on
    purpose
  • Example the user interface of a watch (its
    buttons) abstracts from the watch's internals for
    the purpose of setting time other abstractions
    needed to support repair

11
Anticipation of change
  • Ability to support software evolution requires
    anticipating
  • potential future changes
  • It is the basis for software evolvability

12
Generality
  • While solving a problem, try to discover if it is
    an instance of a more general problem whose
    solution can
  • be reused in other cases
  • Sometimes a general problem is easier to solve
    than a special case
  • Carefully balance generality against performance
    and cost

13
Incrementality
  • Process proceeds in a stepwise fashion
    (increments)
  • Examples (process)
  • deliver subsets of a system early to get early
    feedback from expected users, then add new
    features incrementally
  • deal first with functionality, then turn to
    performance

14
Process A Generic View
15
A Layered Technology
Software Engineering
tools
methods
process model
a quality focus
16
A Process Framework
Process framework Framework activities work
tasks work products milestones deliverables QA
checkpoints Umbrella Activities
17
Framework Activities
  • Communication
  • Planning
  • Modeling
  • Analysis of requirements
  • Design
  • Construction
  • Code generation
  • Testing
  • Deployment

18
Umbrella Activities
  • Software project management
  • Formal technical reviews
  • Software quality assurance
  • Software configuration management
  • Work product preparation and production
  • Reusability management
  • Measurement
  • Risk management

19
The Process Model Adaptability
  • the framework activities will always be applied
    on every project ... BUT
  • the tasks (and degree of rigor) for each activity
    will vary based on
  • the type of project
  • characteristics of the project
  • common sense judgment concurrence of the project
    team

20
The CMMI
  • Capability Maturity Model Integration (CMMI)
    developed by The Software Engineering Institute
    (SEI)
  • The CMMI defines each process area in terms of
    specific goals and the specific practices
    required to achieve these goals.
  • Specific goals establish the characteristics
    that must exist if the activities implied by a
    process area are to be effective.
  • Specific practices refine a goal into a set of
    process-related activities.

21
The CMMI
  • Level 0 Incomplete - Process goals not satisfied
  • Level 1 Performed - Process goals satisfied
  • Level 2 Managed - Process areas conforms to
    organizationally defined policy, resources are
    available, work tasks are monitored
  • Level 3 Defined - Tailored according to the
    organizations standard processes
  • Level 4 Quantitatively managed - Quantitative
    assessment
  • Level 5 Optimized - Processes are optimized

22
Process Patterns
  • Process patterns define a set of activities,
    actions, work tasks, work products and/or related
    behaviors
  • A template is used to define a pattern
  • Typical examples
  • Customer communication (a process activity)
  • Analysis (an action)
  • Requirements gathering (a process task)
  • Reviewing a work product (a process task)
  • Design model (a work product)

23
Process Assessment
  • The process should be assessed to ensure that it
    meets a set of basic process criteria that have
    been shown to be essential for a successful
    software engineering.
  • Many different assessment options are available
  • SCAMPI
  • CBA IPI
  • SPICE
  • ISO 90012000

24
Assessment and Improvement
25
Personal Software Process (PSP)
  • Recommends five framework activities
  • Planning
  • High-level design
  • High-level design review
  • Development
  • Postmortem
  • stresses the need for each software engineer to
    identify errors early and as important, to
    understand the types of errors

26
Team Software Process (TSP)
  • Each project is launched using a script that
    defines the tasks to be accomplished
  • Teams are self-directed
  • Measurement is encouraged
  • Measures are analyzed with the intent of
    improving the team process

27
The Primary Goal of Any Software Process High
Quality
Remember High quality project
timeliness Why? Less rework!
About PowerShow.com