Software Engineering Qualities - Computer Science, Engineering Design - Lecture Slides, Slides of Computer Science

Some concept of Computer Science are Unified Modeling Language, Software Verification, Software Engineering Qualities, Software Architecture Examples, Maintaining Security, Distributed Object Computing, Biomedical Informatics. Main points of this lecture are: Software Engineering Qualities, Malleable Product, Machine Ratio, Embedded Systems, Types of Software Qualities, Software Quality Assurance, Finished Product, Correctness Software Quality, Reliability Software Quality

Typology: Slides

2012/2013

Uploaded on 05/15/2013

raaj
raaj 🇮🇳

4.6

(8)

92 documents

1 / 32

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
Chapter 2: SWE Qualities
Docsity.com
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20

Partial preview of the text

Download Software Engineering Qualities - Computer Science, Engineering Design - Lecture Slides and more Slides Computer Science in PDF only on Docsity!

Chapter 2: SWE Qualities

Software Engineering Qualities

  • Software is a Malleable Product that is Human

Intensive (High People to Machine Ratio)

  • Software Engineering Qualities
    • Correctness and Reliability
    • Robustness and Performance
    • User Friendliness and Verifiability
    • Maintenance and Reusability
    • Repairability and Evolvability
    • Portability, Understandability, and Interoperability
    • Productivity, Timeliness, and Visibility
  • Requirements for Information, Real-Time, Distributed,

and Embedded Systems

The Correctness Software Quality

  • Functional Correctness: Software Behaves According to Requirements Specification
  • Assessing Correctness - Potential Problems
    • Assumes Requirements Specifications are Available and Up-to-Date
    • Assumes Correctness Testing is Possible
    • Assumes Mathematical Properties can be Established Between Software and Specs
  • Correctness - Absolute Quality (Yes/No)
  • Correctness in Practice
    • Focus on Components at Varying Levels
    • Addressed via Public Interface, Private Implementation, Testing of Classes/Components
    • Components in Distributed Apps

The Reliability Software Quality

  • Software Performs as User Expects
  • User Can Depend on Software
  • Different Reliability Requirements per Domain
    • Computer Games: Low?
    • Flight Control Software (Mars): High?
    • Banking, Insurance, Stocks, …: High?
  • Correct Software is Reliable but Reliable Software May Not be Correct, that is …
  • Reliability in Practice:
    • Focus on Reliability of Components (Classes) and their Composition into Systems
    • Critical for Commercial Success of Consumer Products and Services

Correctness

Reliability

The Performance Software Quality

  • Performance is Equated with Efficiency, Scalability,

Reliability, User-Acceptance, etc.

  • Growing Problem Impacts Strongly on Software
    • Varied OS Platforms (NT, Win2K/XP, Solaris)
    • Different HW Capabilities (Memory Size, 32 vs. 64 bit, Disk Capacity, Display, etc.)
  • Measurement vs. Queuing Analysis vs. Simulation
  • Impact from Specification through Delivery
  • Performance in Practice
    • Identify Key Classes/Components with Hard Performance Constraints - Embedded Applications (Elevators, Avionics, etc.)
    • Versions of Classes/Components for OS/HW Platforms?

The Performance Software Quality

  • Measurement: Measure Actual Performance of Working

Systems

  • Analysis: Build a Model and Analyze
    • General Understanding of System
    • Queueing Models During Specification/Design
    • Redo Queueing Models After Implementation by Providing Hard Numbers to Fine-Tune
  • Simulation: Model Simulates Actual System
    • Predict Exact Performance of Components
    • Expensive and Time Consuming to Build
    • Yields an Accurate Estimate
  • System Performance Must Be Addressed from Day One

Throughout Lifetime

Maintenance of Web Applications

  • Three Types of Maintenance
    • Corrective, Adaptive, and Perfective
    • Need to have Strategy for Making Changes
  • Web Apps Typically Developed in Staged Setting
    • Development/Testing Environment Web + Application Server on Intranet
    • Actual Web + Application Servers on Internet
    • May be Replicated Web/Application Pairs that are Geographically Separated
  • Changes/Testing on Intranet
  • Migration to Internet in a Staged Manner for Upgrades
  • Note:
    • Maintenance Requires Version Management
    • Source Code Control System

