Study sets, textbooks, questions
Upgrade to remove ads
Comp 301 Baird Final Exam
Terms in this set (33)
Define Software Engineering
Discipline encompassing knowledge, tools, and methods for defining software requirements, and performing software design, construction, testing, and maintenance.
Explain how Software Engineering is different from Computer Science
Computer Science focuses more on testing theories and expanding knowledge of the field while Software Engineering uses proven and reliable knowledge for practical application.
Explain how the skills required for Software Engineering are non-stereotypical of CS majors?
Software Engineering requires a lot of social interaction, especially when it comes to interviewing and interacting with clients.
Which phase of Software Engineering is the most critical, and why?
Analysis is the most critical part of Software Engineering because, no matter how perfectly executed, a program that is built to fulfill the wrong requirements is all together wrong.
Why does post-delivery maintenance account for up to 75% of the total cost of a software system? How does the development process address this?
Since many pieces of software are often used for many years, the cost to maintain it year after year adds up. Therefore, the software architecture is designed to be as maintainable as possible, to reduce the difficulty and cost of maintenance.
Why are there no planning, testing, and documentation "phases" in software development?
Planning, testing, and documentation should be an ongoing process through all stages of development.
Give three statistics which were cited in one of our texts to indicate why some would say there is a crisis in software development?
29% success, 18% cancelled, 53% late or over budget or missing features
List and describe three types of maintenance.
Corrective - fixing a problem that interferes with the program's basic function
Perfective - non-critical improvements, such as a speed boost
Adaptive - fixes to adjust to a change in environment, such as a new operating system or new hardware
What are three advantages of iterative and incremental development?
Provides a more steady growth to the project
You always have a working version
Errors and mistakes are found easier and sooner
What unusual techniques are used in agile/extreme development?
Test driven development, pair programming, no overall design, timeboxing, and stand up meetings.
How are COTS (Commercial Off The Shelf) and open-source projects different from internal and contract projects?
Open source and off the shelf products are usually release first and then fix based upon user testing, whereas internal and contract projects focus more on designing and testing before release.
Code Complete ch 1 - 4:
a. What is the most challenging part of programming, according to McConnell?
b. Explain which of the software construction metaphors given you believe is best, and explain why.
c. Cite some numerical statistics given by McConnell demonstrating the relative cost of errors, depending on where they are made and where they are discovered in the software development life cycle.
d. According to McConnell, what percentage of code is often needed just for exception handling?
e. According to McConnell, what percentage of change in the requirements is to be expected during the development process?
a. Conceptualizing the problem
b. Oyster farming bc it's a good way to visualize incremental development(accretion). Oysters make pearls by gradually adding small amounts of calcium carbonate which is what happens with programming.
1. requirement errors caught during system testing cost 10x more
2. requirement errors caught during architecture cost 3x more
3. construction errors caught during system testing cost 10x more
Define time boxing and feature creep.
Timeboxing - allocating a set amount of time to complete certain features. If the deadline is met, great, if not, the feature is either dropped or left as-is.
Feature creep - when a feature is added in here and there and eventually it leads to a never ending cycle of new features being added and the project is never finished.
Who is Jacobsen? What is Rational Software? What do these have to do with Software Engineering?
Ivar Jacobsen started Objective Systems, which later became Objectory AB, and then became Rational Software. At Rational Software, Jacobsen, Grady, and Booch developed the Unified Modeling Language and his Rational Process became the Rational Unified Process.
Where did the Rational Unified Process get its name?
Rational came from Rational Software, where it was developed. Unified came from the unification of many different modeling techniques.
Explain "the Unified Process is use-case driven".
The Unified Process often refers to the product's "use-cases" to make architectural design decisions. The way the software is designed is dependent upon how it is going to be interacted with, or "used".
How to JB&R define the difference between iteration and incrementation?
Iteration - implement then refine
Incrementation - design and then implement
-Know Waterfall model from page 48 OOSE book
-Know Iterative model from page 41
What activities take place during the requirements workflow? Analysis? Design? Implementation?
Requirements - the client's requirements for the software are elicited through interviewing, emailing, etc.
Analysis - the specifications are written up and refined
Design - the architecture is designed and modules are designed
Implementation - the coding and testing begins
What are the CMM and ISO 9000 standards and what are they trying to address?
Both are standards for software development proficiency. They are trying to address the high rate of software project failures and over budget projects.
List three barriers or challenges to requirements elicitation, as discussed in class.
Location, Language, and Cooperation
List 5 standard ways of eliciting requirements.
Interview, Phone calls, Emails, Cameras, Employee Observation
List and briefly describe 5 non-functional system requirements, and whether or not they are more important to the client or developer.
Speed - how quickly the program operates - Client
Reliability - how often the program functions - Client
Extensibility - how easily functionality is added to software - Developer
Maintainability - how easily the software is maintained - Developer
Documentation - how well documented a piece of software is to help new developers work on it - Developers
What would be metrics for measuring the quality of the requirements workflow?
5 important things to remember when interviewing a client?
Your own biases
Start with context free questions
Follow up with solution-context questions
Restate a summary of needs to interviewee to ensure understanding
Combine needs from multiple interviews
Important things to keep in mind when brainstorming?
What is the purpose of storyboarding? 3 ways to do it?
Storyboarding is intended to elicit yes-but reactions early. Pencil & paper, flipcharts, power point.
Explain Brook's Law.
Adding manpower to a late project makes it later
Difference between a program and a programming systems product, according to Brooks.
A program is a single piece of software to be run on a single computer and a programming systems product is to be run on many different machines.
Pluses and minuses of programming as an activity, according to Brooks.
Pluses - Creating something, effective medium, always mentally stimulating
Minuses - Often times you don't get to decide what you make, debugging and errors, deadlines
Explain why Brooks says to "plan to throw one away".
When you build a software product the first time around, it is a learning process. However, that often means a flawed architecture. If you throw away the first one, you are then able to build it again with the foreknowledge of potential issues, and are able to design the product accordingly.
According to Leffingwell and Widrig, what are the main 3 causes of project failure? Main cause according to Brooks?
L/W: Lack of user input, incomplete requirements and specifications, and changing requirements and specifications
Brooks: Adding excessive manpower to a late project
Undiscovered ruins syndrome? User and developer syndrome?
Undiscovered ruins syndrome - The more requirements that are found, the more you know remains. This essentially means that the search for requirements never ends and the product is never able to be completed.
User and Developer syndrome - The communication gap between users and developers. The different skill sets and backgrounds between the users and developers can create language and understanding barriers between them.
Other sets by this creator
ASU Beebe Intro to American government
HIST 2773 ASUB Final(Test 1 + 2 + 3)
Software Engineering (COMP 301) FINAL EXAM