CS 319 Software Engineering Midterm Study Guide

Ace your homework & exams now with Quizwiz!

What are the steps needed to build a behavioral model?

1- Evaluate all use cases 2 - Identify events that driver the interaction sequence 3 - Create a sequence for each use case 4 - Build a state diagram 5 - Review the behavioral model

Which UML (unified modeling language) diagrams are useful in scenario-based modeling?

- Use cases - Activity diagrams - swim lane diagrams

Describe the key elements of construction practice.

1. Coding - concerned w/ the selection of the programming style, language and methods 2. Testing - concerned with software execution to find errors, and ensure that software functions as required by the customers. [Testing involves validation of individual components, verifying the successful integration of components into the system, and acceptance of the completed system by the customer.]

Agile Principles

1. Customer satisfaction = highest priority 2. Embrace change 3. Incremental delivery of working software 4. Customer collaboration 5. Motivate individuals 6. face-to-face conversation mode of communication 7. Working software is the primary measure of progress. 8. promote sustainable development. 9. Continuous attention to technical excellence and good design enhances agility. 10. Simplicity - essential 11. self-organizing teams. 12. Team reflection at regular intervals

List three areas in which process models may differ from one another.

1. Degree to which team organization and roles are prescribed. 2. Overall flow of activities, actions, and tasks and the interdependencies among them. 3. Level of autonomy given to project team

List three principles that should be applied when building any user interface.

1. Place the user in control 2. Reduce the user's memory load 3. Make the interface consistent

List the types of models that might be used in requirements modeling and explain the role of each type of model

1. scenario based model - reqmts from the users point of view 2. class-oriented models - represent object-oriented classes and the manner in w/c classes collaborate to achieve system reqmts. 3. behavioral and pattern based model - depict how the software behaves as a consequence of external events 4. data models - depict information domain for the problem 5. flow-oriented model represent the functional elements of the system and how they transform data as they move through the system

Why are evolutionary models considered by many to be the best approach to software development in a modern context?

Because this models are design to accommodate a product that grows and changes. Evolutionary models are interactive. They are characterized in a manner that enables you to develop increasingly more complete versions of the software.

Describe the phases of the prototyping model for software development?

Identify some requirements to begin with: Develop initial prototype: Review the prototype: Revise and enhance the prototype:

How does the object-oriented view of component-level design differ from the traditional view?

OOV - detailed microscopic - very detailed. TV - Control, Infrastructure and Domain (macro) - overview of C, I, D 1. The object-oriented view focuses on the elaboration of design classes that come from both the problem and infrastructure domains. Classes are elaborated by specifying messaging details, identifying interfaces, defining attribute data structures, and describing process flow for operations. 2. In the traditional view, three of components are refined: control modules, domain modules, and infrastructure modules. This requires representations to be created for data structures, interfaces, and algorithms for each program module in enough detail to generate programming language source code.

Why it important for software processes to be agile?

Provides Stability, control, and organization to an activity that can become quite chaotic.

What are the primary advantages of the component-based process model for software engineering?

Software Reuse, Reduction on development cycle time and reduction on project cost.

How does software differ from the artifacts produced by other engineering disciplines?

Software is developed or engineered, Software doesn't "wear out", software is custom built.

Explain what is wrong with the notion that computer software does not need to evolve over time.

Software needs to be: adapted, enhanced, extended, re-architected

What is an MVC Pattern?

The MVC architecture decouples the user infrastructure from WebApp functionality and information content

What is the intent of domain engineering in CBSE?

The intent of domain engineering is to identify, construct, catalog, and disseminate a set of software components that have applicability to existing and future software products.

What do you think is the goal of Elicitation activity within the software requirements phase?

To draw out the requirements from the stakeholder.

Describe the job of the requirements engineer with respect to stakeholder collaboration?

To identify areas of commonality in which stakeholders agree and areas of conflict between other stakeholders.

Describe the roles of the three sections of CRC (class responsibility collaborator) cards?

Top of the card - name of the class Left - class responsibilities Right - collaborators

What is UML?

Unified Modeling Language is a standard language for writing software blueprints; used to visualize, specify, construct, and document the artifacts of a software intensive system;

What are benefits of Incremental Delivery?

We can offer the product in a much shorter amount of time developing the core portion of the product then the extra features in the following updates by increments.

Describe how Polya's problem solving principles describe the essence of engineering practice?

1. Understand the problem 2. Plan a solution 3. Carry out the plan code 4. Examine the results for accuracy

List and describe the generic software process models from Chapter 4

1. Waterfall COMMUNICATION > PLANNING > MODELING > CONSTRUCTION > DEPLOYMENT 3. Incremental Model same as waterfall but delivered in increments 4. Evolutionary Process Model communication, quick plan, modeling quick design, construction of prototype, "deploymentm delivery and feedback" 5. Spiral Process Model same as waterfall but repeats as many times as it takes to complete 6. Concurrent Models Inactive, "Awaiting changes, under revision" or "under review, baselined", done 7. Component Base Process Model (CBSE) requirements specification, component analysis, requirements modification, system design with reuse, development and integration, system validation note: there are more models

