OSU CS361 Software Engineering I

Ace your homework & exams now with Quizwiz!

When should testing occur?

All throughout development.

What is a quality attribute?

An aspect of how well the system works.

When drawing architecture where does the emphasis lie?

On the internals of the system, rather than relationship to users.

Where is the system boundary?

What the developer defines it to be. The software or part of the system that's being developed/built.

When should you use incremental development?

When most of a system's value is tightly concentrated in a small number of components.

When should you terminate a life line with an X in a message sequence diagram?

When the object gets destroyed.

When does testing start before implementation?

When using an agile process or in test-driven development. Start creating unit tests and then you write implementation code to satisfy those unit tests.

When should you use iterative development?

When you need to implement most of a system before you can get much value.

In message sequence diagrams, arrows show __________.

messages.

In message sequence diagrams, there is __________ box per entity involved.

one

Software is not enough. You also need __________ and __________.

people context

In UML class diagrams, lines without arrowheads show...

references. - Similar to member variables in OO. - Labeled with cardinality (multiplicity) -- integers, ranges, or asterisk

In message sequence diagrams, a dashed arrow back indicates a __________.

return value.

In UML class diagrams, lines with hollow arrowheads show...

specialization. The arrow always points to the more general entity.

Use cases are __________ requirements.

structured, functional

What is a weakness of the agile process?

Continual re-work can be costly.

What are the steps in an agile process?

1. Customer provides stories (short requirement snippets) 2. Do spike to evaluate and control risk 3. Prioritize stories and plan 4. Write/run/modify unit tests 5. Implement 6. System and acceptance tests 7. Operation 8. Back to 1

What are the steps in a spiral process?

1. Draft a menu of requirements 2. Analyze risk & prototype 3. Establish requirements 4. Plan 5. Draft a menu of architecture designs 6. Analyze risk and prototype 7. Establish architecture 8. Plan 9. Draft a menu of program designs 10. Analyze risk and prototype 11. Establish program design 12. Implementation 13. Testing 14. Operation

What are the steps in a waterfall process?

1. Requirements analysis - a. Prototyping (loop with design) 2. Design 3. Implementation 4. Testing 5. Operation

What are the steps involved in a stakeholder review?

1. Sit down with stakeholders. 2. Engineers present their understanding of requirements. 3. Stakeholders correct this understanding. 4. Everybody discusses/argues/negotiates 5. Engineers revise requirements. repeat

What is a connector within a system's architecture?

A linkage between components via an interface.

What is an attribute?

A property of something in or around the system. A property of an entity.

What is the difference between a requirements definition and a requirements specification?

A requirements definition is stated from the viewpoint of somebody outside the system: - The system is a black box with some interface - The emphasis is on the role of the system. A requirements specification is stated from the viewpoint of somebody inside the system: - The environment is accessed via inputs & outputs. - The emphasis is on how the system works.

What is a component within a system's architecture?

A self-contained piece of a system, with clearly defined interfaces.

What is a process?

A set of ordered tasks. Process is well-defined and usually involves a set of tools and techniques. - Uses resources, is subject to constraints and produces intermediate and final products - May be composed of subprocesses - Has entry and exit criteria - Activities are ordered with clear relationships

What are the strengths of prototypes?

Able to discover many problems with the user interface (functional or non-functional).

What are the different roles and how do they align with the development process?

Analyst -> requirements Designer -> design Programmer -> design, implement, test Tester -> test Trainer -> system delivery

What is unit testing good for?

Automatically checking individual components.

When we talk about an estimate, what do we mean?

Big picture: How much is it going to cost? How long is it going to take? Details: How many people and with what skills? How much hardware and what tools? Number of people vs. deadline How much funding and when available?

What is system integration testing good for?

Checking that components work well together.

What is acceptance testing good for?

Checking that the customer and users are happy.

What is usability testing good for?

Checking user interfaces.

Describe a repository architectural design

Classic repository is just a client-server design providing services for storing/accessing data. User <-> Client <-> Server <-> Data Storage

Describe a client-server architectural design

Client = component that interacts with user and calls server. Server = component that provides services User <-> Client <-> Server

What are some common forms of architecture software design?

Client-server Peer-to-Peer Publish-subscribe Repository Pipe and Filter Layering

What are requirements helpful for?

Communicating with customers and co-workers. Keeping track of everything that needs to get done. Helping you and the customer decide what really needs to get done.