The Reusability Software Quality

  • Strive for Domain-and-Organization Specific Reuse
  • Products Most Likely to be Developed in Future
  • Focused on Software Components
    • Scientific Math and String Libraries
    • Windowing and GUI Building Blocks
    • Java APIs for Enterprise, Embedded, etc.
  • Reusability Evolving to Larger Components (e.g., Java Beans) and Subsystems
  • Reusability in Practice
    • In OO, Achieved via Inheritance and Generics
    • Defined/Controlled by Designers and Developers
    • Components Play a Major Role in Reuse and in Distributed/Web Applications - Reuse “Shopping Cart, Checkout Procedures, etc.”

The Evolvability Software Quality

  • Field of Dreams: If you Build it, it Will Change!
  • Key Evolvability Issues
    • Ease of Modifications - Add New Features and Change Existing Features
    • Function of System Size
    • Modularization vs. Monolithic
  • Over Time, Evolvability Reduces as Subsequent Versions of Same Software are Released
  • Reach of Limit of Change w.r.t. Look-and-Feel
  • Evolvability in Practice
    • Achieved via Inheritance and Polymorphism
    • Public Interface Must Remain Unchanged!
    • Adding Capabilities and Features to Web and Distributed Applications the Norm

The Portability Software Quality

  • Software Works on Different Platforms
  • Origins and Popularity of C and Unix
  • Hard in Practice - All C++’s Not Created Equal
    • Borland C++ vs. Visual C++ vs. Sun C++
    • Java – Compiler Addons and Competing Versions
    • 32 vs. 64 bits
    • Core Language Same? (Operator Precedence)
    • Compiler/Product Specific Libraries
  • Newer Languages (Ada95, Java) Stress Ability to Port without Rewriting Any Code
  • Portability in Practice
    • Isolate Specifics into Dedicated Classes
    • Portability Transcends D & D Paradigm
    • Web – App works in Multiple Browsers/Versions

The Interoperability Software Quality

  • Enterprise Computing: The Problem of Today and Future!
  • New Products Must Coexist and Cooperate with Legacy,

COTS, Databases, etc.

  • Success in Interoperability Traced to …
    • Programming Interface for COTS/Legacy
    • DCOM/OLE, CORBA, DCE, JINI, .NET
    • Emerging Languages: Java, Active-X, C#
  • Open Systems, Standards, Multiple Vendors, etc.
  • Interoperability in Practice
    • Focus on Public Interface Concept
    • Interoperability Transcends D & D Paradigm
    • Norm for Web and Distributed Applications

Typical Process Qualities

  • Process Qualities Involve the Steps and Actions that are

Integral to Software Development

  • Productivity
    • Denotes the Efficiency and Performance of Software
    • A Measurable Quality (Empirical)
  • Timeliness
    • Ability to Deliver a Product on Time
    • Meeting Deadlines and High Quality Products
  • Visibility
    • All of Its Steps and Current Status are Documented Clearly
    • Open Software Process (All Stakeholders)

The Timeliness Software Quality

  • Meeting Deadlines and Market Demands
  • Requires Careful Scheduling, Accurate Estimation, and Clear Milestones
  • Impacted by
    • Changing User Requirements
    • Skills (or Lack Thereof) of SW Engineers
  • Incremental Delivery
    • Product Released in Stages
    • Complete and Incremental Requirements
  • Timeliness in Practice
    • Promotes Increments and Components
    • Classes Facilitate Evolution, Testing and Integration
    • For All Applications (Centralized to Distributed)

Timeliness: Visual Description of

Mismatch

  • Often the Development Process Does Not

Follow the Evolution of User Requirements

  • A Mismatch Occurs Between User

Requirements And Status of the Product Function

t 0 t 1 t^2 t 3 t 4

User needs Actual system capabilities

Time