Describe the three key assumptions regarding software projects that every agile software process must address.

1. difficulty in predicting which software reqmts will change in advance or how customer priorities will change as the project proceeds 2. difficult to predict how much design is necessary before construction is used to prove the design 3. analysis, design, construction, and testing are unpredictable

What are the six steps for requirements engineering?

1. inception 2. elicitation 3. elaboration 4. negotiation 5. specification 6. validation

What types of nouns resulting from a grammatical parse "should be" considered as potential analysis classes?

1. using the grammatical parse, you select an initial set of classes (page 185) 2. pick those "Analysis classes" that qualify as part of the list you gave me (page 186) and, 3. apply a "refinement analysis" process, using Coad and Yourdon selection process.(page 187) That said, if you answer the question using analysis step 2 or 3, your answer would be correct.

How are tasks, actions, and activities related to software process models?

A process model provides a specific roadmap for software engineering work. It defines the flow of all activities, actions and tasks, the degree of iteration, the work products, and the organization of the work that must be done.

What are the five fundamental activities common to all software processes and that a SE should perform/supervise during a project life cycle.

Communication, Planning, Modeling, Construction Deployment

Which ones are essential characteristics or "Quality Software Attributes" of a professional software system?

Competence. Intellectual property rights Maintainability: capacity for evolution Dependability: should not cause damage Reliability Security Safety Efficiency: well use of resources Usability: easy to use and learn Confidentiality

Describe what is accomplished during the component qualification, adaptation, and composition activities of component-based development.

Component qualification is the task of examining candidate library components and ensuring that they perform the function required for the new application. During component adaptation any component conflicts that surface when a library component is added to the new application are dealt with by wrapping the component (sometimes a new component must be engineered). During component composition, the qualified, adapted, and newly engineered components are used to populate the new application architecture.

Describe the component-level design for WebApps.

Component-level design for WebApps considers both content and functionality as it is delivered by a Web-based system. Content design at the component level focuses on content objects and the manner in which they may be packaged for presentation to a WebApp end user. Functional design for WebApps focuses on processing functions that manipulate content, perform computations, query and access a database, and establish interfaces with other systems. All component- level design principles and guidelines apply.

Describe the differences between software construction and software deployment.

Construction is coding/development and testing. Deployment is the physical activity to place software in the final server.

What is the difference between a customer and an end-user?

Customer is the one who request the software and end-users are the ones who actually use the software.

Which ones are well-known architectural styles/patterns?

Data-Centered Architectures Data-Flow Architectures Call-and-Return Architectures Object-Oriented Architectures Layered Architectures

What is a Design Pattern?

Design patterns provide a codified mechanism for describing problems and their solution in a way that allows the software engineering community to capture design knowledge for reuse.

Which are the fundamental software design concepts that provide the necessary framework for "getting it right."

Functional independence Abstraction Design classes Architecture Design for test Refinement Aspects Refactoring Object oriented design concepts Dependency inversion Modularity Information hiding Patterns Separation of concerns "FADAD RAROD MIPS"

Explain how effective modular design is achieved through functional independence of the individual modules?

Functional independence of modules is achieved by making modules single-minded (high cohesion) and preventing excessive interaction (low coupling) with other modules or system elements. Independent modules are easier to develop, maintain, and test, because the impact of side effects is reduced (as is the propagation of errors). This also makes it easier to perform parallel implementation of modules.

What are the major attributes should be used to assess the quality of a WebApp?

Functionality reliability efficiency maintainability usability "FREMU"

What work products result from the requirements engineering process?.

Helps software engineers better understand the problems they are trying to solve. It is very important to understand the customer's wants and needs before you begin designing or building a computer-based solution.

Under what circumstances requirements modeling should be utilized for Web or mobile apps? Answer (Section 11.5)

If requirements of the problem or product is not well understood.

What framework activities are completed when following an evolutionary (or spiral) user interface development process?

Interface analysis and modeling design construction validation

What questions should be answers to assess usability of a mobile device?

Is the user interface consistent across applications? Is the device interoperable with different network services? Is the device acceptable in terms of stakeholder values" in the target market area?

What is the role of context in MobileApp design?

It helps distinguish the developmental and technical considerations needed in designing a MobileApp i.e. power management, computational and storage limits, security and privacy models and policies, ui limitations. Users expect MobileApps to deliver personalized user experience based on the physical location of a device in relation to the available network features

Describe the differences between the software engineering terms coupling and cohesion?

LOW COUPLING - HIGH COHESION Cohesion implies that a component or class encapsulates only the attributes and operations closely related to one another and to the class itself. Coupling is a qualitative measure of the degree to which components are connected to one another. - SHOWS HOW THEY ARE CONNECTED

List four content architectures found in WebApps?

Linear, grid, hierarchical, and networked or "pure web"

Describe the principle of information hiding as it applies to software design.

Modules should be designed so that information is inaccessible to other modules that have no need for such information;

How do software characteristics differ from hardware characteristics?

