CS 319 Software Engineering Midterm Study

Réussis tes devoirs et examens dès maintenant avec Quizwiz!

Describe the roles of three sections of CRC (Class Responsibility Collaborator) cards

1. Top of the Card - Name of the class 2. Left - Class responsibilities 3. Right - Collaborators

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

1. UNDERSTAND THE PROBLEM: Who are the stakeholders? What are the unknowns (what data, functions, features are required to solve the problem)? 2. PLAN A SOLUTION: Have you seen this problem before and has it been solved? if so, are elements of the solution reusable? 3. CARRY OUT THE PLAN: 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) 4. EXAMINE RESULT FOR ACCURACY: Is it possible to test each component, if so has it been done? Does the solution conform to what was required?

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

1. Use cases 2. Swim lane diagrams 3. Activity Diagrams "USA"

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 2. Pick those "Analysis classes" that qualify as part of the list you gave me 3. Apply a "refinement analysis" process, using Coad and Yourdon selection process

List and describe the generic software process models from Chapter 4

1. Waterfall COMMUNICATION > PLANNING > MODELING > CONSTRUCTION > DEPLOYMENT 2. Incremental Model same as waterfall but delivered in increments 3. Evolutionary Process Model communication, quick plan, modeling quick design, construction of prototype, "deployment delivery and feedback" 4. Spiral Process Model same as waterfall but repeats as many times as it takes to complete 5. Concurrent Models Inactive, "Awaiting changes, under revision" or "under review, baselined", done 6. Component Base Process Model (CBSE)requirements specification, component analysis, requirements modification, system design with reuse, development and integration, system validation 7. Scrum (Daily meeting) - Analysis, design, evolution, and delivery. 8. Rational Unified Process - After 1 round, there will be production (release increment) 9. Extreme Process - Planning - Design - Coding (refactoring) - Test - software increment - Planning...-..-..

What is the role of context in Mobile App design?

1. 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. 2.Users expect MobileApps to deliver personalized user experience based on the physical location of a device in relation to the available network features

Specification (requirements engineering)

A written document, a set of graphical models, a formal mathematical model, a collection of usage scenarios, a prototype, or any combination of these

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

Analysis, design, evolution, and delivery - Emphasize project priorities, compartmentalize work unit's communication and frequent customer feedbacl.

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

Because these 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.

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

COMMUNICATION - Project Initiation & requirement gathering. -> PLANNING - estimating, scheduling, tracking. -> MODELING - Analysis & Design. -> CONSTRUCTION - Code & Test. -> DEPLOYMENT - Delivery, Support andFeedback

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.

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

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

Process Flow (Diagram) - How are tasks, actions, and activities related to software process models?

Describes how the framework activities and the actions and tasks that occur within each framework activity are organized with respect to sequence and time view of a software process ACTIVITIES - strives to achieve a broad objective (e.g., communication with stakeholders) and is applied regardless of the application domain, size of the project, complexity of the effort, or degree of rigor with which software engineering is to be applied. ACTIONS - (e.g., architectural design) encompasses a set of tasks that produce a major work product (e.g., an architectural model). TASK - focuses on a small, but well-defined objective (e.g., conducting a unit test) that produces a tangible outcome.

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.

Validation (requirements engineering)

Examines the specification to ensure that all software requirements have been stated unambiguously;

Requirement Types

Functional : System behavior / functions of the systems Non - Functional : Constraints on the services

Explain how effective modular design is achieved through functional independent 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 Mobile App?

Functionality Reliability Efficiency Maintainability Usability "FREMU" - SAME AS IN WEB APP WITH THE ADDITION OF "PORTABILITY"

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

Functionality Reliability Efficiency Maintainability Usability "FREMU"

Negotiation (requirements engineering)

Having limited business resources. Using an iterative approach that prioritizes requirements, assesses their cost and risk, and addresses internal conflicts, requirements are eliminated, combined, and/or modified so that each party achieves some measure of satisfaction

What work products result from the requirements engineering process?

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

Elicitation (requirements engineering)

Identify Objectives and Goals from the user for the system and goals from the stakeholders.

Under what circumstances requirements modeling should be utilized for web or mobile apps?

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?

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

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

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 does the object-oriented view of component-level design differ from the traditional view?

Object oriented view - detailed microscopic - very detailed. Traditional View - 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.

Describe the relationship among software engineering process, methods, and tools. (Layered Technology)

PROCESS - Defines a framework that must be established for effective delivery software engineering technology. METHODS - Provide technical how-to's for building software TOOLS - Provide automated support for the PROCESS & METHODS T-M-P-Quality Focus = Layered Technology

List the representations needed for requirements (analysis model) and design models?

REQUIREMENTS MODELS representation: 1. The information domain 2. The functional domain 3. The behavioral domain DESIGN MODELS representation: 1. The architecture 2. The user interface 3. The component-level detail

Elaboration (requirements engineering)

Refined inception & elicitation. This identifies various aspects of software function, behavior and information. (user scenarios)

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

Architectural Quality Attributes

Runtime System Qualities : can be measured as the system executes 1. Functionality: The ability of the system to do the work for which it was intended. 2. Performance: The response time, utilization, and throughput behavior of the system. Not to be confused with human performance or system delivery time. 3. Security: A measure of system's ability to resist unauthorized attempts at usage or behavior modification, while still providing service to legitimate users. 4. Availability (includes Reliability): The measure of time that the system is up and running correctly; the length of time between failures and the length of time needed to resume operation after a failure. 5. Usability: The ease of use and of training the end users of the system. Sub qualities: learnability, efficiency, affect, helpfulness, control. 6. Interoperability: The ability of two or more systems to cooperate at runtime Non-Runtime System Qualities: Cannot be measured as the system executes 1. Modifiability: The ease with which a software system can accommodate changes to its software 2. Portability: The ability of a system to run under different computing environments. The environment types can be either hardware or software, but is usually a combination of the two. 3. Reusability: The degree to which existing applications can be reused in new applications. 4. Integrability: The ability to make the separately developed components of the system work correctly together. 5. Testability: The ease with which software can be made to demonstrate its faults

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

SYSTEMATIC, DISCIPLINED, QUANTIFIABLE to the development, operation and maintenance of software.

Describe the differences between software construction and software deployment

Software Construction : Coding/Development and Testing Software Deployment: the physical activity to place software in the final server

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?

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?

Software is developed, not manufactured. Software does not "wear out". Most software is custom built, not assembled out of components. Hardware wear-out and it can be replaced.

Why it important for software processes to be agile?

Software process needs to provide stability, control, and organization. If left uncontrolled it can become chaotic

What is an MVC Pattern?

The MVC architecture decouples the user infrastructure from Web App 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

Inception (requirements engineering)

Understanding of the problem (Identify stakeholders, recognize multiple points of view & work toward collaboration)

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.

Software Process Models

Waterfall, Incremental, Evolutionary Process, Spiral Process, Concurrent, Component Base Process, Rational Unified Process (RUP), XP (Extreme Process), and Scrum models

What are the 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

Management (requirements engineering)

is a set of activities that help the project team identify, control and track requirements and changes to requirements at any time as the project proceeds.

Which are the most commonly used UML diagrams?

"CUSA" 1. Class Diagrams - Model classes, their attributes, operations and relationships/associations to other classes 2. Use Case Diagrams - Describes how a user interacts with the system by defining the steps required to accomplish a specific goal 3. Sequence Diagrams - Use to show the dynamic communications between objects during execution of a task 4. 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 can show concurrent flows

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

-SSERRP- 1. Speed : Transact/second, response time, screen refresh time 2. Size: Storage & Memory 3. Ease of use: Training time , online help 4. Reliability: Mean time to failure, probability of unavailability, rate of failure, availability 5. Robustness: Restart time, percent of failure events 6. Portability percent (PCT)of target-dependent code, number of target systems

2. Which are the fundamental software design concepts that provide the necessary framework for "getting it right" (FUNDAMENTAL CONCEPTS)

1. Abstraction - Data, Process, & Control 2. Architecture - Over all structure of the software 3. Aspects - A mechanism for understanding how global requirements affect design 4. Design Classes - Provide design detail 5. Functional Independence - Single - minded function and low coupling 6. Hiding - Controlled Interfaces 7. Modularity - Compartmentalization of data & function 8. Refinement - Elaboration of detail for all abstractions 9. Refactoring - a reorganization technique that simplifies the design 10. Separation of Concerns - complex problems can be handled in subdivided into pieces 11. OO design concepts - Appendix II 12. Patterns - "convey the essence" of a proven design solution AAADFHMRRSOP

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

1. Can the actor take smoother action at this point? 2. Is it possible that the actor will encounter some error condition at this point? if so what? 3. Is it possible that the actor may experience some other behavior at this point? if so what?

Describe the key elements of construction practice

1. Coding - concerned with 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 Note: Testing involves validation of individual components, verifying the successful integration of components into the system and acceptance of the completed system by the customer

Framework Activities

1. Communication - Critically important to communicate and collaborate with customer (and other stakeholders). The intent is to understand stakeholders' objectives and gather requirements to help define software features and functions 2. Planning - Called as "map" 3. Modeling - Creating models for better understanding the software requirements. * Analysis of requirements * Design 4. Construction - The design must be built *Code generation *Testing 5. Deployment - Delivered to customer for evaluation and provides feedback

Describe the component-level design for WebApps

1. Component-level design for WebApps considers both content and functionality as it is delivered by a Web-based system. 2. 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. NOTE:All component- level design principles and guidelines apply.

Agile Principles (full list)

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 the four design models required for a complete specification of a software design and the role of each (Software Engineering Design)

1. Data design - High level modeling depicting user's view of the data or information 2. Architecture Design - Gives an overall view of the system; equivalent to a floor-plan 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

Which ones are well - known architectural styles/patterns? (PARTS of ARCHITECTURAL STYLES)

1. Data-Centered Architectures 2. Data-Flow Architectures 3.Call-and-Return Architectures 4.Object-Oriented Architectures 5. Layered Architectures

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

1. Degree to which work products are identified and required 2. Degree to which customer and stakeholders are involved in the project 3. Degree to which team organization and roles are prescribed 4.Overall flow of activities, actions, and tasks 5.Level of autonomy given to software team

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

1. Difficulty in predicting which software requirements will change in advances 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

List three types of classes that may be present in the analysis model

1. Entity Classes 2. Boundary Classes 3. Controller Classes

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

What are the steps in the engineering process model for developing Mobile Apps?

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.

Describe the purpose of DOMAIN ANALYSIS

1. Identify common requirements to reuse in other projects 2. Umbrella Activity involving the identification, analysis, and specification of common requirements from a specific application domain, typically for reuse in multiple projects 3. The intent is to identify the common problem-solving elements that are application to all applications within the domain

Describe the phases of the prototyping model for software development?

1. Identify some requirements to begin with 2. Develop Initial prototype 3. Review the prototype 4. Revise and enhance the prototype

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

1. Implement all of the explicit requirements and accommodate 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

What are the six steps for requirements engineering? (Process - To build a bridge to design)

1. Inception 2. Elicitation 3. Elaboration 4. Negotiation 5. Specification 6. Validation 7. Management

List four content architectures found in WebApps?

1. Linear, 2. grid, 3. hierarchical, 4. networked or "pure web"

Which ones are essential characteristics or "QUALITY SOFTWARE ATTRIBUTES" of a professional software system?

1. Maintainability - capacity for evolution 2. Dependability *reliability *security *safety 3. Efficiency: well use of resources 4. Usability: easy to use and learn

List three principles that should be applied when building any user interface. (GOLDEN RULE)

1. Place the user in control - Allow user interaction to be interruptible and undoable 2. Reduce the user's memory - Reduce demand on short-term memory, The visual layout of the interface should be based on a real world metaphor.3. Make the interface consistent - Maintain consistency across a family of applications.

What are the tradeoffs proposing by the "Manifesto for agile Software Development"?

1. Rapid Delivery : valued over intermediate work products 2. Working Software : valued over comprehensive documentation 3. Customer collaboration: (customer part of the team) is valued over contract negotiation (us vs them) 4. 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

1. Retained Information 2. Needed Services 3. Multiple Attributes 4. Common Attributes 5. Common Operations 6. Essential Requirements

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 : requirements from the user's point of view 2. Class-oriented models: represent object-oriented classes and the manner in which classes collaborate to achieve system requirements 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

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

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

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

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

1. Speed up the development of abstract analysis models that capture the main requirements of the concrete problem by providing reusable analysis models 2. 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

1. The importance of self-organizing teams that have control over the work they perform 2. Communication and collaboration between team members and between practitioners and their customers 3. A recognition that change represents an opportunity 4. Emphasis on a rapid delivery of software that satisfies the customer

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

1. The software needs to be ADAPTED to meet the needs of new computing environments and technologies. 2. The software must be ENHANCED to meet new business requirements. 3. The software must be EXTENDED to make it interoperable with other more modern systems & databases 4. The software must be RE-ARCHITECTURE to make it viable within an evolving computer environment -AEEA-


Ensembles d'études connexes

Pathophysiology Chapter 4 Infection

View Set

List 23: Big, Fat, Glorius adjectives

View Set

Principles of Marketing Ch.16 Book/Vocab Notes

View Set

Chapter 8 - Toddler and Preschooler

View Set

Bible Ch 2 Intertestamental Period

View Set

Integumentary System and Body Temperature Chapter 7 A&P

View Set