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