Network intensiveness. Concurrency, Unpredictable load, Performance, Availability, Data driven, Content sensitive, Continuous evolution, Immediacy, Security, Aesthetics

What is Refactoring, and when is it applied?

Reorganization technique that simplifies the design of a component without changing its function of behavior. It is suggested for many agile methods.

List the representations needed for requirements and design models?

Requirements model (aka analysis model) functional domain information domain behavioral domain Design models architecture component-level detail ui

Describe the types of dependencies that can exist in an architectural design.

Sharing dependencies - represent dependence relationships among consumers who use the same resource of producers who produce for the same consumers. Flow dependencies - dependence relationships between producers and consumers of resources Constrained dependencies - which represent constraints on the relative flow of control among a set of activities.

Which are the metrics used for specifying non-functional requirements?

Speed: transact/second, response time, screen refresh time Size: storage, memory Ease of use: training time, online help Reliability: mean time to failure, probability of unavailability, rate of failure, availability Robustness: restart time, pct of failure events, prob. of data corruption after failure Portability: percent of target-dependent code, number of target systems

Describe the SCRUM process and the diagram shown in the book:

analysis, design, evolution, and delivery emphasize project priorities, compartmentalize work units communication and frequent customer feed back.

List three characteristics that can serve as a guide to evaluate design quality.

design should: 1. implement all of the explicit requirements and accomodate all the implicit requirements desired by stakeholders 2. be readable and understandable to people who would generate the code, test, and support the software 3. provide a complete picture of the software, addressing the data, functional, and behavioral domains from an implementation perspective

From the Software Engineering definition by the IEEE, which are the main characteristics included in the definition?

disciplined, systematic, and quantifiable

What are the major attributes should be used to assess the quality of a MobileApp?

functionality reliability efficiency maintainability usability portability FREMUP - SAME AS IN WEB APP WITH THE ADDITION OF "PORTABILITY"

Describe the purposes of domain analysis.

identify common requirements to reuse in other projects - Umbrella activity involving the Identification, analysis, and specification of common requirements from a specific application domain, typically for reuse in multiple projects The intent is to identify the common problem solving elements that are applicable to all applications within the domain

Describe the relationships among software engineering process, methods, and tools.

tools provide automated or semi-automated support for the process and methods.

Which are the most commonly used UML diagrams? Describe them.

"C.U.S.A" Class diagrams - these diagrams model classes, their attributes, operations and relationships/associations to other classes Use Case Diagrams - A use case describes how a user interacts with the system by defining the steps required to accomplish a specific goal Sequence Diagrams - Used to show the dynamic communications between objects during execution of a task Activity Diagrams - Depicts the dynamic behavior of a system or part of it through the flow of control between actions. Similar to a flow chart except it can show concurrent flows

What questions should be asked to help refine a preliminary use case?

- 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 three types of classes that may be present in the analysis model.

- Entity Classes - Boundary Classes - Controller Classes

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

List the characteristics that should be considered when considering potential classes for inclusion in an analysis model

- Retained information - Needed services: - Multiple Attributes - Common Attributes: - Common operations - Essential Requirements External entities Things Occurrences or events Roles Organizational units Places structures

What are the benefits of using analysis patterns during the analysis modeling process?

- Speed up 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

.List the key issues stressed by an agile philosophy of software engineering.

- The importance of self-organizing teams that have control over the work they perform - 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

List the four design models required for a complete specification of a software design and the role of each.

1. Data design - high level model depicting user's view of the data or information. 2. Architecture design - gives an overall view of the system; equivalent to a floorplan of a house 3. Interface design - interface depicts a set of operations that describe the externally observable behavior of a class and provides access to its operations 4. Component-level design - Describes the internal detail of each software component.

What are the steps in the engineering process model for developing MobileApps?

1. Formulation 2. Planning 3. Analysis 4. Engineering 5. Implementation and Testing 6. User evaluation

What are the steps used to complete the component-level design for a software development project?

1. Identify all design classes that correspond to the problem domain. 2. Identify all design classes that correspond to the infrastructure domain. 3. Elaborate all design classes that are not acquired as reusable components. 4. Describe persistent data sources (databases and files) and identify the classes required to manage them. 5. Develop and elaborate behavioral representations for a class or component. 6. Elaborate deployment diagrams to provide additional implementation detail. 7. Refactor every component-level design representation and always consider alternatives.

What are the elements that make up a software architectural style?

1. Set of components that perform required system functions. 2. Set of connectors allowing communications among the components. 3. Constraints describing how the components maybe integrated to form a system. 4. Semantic models that enable the designer to understand the overall system properties by analyzing the known properties of its components


Related study sets

Topic 6.1 Rationales for Imperialism

View Set

Supply Chain management 385 test 2

View Set

Time Value of Money Concepts: Chapter Six

View Set

Chapter 16: Outcome Identification and Planning - Gerontology

View Set

PrepU Ch 15: Oncologic Disorders

View Set

BIO 160 exam 1 Mastering Biology

View Set

Chapter 5 - Product Differentiation

View Set