Midterm Exam Review

Software and Systems Engineering

CSC3024, Spring 2012

Midterm Exam Study Guide

General Format and Scope

Format.
The exam will consist primarily of short answer questions along with a some true/false or multiple choice questions.
Scope. The exam will focus on the lecture notes and in-class discussion. This is backed-up by your readings in Sommerville as well as your preparation and learning experiences from the team project.
NOTE: this review sheet is not a substitute for looking at the notes or reading the text!

Specific Materials Covered

1. Reading from the text chapters 1 though 9.

2. User Interface readings

3. Class notes and slides.


Topic Review

Software Engineering Scope

Software engineering is multi-person construction of multi-version software.

Software costs and problems: typically delivered late, over budget, and faulty.

Software engineering attempts to provide the tools to consistently fashion software to solve appropriate problems in an orderly, predictable manner.

Software development requires a broad range of skills; systems are too complex to be developed by an individual.

Requirements must address all of user needs; design decomposition is critical to mastering complexity.

Testing and maintenance costs are outrageously high, addressed in part by lifecycle validation, test planning, and anticipating change.

Software is unique.


Software Qualities

Product Qualities

   

Correctness

external

the software behaves according to requirements

Reliability

external

users feel they can depend on the software

Robustness

external

the software behaves "reasonably" even in unanticipated circumstances

Performance

external

the software uses available resources economically

Usability

external

the software is well suited to the circumstances of the end users

Understandability

internal

the software can by easily analyzed by people who didn't write it

Verifiability

internal

the satisfaction of particular properties of the software can be easily determined

Maintainability

internal

the software is easy to change to fix faults or add new functionality

Reparability

internal

faults in the software can be corrected with minimal effort

Evolvability

internal

new functionality can be added easily

Reusability

internal

the software can serve as part of a new system

Portability

internal

the software can run in new environments with little or no effort.

Interoperability

internal

the software can coexist and cooperate with other systems

Process Qualities

   

Productivity

external

performance of the development process

Timeliness

external

ability to deliver software on time

Visibility

internal

all steps and current status are documented clearly and can be easily accessed


Software Production

Basic phases: requirements analysis and specification, architectural and detailed design, implementation and integration, operation and maintenance.

Software lifecycle consists of phases, intermediate products, and reviews.

Build and Fix approach is not a lifecycle model.

The process of prototyping involves the following steps

  1. Identify basic requirements Determine basic requirements including the input and output information desired. Details, such as security, can typically be ignored.
  2. Develop Initial Prototype The initial prototype is developed that includes only user interfaces.
  3. Review The customers, including end-users, examine the prototype and provide feedback on additions or changes.
  4. Revise and Enhance the Prototype Using the feedback both the specifications and the prototype can be improved. Negotiation about what is within the scope of the contract/product may be necessary. If changes are introduced then a repeat of steps #3 and #4 may be needed.
Prototyping Benefits
  • Improved system usability.
  • A closer match to users’ real needs.
  • Improved design quality.
  • Improved maintainability.
  • Reduced development effort.
Types of prototypes- know!

Incremental Development and Delivery

  • Incremental development
    • Develop the system in increments and evaluate each increment before proceeding to the development of the next increment;
    • Normal approach used in agile methods;
    • Evaluation done by user/customer proxy.
  • Incremental delivery
    • Deploy an increment for use by end-users;
    • More realistic evaluation about practical use of software;
    • Difficult to implement for replacement systems as increments have less functionality than the system being replaced.
Incremental Delivery Benefits
  • Customer value can be delivered with each increment so system functionality is available earlier.
  • Early increments act as a prototype to help elicit requirements for later increments.
  • Lower risk of overall project failure.
  • The highest priority system services tend to receive the most testing.
Boehm’s spiral model of the software process
  • Know and beable to explain
Stagewise and Waterfall lifecycle models develop software in successive phases.

The spiral model is a metamodel guided by risk assessment.

A software process is a device for producing a software product.


Agile Software Development

  • What is it?
  • How does it work?
  • What methods are used?
  • What are the principals of agile methods?
  • When should, and shouldn't, it be used?
  • Problems?
  • XP - Extreme Programming.
    • What is it?
    • What are the practices?
    • Problems?
  • What is Pair Programming?
    • Who are the people?
    • What are the processes?
    • What are the benefits, problems?


Lifecycle V&V

Validation is comparison to [informal] user needs, while verification is comparison to a produced [formal] specification.

Test planning must determine what properties should be tested, who should perform the testing, when does testing stop.

Testing should be done in phases that roughly correspond to the development phases, where planning for each testing phase should be done in the corresponding development phase. Testing phases are performed in reverse order of the development phases.

Lifecycle reviews can be done at any phase. Walkthroughs are a two-step process, while inspections are a five-step process.

Cleanroom is the ultimate lifecycle review process.


Software Processes

