Software Engineering

What are the four attributes of good software

1. Dependability
2. Efficiency
3. Acceptability
4. Maintainability

What are the three critical software systems

1. Safety
2. Mission
3. Business

What are the three aspects of software failure

1. Over budget
2. Late
3. Does not satisfy user needs or expectations

Define Software Engineering

Software engineering is an engineering discipline which is concerned with all aspects of software production

What is a software process

A set of activities whose goal is the development or evolution of software

What is a software process model

A simplified representation of a software process, presented from a specific perspective

What are three generic software process models

1. Waterfall
2. Iterative development
3. Component-based software engineering

Phases in the Waterfall life cycle of a software product

1. Requirement Engineering
2. System Design
3. Implementation
4. System testing
5. Maintenance

What are the seven principles of software engineering

1. Manage using a phased life-cycle plan
2. Perform continuous validation
3. Maintain disciplined product control
4. Use modern programming practices
5. Maintain clear accountability for results
6. Use better and fewer people
7. Maintain a commitment to i

What are two components of the first software engineering principle

1. Chose Software Development Life Cycle model
2. Develope project plan

What is a key component of the third software engineering principle

Configuration management because of changing requirements

What is the formula for Interpersonal Communication Overhead

(n(n-1))/2 ex (4(4-1))/2 = 6

What are three different ways to describe waterfall model

Heavyweight Model (Process oriented)
Plan Driven Model (Must have Plan)
Document Driven Model (Each phase produces documentation)

What are the advantages of the Waterfall model

1. Straight forward
2. Find problems earlier in the process
3. Documentation
4. Best for larger projects over 50 team members

What are the steps of the V-model

1 requirement ----------7 Acceptance testing
2Global design -------6 Integrations testing
3Det Design ----------5 Unit testing
4 Coding

What are four different types of Lightweight Software development models

1. Prototyping
2. Incremental Development
3. RAD, DSDM
4. Extreme Programming

What are some key differences with the Lightweight Software Model as compared to the Heavyweight Software Model

1. Customer Involved
2. Less Documentation
3. Faster product delivery
4. Changes accommodated
5. Flexible structure control

What are some advantages of the Prototyping Model

1. Getting Customer feedback
2. Allows the creation and testing of parts of a product before the entire product
3. Production quality is not required

What are the steps for Prototyping Model

1. Requirements engineering (For entire product)
2. Design (Prototype)
3. Implementation (Prototype)
4. testing (prototype developed)

What are the three types of Prototyping Development Models

1. Throwaway
2. Evolutionary
3. Incremental Development

Define Throwaway Prototyping Model

Product prototypes is thrown away after development

What are the key aspects of the Incremental Development Model

1. System is delivered in small increments
2. Waterfall Model is employed
3. User is closely involved
4. Incremental development prevents over-functionality

What is a very important deliverable of the Incremental Model

Must have prioritization of the requirements.

What is the difference between requirements and design phase

Requirements are what we want done, and design is how are we going to achieve it

What are the main steps for Requirements Engineering

Elicitation
Specification
Validation
Negotiation

What is meant by Elicitation

Understanding the problem

What is meant by specification

Describing the problem

What is meant by validation

Agreeing on the nature of the problem

What is meant by negotiation

Agreeing on the boundaries of the problem

What are characteristics of a good SRS

unambiguous
Consistent
Correct
Complete
Verifiable
Testable
Modifiable

What does UML stand for

Uniform Modeling Language

What are the classic modeling techniques

Entity relationship Modeling
Finite state machines
Data flow diagrams
CRC cards

What is another name for UML Diagrams

Object oriented modeling

What does an ER diagram consist of

Entity
Entity Types
Attribute values
Attribute
Relationship

A rectangle in a ER diagram signifies

Entitiy type

An elispse in an ER diagram signifies

Attributes

A diamond in an ER diagram signifies

Relationship

Cardinality is specified by

{0..1}

Modulality is specified by

{0 ... 10}

What does this cardinality symbol mean
{0...N}

