Software Engineering - Test 1
Software Engineering is non-sterotypical
(Software engineering requires a less exact grasp of ht ins and outs of a software)? Be able to work with other people effectively. A computer science major may stereotypical want to spend all there time learning more about computers and coding. However, software engineering requires one to be social, since the most important part of it is understanding what the client needs.
How are COTS and open-source projects different from internal and and contract projects?
Generally, the developers of the open-source software are unpaid volunteers and often are interested in using the software once it is established. Rather than dedicating time to testing, the projects are released and the users submit fault reports which suggest possible corrections to the project. Corrective, Perfective, and Adaptive maintenance are performed until the software reaches retirement. COTS is software written for the masses rather than just one client.
Who is Jacobsen? What is Rational Software? What do these have to do with software engineering?
Jacobsen was a major contributor to the Unified Modeling Language (UML), Objectory processes, and Rational Unified Process(RUP). Rational Software Corp. bought Objectory AB (founded by Jacobsen) which brought Jacobson, Booch, and Rumbaugh together. These three are responsible for designing the UML and for evolving Objector Process in the RUP
According to Brooks, what are the three primary cause of project failure?
Lack of time
What activities take place during the Requirements workflow?
Requirements determine the client's needs 1. understand application domain 2. develop business model, determine cost effectiveness 3. determine constraints 4. artifacts are expressed in natural language
Which Phase of software engineering is most critical, and why?
The most critical phase of software engineering is requirements elicitation!! This is because the job of a software engineer is to produce what a client needs, and without requirements, they cannot do this, Also it is much more costly to fix mistake later in the software process then if caught early int the process.
Explain why Brooks says "Plan to throw one away"
because you will nay any. The best planning is not to omniscient as to get the system right the first time. The first system is often not usable. It may be too slow, big, or awkward to use and will have to be thrown away any way. Thus, Brooks recommends planning for this stage in advance.
According to McConnell: What is the most challenging part of programming?
conceptualizing the porblem
RRRRRRobustness
degree to which a system continues to function properly when confronted with invalid inputs, faulty hardware/software or unexpected operating conditions
"user and developer" syndrome
differing cultures, languages, objectives, etc
Portability
effort required to migrate the product from one operating environment to another
Maintainability
how easy it is to correct a defect or modify the software
"undiscovered ruins" syndrome
in search for requirements, the more you find, the more you realize remain.
Adaptive maintence
is done to keep the product functional in the changing environments
What is the "user and developer" syndrome?
the "user and developer" syndrome refers to issues caused by the fact that users and developers come from different worlds, and thus will use different words and metaphors to describe the same thing.
What are some important thing to keep in mind when interviewing a stakeholder for the purpose of determining requirements?
1. Be careful not to let your own biases influence the question you ask and what you understand 2. Ask context free questions first 3. afterwards, ask soulutions-context questions 4. Stakeholders often subtly switch from what to how. This is beneficial 5. Stakeholders often describe what they want, rather than what they need
What are some important things to keep in mind during a brainstorming session?
1. Everyone must participate 2. Every idea is acceptable; out-of-the-box thinking is encouraged 3. brief lulls do not indicate the end of the session 4. at the end, ideas should be prioritised
What are the pluses of programming as an activity according to Brooks/
1. Joy of creating from original design 2. Joy of creating a useful product for people 3. Complex programs working together as designed 4. Always learning something new 5. Tractable or mouldable medium
According to Leffingwell and Widrig, what are the three primary cause of project failure?
1. Lack of user input 2. Incomplete requirements and specs. 3. Changing requirements and specs.
What are the minuses of programming as an activity according to Brooks/
1. One must perform perfectly 2. Other people set the objectives, resource, and information 3. Testing can be tedious 4. Debugging can last a while 5. Finished products may have become obsolete
According to McConnell: What percentage of change in the requirements is to be expected during the development phase?
25%
According to McConnell: what percentage of code is needed just for exception handling?
90%
What is the difference between a "program" and a "programming systems product", as defined by Brooks?
A program is a stand alone object which is run on the system it was created on. A programming system product consts 9 times as much as a program and can be run, tested, repaired, and extended by anybody. a programming systems product constitutes an entire facility for large tasks.
Explain, in as much detail as possible, the following statement: "The Unified Process is use-case driven"
A use-case is a piece of functionality of system that gives the user a valuable result. A process is a set of activities need to turn a user's requirements into a software system. The Unified Process is a process that uses several different use-cases in order to gain a complete picture of what the system is to do, and then use this understanding as the foundations upon which to build a successful system.
How do JB&R define the difference between iteration and incrementation?
According to JB&R, projects are split into mini-projects. Each mini-project is an iteration that results in an incrementation. Iterations refer to steps in the workflow while increments refer to growth in the product.
What activities take place during the Analysis workflow?
Analysis - analyze and refine requirements 1. develop specs 2. determine architecture(just classes and attributes) 3. develop a Software Project Management Plan 4. specs are written in a mathematical and precise notation
Explain Brooks' law
Brooks' says that adding manpower to a late software project only makes it later. This is because new staff have to be trained and have the project explained. The more progress has already been made, the longer it takes to train. This means that less people are available to work for some time.
Software Engineering v. Computer Science
Computer science is more precise than software engineering. Computer science focuses on understanding how computers work and how to get them to do exactly what is required. Software engineering loses some of that precision in exchange for creating solution that work within given specications
What activities take place during the Design workflow?
Design - how the project should function 1. determine internal structure of the product 2. extract and assign methods to classes 3. chose appropriate algorithms 4. document design decisions
corrective maintenance
Done to fix faults in software
(all defined on other cards) List and briefly describe the five different non-functional types of system requirements, indicating if each one is more important to the user or developer.
Efficiency - (User) RRRRRRobustness - (User) Flexibility (User) Maintainability (Developer) Portability (Developer)
What are the advantages of iterative and incremental development?
Every iteration incorporates the test workflow which offers a chance to make sure all artifacts have been correctly developed up to that point. The rrrrrobustness if the architecture can be determined early in the life cycle because each increment builds of the last. Iterative and incremental development enable the developers to mitigate risks early in the cycle. And there is always a working version of the software
What activities take place during the Implementation workflow?
Implementation - build target software in chosen languages(s)
What would be examples of metrics for measuring the quality of the requirements workflow.
Measure of requirements volatility - keeping a record of how frequently the requirements change during the requirements workflow provides a way to determine the rate at which the requirements team converges on the actual requirements of the product Measure of requirements volatility in phases following requirements
Give three statistics that were cited in one of our texts to indicate why oms would say there is a crisis in software development success.
Object-Oriented Software Engineering, only 29% of software projects finish on time and within budget. additionally, 78% of the information technology organizations have been involved in disputes that ended in litigation. Issues like this have been common for over 40 years. Schach (chapt 1) in a study in 2004. less than 1/3 of software projects were completed satisfactorily
What unusual techniques are used in agile/extreme development?
Pair programming in which two programmers work on a given task together, alternating who codes every 15 - 20 minutes is a common in extreme programming. Also, there is no design step before building starts. Instead, the design is modified during construction. Timeboxing is another technique used in extreme programming which development processes depend on fixed time, not fixed features.
List at least five of the standard requirements elicitation techniques which were discussed in class.
Questionnaires interviews observations participation {prototypes similar projects current system storyboarding Requirements Workshop
According to McConnell: Cite some numerical statistics demonstrating the relative cost of errors, depending on where they were made and where they are discovered?
Research by HP, IBM, Hughes Aircraft, TRW and others found that purging an error at the beginning of construction allows rework to be done 10 - 100 times less expensively than when its done during system test or after release. A Requirements error found in the Requirements phase my cost $100, but when found in Post-release may const $1,000- $1,0000.
what is the purpose of storyboarding and what are three ways to do it?
Similarly to prototypes, storyboards can be used to elicit yes-but reactions as early as possible to prevent wasting time and money on the wrong thing. Different types include screen shots, slideshows, simulations, and interactive presentation.
Software Engineering
Software engineering is the knowledge, tools and methods for define software requirements, and performing software design, construction, and maintenance.
Timeboxing
Technique in which a specific task is given a fixed amount of time to be completed in. Work may be "descoped", but the time is fixed.
What activities take place during the Testing workflow?
Testing carried - out in parallel with other workflows 1. nature depends on workflow. artifacts being tested 2. analysis - walkthroughs and inspections 3. design - reviews 4. implementation - unit, integration, acceptance, alpha, beta 5. post-delivery - regression
What is the "undiscovered ruins" syndrome?
The "undiscovered ruins" syndrome refers to the issues caused by the fact that it is impossible to know requirements if no one has though of them. Up to a certain point, the more requirement one finds, the more there are that need to be found.
What are the CMM and ISO 9000 standards and what are they trying to address?
The CMM (Capability Maturity Models) are a group of strategies for improving the software process, irrespective of the actual life-cycle model used, CMM has five levels that denote how mature a software company is in its software process. ISO 9000 is similar, but it stresses documenting the process to reduce the likelihood of a poor software product. These standards are trying to address the issue of poor software development practices that produce unsatisfactory results and contribute to the software crisis
Where did the Rational Unified Process get its name?
The rational part comes from the name of the company that created it, Rational Software Corporation. Unified comes for the fact that it was based on several different methodologies such as the Objectory Process and Booch's method.
Why are there no Planning, testing, and documentation "phases" in software development?
There is no planning phase because it happens within at least three of the other phases, and it is impossible to plan for a product before the requirements are known. There are no testing and documentation phases because they should happen simultaneously with the other phases.
Feature Creep
a succession of small, almost trivial, additions to the requirements that can cause an unwanted level of complexity to the project
"yes-but" syndrome
after seeing a prototype, users often realize that what they requested is not actually what they wanted
Perfective maintenace
maintenance introduced to create changes that the client thinks will make the product work better.
Efficiency
measure of how well the system utilizes processor capacity, disk space, memory or communication bandwidth, Using won't degrade other system's performance
Flexibility
measures how easy it is to add new capabilities to the product
Why does post-delivery maintenance account for as much as 75% of the total cost of a software system? How does the development process address this?
post-delivery maintenance can account for such a large percentage of the total cost because it extends for so long. A popular or successful product may be in use for as long as 15 - 20 years after its initial release, and it always needs to be maintained and updated during that time, The development process addresses this by using tool and techniques that will reduce post-deliver maintenance.