Many different software processes but all involve:

  • Specification – defining what the system should do;
  • Design and implementation – defining the organization of the system and implementing the system;
  • Validation – checking that it does what the customer wants;
  • Evolution – changing the system in response to changing customer needs.


Processes can be plan driven or agile

Models

  • The waterfall model
  • Incremental development
  • Reuse-oriented software engineering
Design Activies
  • Architectural design
  • Interface design
  • Component design
  • Database design
Prototyping and Scenarios

Prototyping and scenario building are knowledge acquisition activities.

Both are mockups of the eventual software product, which help to ensure that the users and client play an active role in requirements analysis so that their needs are elicited.

A rapid prototype is a hastily coded, executable software mockup that exhibits some key functionality.

Scenarios are typically user interaction mockups, a series of diagrams depicting a series of events and the reaction of the system.

Mockups demonstrate the behavior of the system in a way eventual users can comprehend.

Mockups in requirements analysis address completeness, adequacy, usability, consistency, feasibility.

Mockups are especially useful in exploratory programming and prototyping software lifecycle models.

Prototyping can be done throughout the lifecycle: from analyzing and acquiring requirements knowledge, to take the place of the requirements specification, to evaluating design alternatives, to providing an initial implementation that is refined. Which are good uses?

Prototyping tools include: executable specification languages, very high-level languages, 4th generation languages, graphical user interface toolkits, domain-specific application generators.

Cognitive Walkthroughs help to "test" the usability of an interactive system by evaluating the mockup on sample human-computer interactions. The focus is on the tasks and interface and analyzing usability attributes such as learnability, efficiency, memorizability, error recovery, user satisfaction.


Requirements Analysis and Specification

Requirements analysis addresses client/users' needs, considers both functional and non-functional requirements, and develops a contract between client and developer.

Requirements state what and not how. A requirements specification should be abstract, complete, consistent, unambiguous, precise, feasible, even, modifiable, reference tool. Each of these present common problems in requirements specification.

Requirements specification components (purposes, desirable characteristics)

  • description/background
  • functional
  • environmental
  • performance
  • accuracy
  • robustness
  • security
  • safety
  • timing
Requirements analysis techniques range from interviews to system modeling; the important thing to remember is that the client is in charge while the developer learns and organizes.

Acceptance test plans are developed during requirements analysis; system test plans, which are more comprehensive, are developed during refinement of the requirements specification.

Requirements Specification Models

System models enable understanding by abstractly describing the system in a notation the user can also comprehend.

Structured Systems Analysis is a structured (semi-formal), graphical technique with a functional perspective based on hierarchical dataflow diagrams.

Entity-Relationship Models are a structured (semi-formal), graphical technique with a data orientation that is often used to supplement dataflow diagrams.

Finite state machines are a [semi-]formal, graphical technique based on specifying states and transitions between states.

Petri Nets are a formal, graphical technique that provides the capability to specify synchronization and timing for concurrent and real-time systems.

Use Cases are descriptions of a small task the user (actor) would do when using the system, often corresponding ot a feature of the system.

Functional and non-functional requirements

  • Functional requirements
  • Non-functional requirements
  • Domain requirements
Metrics for specifying nonfunctional requirements
  • What are they?
  • What do they mean?
A spiral view of the requirements engineering process
  • What is it?
  • What is it's purpose?
Problems of requirements analysis
  • What are they?
  • Why aere they problems?


System Models
  • Context models
  • Interaction models
  • Structural models
  • Behavioral models
  • Model-driven engineering
Know the models above.

What is the importance of establishing system boundries?

Why have models?

UML Diagrams

  • Activity diagrams, which show the activities involved in a process or in data processing .
  • Use case diagrams, which show the interactions between a system and its environment.
  • Sequence diagrams, which show interactions between actors and the system and between system components.
  • Class diagrams, which show the object classes in the system and the associations between these classes.
  • State diagrams, which show how the system reacts to internal and external events.
Architectural Design
  • What is the purpose of architectureal design?
  • What are the major architectureal design decisions.
  • What are the system characteristics of architecture?
  • What is an architectural pattern? Why are they used? What are the major components? Some of the main patterns?
  • What ar ethe major Application architectures? What are the advantages and characteristics of each?

Design and Implementation
  • What are the common process stages or the design adn implementaiton process?
  • What is reuse, and what are the factors in deciding to use this method?

Software Testing
  • What are the major Program testing goals?
  • What is the difference between Validation and defect testing?
  • What is the difference between Verification and validation?
  • Inspections and testing: What is the purpose, and advages of each?

Software Evolution
  • What is the definitions of Evolution, Servicing and Phase-out
  • Why is Software change is inevitable?
  • What is the reason for the Importance of evolution?
  • What is the relationship between Agile methods and evolution?
  • What are some of the Handover problems?
  • What ar ethe Maintenance cost factors?
  • Whats is System re-engineering and what it's advantages and processes?
Topic revision: r5 - 2012-03-14 - JimSkon
 
This site is powered by the TWiki collaboration platformCopyright &© by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback