CS 319 Software Engineering Midterm Study Guide
Terms in this set (68)
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:
How do software characteristics differ from hardware characteristics?
From the Software Engineering definition by the IEEE, which are the main characteristics included in the definition?
Describe the relationships among software engineering process, methods, and tools.
tools provide automated or semi-automated support for the process and methods.
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
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
Which ones are essential characteristics or "Quality Software Attributes" of a professional software system?
Intellectual property rights
Maintainability: capacity for evolution
Dependability: should not cause damage
Efficiency: well use of resources
Usability: easy to use and learn
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 five fundamental activities common to all software processes and that a SE should perform/supervise during a project life cycle.
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.
List and describe the generic software process models from Chapter 4
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
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 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:
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.
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.
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
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
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
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 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
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.
List the representations needed for requirements and design models?
Requirements model (aka analysis model)
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.]
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 are the six steps for requirements engineering?
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.
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.
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 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
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
Which UML (unified modeling language) diagrams are useful in scenario-based modeling?
- Use cases
- Activity diagrams
- swim lane diagrams
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?
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.
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
Occurrences or events
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
List three types of classes that may be present in the analysis model.
- Entity Classes
- Boundary Classes
- 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
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.
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
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;
Which are the most commonly used UML diagrams? Describe them.
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
List three characteristics that can serve as a guide to evaluate design quality.
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
Which are the fundamental software design concepts that provide the necessary framework for "getting it right."
Design for test
Object oriented design concepts
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.
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;
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 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 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
Which ones are well-known architectural styles/patterns?
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.
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.
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
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 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.
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.
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.
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
What framework activities are completed when following an evolutionary (or spiral) user interface development process?
Interface analysis and modeling
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.
What are the major attributes should be used to assess the quality of a WebApp?
List four content architectures found in WebApps?
Linear, grid, hierarchical, and networked or "pure web"
What is an MVC Pattern?
The MVC architecture decouples the user infrastructure from WebApp functionality and information content
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
What are the steps in the engineering process model for developing MobileApps?
5. Implementation and Testing
6. User evaluation
What are the major attributes should be used to assess the quality of a MobileApp?
FREMUP - SAME AS IN WEB APP WITH THE ADDITION OF "PORTABILITY"
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?