0 to many

What does this cardinality symbol mean
{1...1}

1 to 1

What does this cardinality symbol mean ...

...

What is finite state machine

Models of a system in terms of a finite number of states and transitions between those states

How are state represented in a State transitions diagram

bubbles

How is the starting point represented in state transition diagram

Solid Bubble

How is the end point represented in state transition diagram

Double circles

How are transitions from one state to another represented on a state transitions diagram

arcs

How is an external entity represented in a work context diagram

a rectangle

How is an process represented in a work context diagram

a circle

How is an data flow represented in a work context diagram

a line an arrow ----->

How is a data store represented in a work context diagram

two solid straight line
-----------
-----------

What are some key challenges to software engineering

Heterogeneity
Delivery
Trust

Define Heterogeneity

Developing techniques for building software that can cope with heterogeneous platforms and execution environments

Define Deliverability

Developing techniques that lead to faster delivery of software

Define Trust

Developing techniques that demonstrate that software can be trusted by its users

Why is it important to maintain product control

As these changes impact the system development, it is very easy for different
versions of the documentation and the code to proliferate.

Why is it important to perform continuous validation

To prevent detecting and correcting software problems until late in the
project

Why is it it important to manage using a phased life-cycle plan

Because roughly 50% of projects fail due to poor planning

What are the advantages modern programming practices

More visibility into the software development process
Contributes greatly to getting errors out early
Produces much more understandable and maintainable code
Makes many other software jobs easier, like integration and testing.

What are some examples of MPP

Object oriented
Top Down Structured Programming

Why is it important to maintain clear accountability for results

Each individual on the project team should have a clear statement of the results for which he or his group are accountable, and a clear understanding that his future rewards depend on how well he does in producing those
results.

Why is it important to use few and better people on a project

Doing so reduces the communications overhead on a project by getting the job done with fewer, more productive performers

Why should you maintain a commitment to improve the process

Doing so verifies that the particular form of the principles adopted by an organization is indeed the best match for its particular needs and priorities.

What are the key aspects of the RAD Model

Fixed time frames within which activities are done
Time frame is decided upon first
The use of Joint Requirements Planning (JRP) and Joint Application Design (JAD)
Requirements prioritization through a triage
Development in a SWAT team

What are the four phases of the RAD model

Requirements Planning;
User Design;
Rapid Construction;
Cutover

When Should RAD be used

RAD should be used when there is a need to create a system that can be modularized in 2-3 months of time, and resource cost is not a priority

What are the key aspects of Dynamic Systems Development Method. (DSDM)

Active user involvement
Teams must be empowered to make decisions
Focus on frequent delivery of products
Iterative and incremental development
Changes must be reversible
Testing is integrated throughout
the lifecycle

What are the phases of DSDM

Feasibility study /Business study
Functional model Iteration
Design /Build Iteration
Implementation

When should DSDM be used

DSDM should be used when subject matter experts can be used in all phases of development, and on the job training is not an option.

When would you use the incremental model

This model can be used when the requirements of the complete system are clearly defined and understood. When some some details can evolve with time. There is a need to get a product to the market early. A new technology is being used. Resources with neede

When would you use the Prototype model

Requirements are unstable or have to be clarified
Develop user interfaces
Short-lived demonstrations
New, original development
With the analysis and design portions of object-oriented development.

What are the key aspects of Extreme Programming

Small phases
Simplicity
Pair Programming
Onsite Customer involvement

When would you use Extreme Programming

On projects with small teams
Expert Programming skills are not needed
When all parties can work side by side effectively

What is meant by domain analysis

Requirements analysis who's goal generally is to identify reusable components,
concepts, structures, and the like.

What is the process to performing domain analysis

Look at a number of systems in an applications entire domain, and identify reusable components, concepts, structures, and the like.

What is meant by the term MoSCow

Must have
Should have
Could have
Wont Haves

What would you utilize MoSCow

When you can prioritizes user requirements

What is a DFD diagram