Good requirements are...

Correct: They have to say the right things, Consistent: They can't contradict each other. Unambiguous: Each must have 1 interpretation. Complete: They cover all the important stuff. Relevant: Each must meet a customer need. Testable: There must be a way to tell if they're satisfied. Traceable: There must be a way to determine their origin.

What does the operation stage include?

Distributing code to customers/users. Providing documentation and support. Debugging, after users try out the system. Studying how well the system works in practice. Adapting the system for new markets.

What is the relationship between project management and software engineering?

Engineering is the creation of new projects and managing the process used to create them. There is a large element of program management in software engineering.

What is a weakness of the spiral process?

Exploring alternatives can be costly.

What are some agile methods that are used?

Extreme programming (XP): Focus on simplicity and rapid iteration. Scrum: 30-day iterations; multiple self-organizing teams, daily "scrum" coordination. Crystal: a collection of approaches based on the notion that every project needs a unique set of policies and conventions.

What is program design?

Figuring out how code should be organized. - How should each component's code be distributed among classes and/or functions?

What is architectural design?

Figuring out the overall structure of the system. - What components should be in the system? - How should the components be connected?

What are the typical software tasks?

Figuring out what the system should do (requirements) Figuring out how the system should do it (design) Writing the code for the system (implementation) Making sure that the code is right (testing) Using the system (operation)

Describe a pipe and filter architectural design

Filter = component that transforms data Pipe = connector that passes data between filters User <-> Client <-> Filter <-> Data Source

What does the agile process emphasize?

Flexibility Immediacy

When should you use a waterfall process?

For small systems whose requirements can be fully understood before any design or coding.

When should you use an agile process?

For systems where you can rapidly create something very small but useful, and then expand from there.

What are the parts of a requirements documentation?

Functional requirements (what the system should do) - Unstructured text (external (definition) or system (specification) viewpoint) - Use cases Non-functional (quality) requirements (how well the system should do stuff) - Unstructured text - - Fit criteria Diagrams - Class diagrams and entity-relationship diagrams - Dataflow, sequence, and state diagrams

What are some ways to figure out what the system should do?

Get the customer to write down what they want. Talk with customers and make some diagrams. Watch users in "daily life" to see what they need. Look up the requirements from a standards body. Gather with customers, users, and your fellow engineers to discuss/argue/negotiate a contract.

What is the style of a waterfall process?

Highly controlled. High ceremony.

What's the difference between good software and great software?

It's a matter of the quality attributes: PMFRUITIER Portability Maintainability Flexibility Reliability Usability Integrity Traceability Interoperability Efficiency Reusability

What are two types of development used in agile processes?

Iterative: get the whole system working pretty well, then add features throughout the system. Incremental: get part of the system working really well, then add more parts to the system.

When should you use a spiral process?

Larger systems with vague requirements and many alternatives for designing and coding.

Describe a layered architectural design

Layer = component that provides services to the next layer; components "hide" lower layers.

What is the style of a spiral process?

Moderately controlled. Moderate ceremony.

Is there a restriction on how deep layered architecture can be?

No

Is software just about computers?

No.

What are the drawbacks of the waterfall model?

Non-iterative: hard to handle changes to products and activities during development (assumes requirements can be frozen). - views software development as manufacturing process rather than as a creative process. - long wait before final product. Requirement/design mistakes can be costly.

What are some techniques for evaluating requirements?

Paper prototyping Low-fidelity prototyping High-fidelity prototyping Stakeholder review Formal analysis Manual analysis

Which technique for evaluating requirements is best for finding out what the screen should generally look like?

Paper prototyping.

Describe a peer-to-peer architectural design

Peer = component that provides services and may signal other peers Every component of the system is a network node that communicates directly with any other. There aren't any servers.

How do you create great software?

Professionalism - Character - Teamwork - Planning - Risk management Technical skills - Design - Implementation - Quality control * all of these are necessary

Describe a publish-subscribe architectural design

Publish = when a component advertises that is can send certain events. Subscribe = when a component registers to receive certain events Subscribing to a server and when the server has new information it pushes it to all subscribers. (News service) User <-> Client -> (event registration) Server - <- (event)

What type of architecture design is used by Canvas?

Publish-subscribe. Components wait for data to arrive on repository, then they compute and store more data.

What is the style of an agile process?

Rapid and organic. Low ceremony.

What are requirements?

Requirements state the purpose of the system (expressions of desired behavior).

What does the spiral process emphasize?

Risk management Exploring alternatives

What does the waterfall process emphasize?

Simplicity Traceability

Engineering is... Software engineering is...

Solving real-world problems without making the world worse and without incurring excessive costs. Doing all that by creating software.

What is an entity?

Some kind of thing in or around the system.

What kind of process requires creating and evaluating multiple alternatives?

Spiral.

Which technique for evaluating requirements is best for finding out what laws the system must comply with?

Stakeholder review.

What are the strengths and weaknesses of formal analysis?

Strengths - Can guarantee formally specifiable properties. Weaknesses - Expensive. - Need formal skills.

What are the strengths and weaknesses of manual analysis?

Strengths - Checking for consistency. Weaknesses - Easy to miss errors.

What are the strengths and weaknesses of stakeholder review?

Strengths - Evaluating fit to context. Weaknesses - Costs customer time.

What is involved with manual analysis?

Systematically check consistency. Is the unstructured text consistent with what the use cases are saying? Are the necessary entities shown in the UML class diagram and/or message sequence diagrams?

What is decomposition?

Taking the application and breaking it down into components and then each component may be broken down, and so on. (top-down design)

What are some elements of a quantifiable approach?

Technical complexity Organization skills Available funding Available workforce Schedule Stakeholder interest and assistance Laws and regulations

What is software engineering?

The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software.

Define architecture.

The high-level overarching design of how the software is going to be organized. It shows pieces of a system and their relationships.

What is a life-cycle?

The process of not only building the product but also of maintaining a product.

What result do you commonly hear about large software system development (or large systems, buildings, or family budgets)?

They are over budget and over time.

What are the weaknesses of prototypes?

They will not uncover: Missed use cases Strange interactions between use cases Quality attributes that you never thought of Ways in which the system could badly fail

What are the kinds of prototypes?

Throwaway prototypes - Paper prototypes - Low-fidelity prototypes Evolutionary prototypes - High-fidelity prototypes: implemented on the target platform. not fully functional, but destined to be incorporated into the final product.

True or false. Software engineering is a team effort.

True.

What is involved with formal analysis?

Two formal models: - Describing the requirement definition. - Describing the requirement specification. Automatically check if the specification satisfies the definition. * Valuable but expensive

Before you can start, what do you need to do?

Understand where you want to go - develop requirements: Understand what the goal is Understand how the goal will be attained Must be detailed to allow estimate Tools exist to study tradeoffs

What are some types of testing?

Unit testing (within the purview of the coders) System integration testing (making sure all parts go together and work correctly) Usability testing (making sure all functions are working as intended) Acceptance testing (stakeholders review software)

When do you stop decomposing?

Until you get to chunks that are big enough for one person or one team to design and implement, and then you start building them and then integrating them and then go back to the process.

What are some types of diagrams?

Use case diagram: shows supported activities. UML class and entity-relationship diagrams: show entities, attributes, relationships. Dataflow diagram: shows flow of information. Message sequence diagram: shows flow of control. State chart: shows change over time.

What is in a basic use case?

Use case name: succinct and meaningful Actor: who does the activity Preconditions: what is true before the activity Postconditions: what is true after the activity Flow of events: what steps do the actor and the system perform during the scenario

What does a use case do?

Use cases describe an activity supported by the system. It is a way of using the system.

What are the two distinct quantities in determining if the requirements are correct and that they're working?

Validation: Build the right system Verification: Build the system right

In dataflow diagrams, each rectangle is an __________.

actor

In dataflow diagrams, each "half-rectangle" is a __________.

data store (file or database)

In UML class diagrams, lines with regular arrowheads show...

dependencies. - Usually omitted in requirements' class diagrams.

Great software contains the right __________ for the right __________.

features data

In dataflow diagrams, each oval is a __________ provided by the system. - Each inward arrow is a __________. - Each outward arrow is a __________.

function parameter output

You cannot build a great system until you...

understand what it should do.


Related study sets

Understanding Ultrasound Physics - SPI Exam Review - Period and Frequency

View Set

Nutrition - Chapter 5: types of lipids

View Set

Chapter Four (Labor and Legality: An Ethnography of a Mexican Immigrant Network [Gomberg-Muñoz]): Múy Unidos: Friends, Networks, and Households

View Set

Chpt 8 Psychology- Eating Disorders

View Set

Block 3 / Unit 3: Domain Name System

View Set