34 terms

CS 390


Terms in this set (...)

How does software differ from the artifacts produced by other engineering disciplines? (Section 1.1)
Software is both a product and a vehicle for delivering a product. As a product, software is an information transformer. As a vehicle for delivering a product, software serves as a basis for computer control, communication, and creation of other programs.
How do software characteristics differ from hardware characteristics? (Section 1.2)
- Software doesn't wear out. its not susceptible to environmental maladies like hardware.

- When a piece of hardware wears out it can be replaced. Software can't.
Explain what is wrong with the notion that computer software does not need to evolve over time. (Section1.1)
- The software need to be adapted to meet the needs of new computing environments and technologies
the software must be enhanced to meet new business requirements
- The software must be extended to make it interoperable with other more modern systems or databases
- The software must be re-architectured to make it viable within an evolving computer environment
- "If it aint broke don't fix it".. Its going to need to be fixed eventually.
List three areas in which process models may differ from one another. (Section 2.2)
- Overall flow of activities, actions and tasks

- Degree to which work products are identified and required

- Manner in which quality assurance activities are applied

- Degree to which customer and stakeholders are involved in the project

- Level of autonomy given to the software team

- Degree to which team organization and roles are prescribed

- Lanner in which project tracking and control activities are applied
Describe how Polya's problem solving principles describe the essence of engineering practice? (Section 2.3)
- Understand the problem: Who are the stakeholders? What are the unknowns (what data, functions, features are required to solve the problem)?

- Plan a solution: Have you seen this problem before and has it been solved? if so, are elements of the solution reusable?

- Carry out the plan: Does does the solution conform to the plan (I.e does it trace back to the design model)?
Is each part of the solution provably correct? (i.e has the design and code been reviewed)

- Examine result for accuracy: Is i possible to test each component, if so has it been done? Does the solution conform to what was required?
Describe the relationships among software engineering process, methods, and tools. (Section2.1)
Process defines a framework that must be established for effective delivery software engineering technology. It forms the basis for management control of software projects and and established the context in which technical methods are applied, work products are produced, milestones are established, quality is assured and change is properly managed. A collection of actives including communication, planning, modeling, construction, and deployment.

Methods provide technical how-to's for building software. Rely on a set of basic principles that govern each area of technology and include modeling activities and other descriptive techniques.

Tools provide automated support for the process and the methods.

A software process is an abstract representation of a process methodology (waterfall, agile, etc..). Process don't tell you how to do things rather outline how types of things are done. Methods are guidelines for creating software that consist of steps and deliverables to finish the software. Each method contains diffrent stages or steps which can be accomplished by using certain techniques, models, and tools.
How are tasks, actions, and activities related to software process models? (Section 3.1)
Each framework activity is populated by a set of software engineering actions. Each action is defined by a set of tasks that identify the work tasks to be completed, the work products that will be produced, the quality assurance points that will be required, and the the milestones that will be used to indicate progress.
How does a software team choose the task set for a particular project? (Section 3.3)
The software team chooses the task set that will allow it to achieve the goal of each action while still maintaining quality and agility. It must accommodate the needs of your project and the characteristics of your team.
How can process patterns assist a development team build software products efficiently?
A process pattern provides a template or consistent method for describing problem solutions within the context of the software process. This process description is refined into a set of stage patterns that define framework activities which get further refined into more detail task patterns for each stage pattern. Can be used as building blocks for the process model.
Why is it important for software processes to be agile? (Chapter 3 Overview)
It helps create timely high quality results. It provides stability and control to an activity that if left uncontrolled can become very chaotic.
Describe the phases of the prototyping model for software development? (Section 4.1.3)
Communication, quick plan and design, construction of prototype, deployment delivery and feedback.

Requirements are gathered by having the customer and developer meet and identify whatever objectives and requirements they can. Quick design follows, focusing on representation of the software that will be visible to the customer. A prototype is constructed by the developer and evaluated by the customer and used to refine the requirements. Iteration occurs and the prototype is tuned to satisfy the customer's needs.
What are the primary advantages of the component-based process model for software engineering? (Section 4.2.1)
Component-based process models promote software reuse and reusability and can result in a reduction in development cycle times, a reduction in project costs, and an increase in productivity.
Why are evolutionary models considered by many to be the best approach to software development in a modern context? (Section 4.1.3)
Because time lines for the development of modern software are getting shorter and shorter, customers are becoming more diverse (making the understanding of requirements even harder), and changes to requirements are becoming even more common (before delivery), we need a way to provide incremental or evolutionary delivery.
The evolutionary process accommodates uncertainty better than most process models, allows the delivery of partial solutions in an orderly and planned manner, and most importantly, reflects what really happens when complex systems are built.
List the key issues stressed by an agile philosophy of software engineering. (Section 5.7)
- The importance of self organizing teams that have control over the work they preform

- Communication and collaboration between team members and between practitioners and their customers

- A recognition that change represents an opportunity

- Emphasis on a rapid delivery of software that satisfies the customer
What are the tradeoffs proposes by the "Manifesto for Agile Software Development"?
- Rapid delivery is valued over intermediate work products

- Working software is valued over comprehensive documentation

- Customer collaboration (customer part of the team) is valued over contract negotiation (us vs them)

- Responding to change valued (flexibility) over following a plan
Describe the role of customers and end-users on an agile process team? (Section 5.4)
Customers and end users participate as full collaborators on agile teams. They are the source of information used to create use cases and provide needed information on the business values of the proposed software solution. The also provide much needed information on operation prototypes during incremental delivery of the software increments.
Describe the three key assumptions regarding software projects that every agile software process must address. (Section 5.3)
- It is difficult to predict in advance which software requirements and customer priorities will change and which will not.