A data flow diagram (DFD) is a graphical representation of the "flow" of data through an information system, modelling its process aspects.

What is meant by Entity relationship Modeling

A modeling type that uses the entities, entities types, attribute values, attributes, and relationships

Name the following diagram

What is a Data Flow Diagram

A graphical representation of the "flow" of data through an information system

Name the following diagram

What is a finite state machine

A mathematical model of computation used to design both computer programs and sequential logic circuits.

What does the following Diagram display

What are CRC card

Standard index card that has been divided into three sections

What is the following diagram

What is the following diagram

What are the two types of associations

Aggregation and Composition

What type of association is symbolized by a straight line and a diamond

Aggregation

What type of association is symbolized by a straight line and a solid diamond

Composition

Define Aggregation

An aggregation is consider the whole class where the part can survive if the whole dies

Define Composition

A composition is a class that is part of a whole class where the part would die of the whole dies

List the association strengths in order of weakest to strongest

Dependency
Aggregation
Composition

What associations are shown in the following diagram

Aggregation
Composition

What is a type of association is a room to a building

Composition because you cannot have a room without a building

What is a type of association is a employee to a department

aggregation because an employee will survive without a department

What are the two types of directional associtaions

bi-directional
uni-directional

Dependency associations are signified by what

straight dotted line with an arrow

Define Architectural Style

A style or description of component or connector types and a pattern of their runtime control and data transfer

What are some examples of Architectural style

Main Program with subroutines
Data Abstraction
Implicit Invocation
Pipes and Filters
Repository
Layers of abstraction

What are the four things that come to mind with Architectural Style

What problem are we trying to solve
What components are utilized
What connectors are utilized
What is the context and what are the contraints

A connector is defined as what

A line that connects components

A component is defined as what

A box that represents functional aspects

What are the four types of components

Computational
Memory
Manager
Controller

What are the six types of connectors

Procedure
Data Flow
Implicit Invocation
Message Passing
Shared Data
Instantiation

What architectural style uses shared data

Main with subroutines

What architectural style uses local data

Abstraction

What architectural style requires event handlers and uses signal and react to events

Implicit Invocation

What architectural style follows a publisher/subscriber event driven model

Implicit Invocation

What architectural style uses a series of incremental transformations and is largely used by Unix and compilers

Pipes and filters

What architectural style holds a rich data structure where data is manipulated by multiple clients

Respository

What is the Pre-Architectural life cycle

Stake Holders
Quality and Requirements
Agreement
Development

Three main purposed of Software Architecture

Acts as a communication tool
Acts as earliest set of design decisions
Acts as a transferable abstraction of system

What is the process for making decisions when discussing Architecture styles

Identify sub problems
Each issue gets different solutions
Choose solution for each sub problem, then integrate into final solution

What are the four types of design decisions

Implicit undocumented
Explicit Undocumented
Explicit, Explicitly Undocumented
Explicit Documented

What is meant by the term UML

Unified Modeling language

What are the Bass's Architecture viewpoints

Model View
Component and connector
Allocation Views

Basses model view is comprised of what

Decomposition
Uses
layered
Class

What bass view is concerned with Work Assignment, deployment and implementation

Allocation view

What bass view is concerned with runtime events, process, concurrency, shared data, and client server

Component and Connector

What bass view is concerned with units related by is a submodule

Model (decomposition)

In a class diagram as class or a node contains what

name, attributes, and methods

In a class diagram as class or a relationship is denoted by what

Specialized lines that range from associations, to generalizations to inheritance and dependancies

What part of a class diagram provides behavior that can be overwritten in the extending class

Abstraction

What does an interface do on a component diagram

Allows communications between sub components

What does a port do on a component diagram

Allows components to talks to each other

What are the differences between the conceptual, logical and Implementation view points

Logical shows key interactions withing th systems
Conceptual shows the high level map of the system
Implementation shows the organization of the submodels in the system

How do you decide which viewpoint to use

Stakeholder voice their concerns
Viewpoint address those concerns
Identify, prioritize, and combine viewpoints to address concerns