Software Engineering Midterm
What is cohesion and coupling related to functional independence?
-Cohesion is an indication of the relative functional strength of a module. A cohesive module performs a single task, requiring little interaction with other components in other parts of a program. -Coupling is an indication of the relative interdependence among modules. Coupling depends on the interface complexity between modules, the point at which entry or reference is made to a module, and what data pass across the interface.
What are some of the issues related to design? - (mention 3)
-The design should be based on requirements specification. -The design should be documented (so that it supports implementation, verification, and maintenance.) -The design should use abstraction (to reduce complexity and to hide unnecessary detail.) -The design should be modular (to support abstraction, verification, and maintenance.)
Mention 3 conditions for an effective team.
-The team has control over its tasks. -The team is clearly identified. Each member has a clearly defined role. -The tasks to be done are clear and distinct.
Explain 3 common problems in teams.
-poor communications -weak participation -poor planning
What is an Aspect and Refactoring?
-An Aspect is a representation of a cross-cutting concern. -Refactoring is the process of changing a software system in such a way that it does not alter the external behavior of the code [design] yet improves its internal structure.
List different views of design.
-Architectural Design (high-level design) -Data Design -Interface Design -Temporal Design -Detailed Design (procedural design)
What is a software process and mention 4 different software development models and explain one of them?
A process is a series of steps involving activities, constraints and resources that produce an intended output of some kind. -Prototyping model -V model -Spiral model -Agile model
In use-case (scenario-based modeling), how do we get the information needed?
Inception and elicitation—provide you with the information you'll need to begin writing use cases. Requirements gathering meetings, Quality Function Deployment, and other requirements engineering mechanisms are used to identify stakeholders define the scope of the problem specify overall operational goals establish priorities outline all known functional requirements, and describe the things (objects) that will be manipulated by the system. To begin developing a set of use cases, list the functions or activities performed by a specific actor.
What are the three software development issues?
People, Process, and Product issues
What are some of the principle related to testing (mention and explain at least 2)?
Principle #1. All tests should be traceable to customer requirements. Principle #2. Tessts should be planned long before testing begins. Principle #4. Testing should begin "in the small" and progress toward testing "in the large." Principle #5. Exhaustive testing is not possible.
What are some of the principle that guide the practice of software engineering (mention and explain at least 3)?
Principle #1. Divide and conquer. Stated in a more technical manner, analysis and design should always emphasize separation of concerns (SoC). Principle #3. Strive for consistency. A familiar context makes software easier to use. Principle #8. Remember that someone will maintain the software.
What are some of the principle related to communication (mention and explain at least 3)?
Principle #1. Listen. Try to focus on the speaker's words, rather than formulating your response to those words. Principle # 5. Take notes and document decisions. Someone participating in the communication should serve as a "recorder" and write down all important points and decisions. Principle # 8. If something is unclear, draw a picture. Principle # 10. Negotiation is not a contest or a game. It works best when both parties win.
What are some of the principles related to software process (mention and explain at least 3)?
Principle #2. Focus on quality at every step. The exit condition for every process activity, action, and task should focus on the quality of the work product that has been produced. Principle #3. Be ready to adapt. Process is not a religious experience and dogma has no place in it. When necessary, adapt your approach to constraints imposed by the problem, the people, and the project itself. Principle #7. Assess risk. Lots of things can go wrong as software is being developed. It's essential that you establish contingency plans.
What are some of the principles related to planning (mention and explain at least 3)?
Principle #2. Involve the customer in the planning activity. The customer defines priorities and establishes project constraints. Principle #6. Be realistic. People don't work 100 percent of every day. Principle #10. Track the plan frequently and make adjustments as required. Software projects fall behind schedule one day at a time.
Explain 3 software quality characteristics.
Reliability -provides the services expected by the users in a correct and consistent manner Efficiency - does not waste computer resources (space and time) Maintainability - easy to modify Usability - offers appropriate user interfaces and external documentation Others: Easy to Understand, Easy to Test, Low Cost, Reusable Components, Delivered On Time, Portable
What is a use-case and what does scenario in use case answers (mention 3)?
Use Case is a collection of user scenarios that describe the thread of usage of a system. Each scenario is described from the point-of-view of an "actor"—a person or device that interacts with the software in some way. Use cases are used to describe the outwardly visible requirements of a system. They are used in the requirements analysis phase of a project and contribute to test plans and user guides. They are used to create and validate a proposed design and to ensure it meets all requirements. • What are the actor's goals? • What preconditions should exist before the story begins? • What main tasks or functions are performed by the actor?
What are the main two types of requirements? Give an example for each one
• A functional requirement describes an interaction of a system with its environment. Example: "The program will output (at the terminal screen) the names of the presidents (and their ages) in alphabetical order." • A non-functional requirement describes a restriction that constrains how the problem is to be solved. Example: A specific process is used
Mention and explain at least 5 interface design principles.
• Anticipation: A WebApp should be designed so that it anticipates the use's next move. • Communication: The interface should communicate the status of any activity initiated by the user • Efficiency: The design of the WebApp and its interface should optimize the user's work efficiency. • Focus: The WebApp interface (and the content it presents) should stay focused on the user task(s) at hand. • Track state: When appropriate, the state of the user interaction should be tracked and stored so that a user can logoff and return later to pick up where she left off.
What are some of the issues for navigation modeling? (Mention 4)
• Should certain elements be easier to reach (require fewer navigation steps) than others? What is the priority for presentation? • Should a navigation log be maintained for users? • Should a full navigation map or menu (as opposed to a single "back" link or directed pointer) be available at every point in a user's interaction? • Should navigation be accomplished via links, via search-based access, or by some other means?