- For many types of software, design and construction must be interleaved, it is difficult to predict how much design is needed before construction can be used to prove the design. Both activities should be performed at tandem so that the design models can be proven as they are created.

- Analysis, design, construction and testing are not always always predictable processes so this makes planning difficult.
List the key attributes of an effective software teams. (Section 6.3)
- Must establish a sense of purpose

- Instill a sense of involvement that makes every member feel like their skill set is of value

- Foster a sense of trust

- Encourage a sense of improvement by periodically reflecting on its approach and looking for ways to improve it

- Diversity of team member skill sets
Describe the five values held by XP teams? (Section 6.5)
- Communication: Close but informal collaboration between customers and developers

- Simplicity: design only for immediate needs

- Feedback: derive from three sources: implemented software, the customer, other software team members

- Courage/Discipline: must only "design for today", recognizing that future requirements may very well change

- Respect: by following these values the members gain respect for everyone invloved. Successful delivery of software increments also garners respect for peers
List environment characteristics that can be considered toxic to software teams. (Section 6.3)
- A frenzied work atmosphere

- High frustration which causes friction between members

- Poorly coordinated software process

- Unclear definition of roles

- Continuous and repeated exposure to failure
What is the difference between a customer and an end-user? (Section 7.3.1)
- A customer is the person or group who originally requested the software to be built, defines the overall business objective, provides basic product requirements, coordinates funding for the project

- An end user is someone who will actually use the product to achieve some purpose, will provide operation detail s of the software so that the business purpose can be achieved
List the representations needed for requirements and design models? (Section 7.3.3)
- Requirements model: Represents customer requirements by depicting the software in 3 domains
Informational domain, functional domain, behavioral domain

- Design model: represents characteristics of the software that help to contract it effectively
architecture, user interface, component-level detail
Describe the differences between software construction and software deployment (Section 7.3.4 and Section 7.3.5)
- Construction encompasses a set of coding and testing tasks that lead to operational software that is ready for delivery to the customer or end user. Physical creation/generation of code, component level testing (unit testing), integration testing, variation testing, acceptance testing

- Deployment encompasses delivery, support and feedback. (each iteration)
What are the six steps for requirements engineering? (Section 8.1)
- Inception: establish a basic understanding of the problem
- Elicitation: determine customer goal, what is to be accomplished, how it fits the needs of the business
- Elaboration: developing a refined requirements model that identifies variation functions, behavior, and information
- Negotiation: requirements are eliminated, modified or combined so that each party receives some measure of satisfaction
- Specification:
- Validation: work products produced as a result of requirements engineering are assessed for quality
- Management: set of activities that help identify, control, and teach requirements changes
Describe the job of the requirements engineer with respect to stakeholder collaboration? (Section 8.2.3)
To identify areas of commonality in which stakeholders agree and areas of conflict between other stakeholders
What are the benefits of using analysis patterns during the analysis modeling process? (Section 8.5.2)
- Speed up the the development of abstract analysis models that capture the main requirements of the concrete problem by providing reusable analysis models

- Facilitate the transformation of the analysis model into a design model by suggesting design patterns and reliable solutions for common problems
Describe the purposes of domain analysis. (Section 9.1.3)
- Umbrella activity involving the Identification, analysis, and specification of common requirements from a specific application domain, typically for reuse in multiple projects
Which Unified Modeling Language (UML) diagrams are useful in scenario-based modeling? (Section 9.2)
- Use cases

- Activity diagrams

- swim lane diagrams
What questions should be asked to help refine a preliminary use case? (Section 9.2.2)
- Can the actor take smoother action at this point?

- Is it possible that the actor will encounter some error condition at this point? if so what?

- Is it possible that the actor may experience some other behavior at this point? if so what?
List the types of models that might be used in requirements modeling and explain the role of each type of model (Section 9.1)
- Scenario based models: requirements from the point of view of various system "Actors"

- Class oriented models: represent object oriented classes and the manner in which classes collaborate to achieve system requirements

- Behavioral and pattern based requirements: describes how the software behaves as a result of external events

- Data models: depict the information domain for the problem

- Flow oriented models: represent the functional elements of the system and how they transform data as they move through the system
What types of nouns resulting from a grammatical parse should be considered as potential analysis classes? (Section 10.1)
- External Entities: (people, devices) consume or produce info used by the system
- Things: (reports, displays, signals) that are part of the information domain of the problem
- Occurrences/Events: (property transfer, series of robot movements) occur within context of system operation
- Roles: (manager, engineer) played by people who interact with the system
- Organizational Units: (division, team) relevant to application
- Places: (manufacturing floor, loading docks) establish context of problem and overall function of system
- Structures: (sensors, computers) define a class of objects or related class of objects
Describe the roles of the three sections of Class Responsibility Collaborator (CRC) cards? (Section 10.4)
- Class name identifies the data object uniquely.

- Responsibilities are the attributes and operations for the class.

- Collaborators are those classes required to provide a class with information needed to complete a responsibility.
List three types of classes that may be present in the analysis model. (Section 10.4)
- Entity Classes
- Boundary Classes
- Controller Classes
List the characteristics that should be considered when considering potential classes for inclusion in an analysis model. (Section 10.1)
- Retained information: the potential noun will be useful during analysis only if information about it must be remembered so that the system can function
- Needed services: must have a set of identifiable operations that can change the value of its attributes in some way
- Multiple Attributes:
- Common Attributes: can be applied to potential class and all its instances
- Common operations:
- Essential Requirements: