The Mid-Term Exam
1. Define and differentiate the following types of requirements:
- Business requirements
- User requirements
- Functional requirements
- System requirements
(a) Business requirements represent high-level objectives of the organization or customer who requests the system. Business requirements describe why the organization is implementing the system.
(b) User requirements describe user goals or tasks that the users must be able to perform with the product. User requirements describe what the user can do with the system.
(c) Functional requirements specify the software functionality that the developers must build into the product to enable users to accomplish their tasks, thereby satisfying the business requirements.
(d) System requirements describe the top-level requirements for a product that contains multiple subsystems. A system can be all software or it can include both software and hardware subsystems.
2. What are some primary reasons that software development projects are not completed successfully and on-time?
Usually, software development projects are not completed on time because the production date is created well before the software requirements are defined. This creates pressure on the developers to include all of the requisite functionality at a certain level of quality. The production of the software is undermined by the marketing and business requirements. Something has to be sacrificed in this situation; either the functionality or quality of the software doesn't meet the requirements to benefit the end user, or the delivery date is pushed back in order to maintain the quality of the end product.
Finalizing the requirements and establishing the initial building of the software before setting a release date in concrete would help avoid this issue.Making that proper resources such as developers, budgetary necessities, and development time are planned out in advance can also benefit the project. Overall, poor planning is one of the main factors as to why software project fail to meet expectations.
3. What should be the relationship between the project management team and the customers of the project? What are some effective ways of ensuring the needs of the customers are properly addressed?
The relationship between the project management and the customers should be a partnership, whose ultimate goal is mutual gains from the software project. Communication is the key to ensure high quality requirements from a software product and to ensure that the management and the customers agree to be successful. The project management needs to ensure that the business requirements are met and that the software produced is profitable. To ensure profitability, functionality and customer satisfaction has to occur. Customers should give constructive feedback to ensure required functionality is included in the software via prototypes and software documentation. Customers having realistic expectations and a reasonable understanding of development time are critical in keeping project pressures under control. Clear communication about the objectives and ultimate goals could help ease those pressures and help generate a quality product.
4. What are some costs that result from improper project management in a software development effort? Identify at least three and provide a thorough discussion of each of them.
Poor planning is the root of most of the problems, and ultimately what costs time and money. A symptom of poor planning includes cost overruns. Underestimated budget cost assessment is one reason behind improper software management. Building an inaccurate budget around a project that takes much more funds and manpower to produce the final product can cause cuts in functionality, quality, or extensions in release times of the software.
A product that is released that doesn't meet the customer's needs also costs the project money, time to reevaluate the project or scrap it all together, and potentially turn away a potential user base. If the project isn't abandoned, then it must be patched and corrected after it is released, which can also turn away some users, and cost additional man-hours as well as funding that could be used on a new project or an update to the unsatisfactory software.
5. Using table 3-1 on pages 44-45 as well as the entirety of chapters 3 and 4 in Wiegers, addresses the following:
A. List what you believe to be the three (3) most valuable "good practices" to employ in managing a software development project and discuss why you chose them over the others in the list. Support your position with a combination of your own thoughts and outside resources.
B. As a project manager, what do you believe to be the most valuable skills that you should possess to lead a successful projects? Discuss why.
Prioritize requirements is necessary to make sure that the most meaningful requirements (be it system, business, user, or functional) are met and that they are ultimately the strong parts of the final software product. Testing the requirements to make sure they are actually necessary and met expectations. Having a requirement, something that is necessary for the software to exist and be useful, that is proven to be valid and useful is important. Finally, defining the vision and scope helps to identify what the ultimate product will be, and what it will not be.
As a project manager, communication is the most important skill to have. Being able to communicate to the shareholders or investors in the project and make sure their ultimate goal is met, as well as the functionality, which ties in to the customers is present. Making sure all the features are present so that customers are drawn to the software and find the features useful is important. Querying the customers, creating prototypes, and getting feedback before releasing the software is a part of the communication process.
6. Using Wiegers chapter 11 select any two (2) visual requirements models (of the six described) and do the following: (a) define each of them and (b) describe the context in which you would use them. As part of your overall answer to this question also discuss why you think visual requirements models may (or may not) be a potentially effective tool in requirements gathering.
A dialogue map is a basic outline of how transition in the software occur and help convey visually, the abstract design of the software. Being able to see the navigation of the software makes it easier to understand the transitions from one element to the next and gain a greater understanding of the requirements needed, or to help eliminate requirements that are unnecessary.
A decision tree is useful for visually identifying the logic-based decisions that a piece of software operates with. Much like a dialogue map, the decision tree consists of a set of elements that contain logical conditions and then lines that lead to the resulting function. A decision tree, much like the dialogue map helps in the development process in ensuring that requirements are included in the software and possibly culling requirements that may not ultimately be necessary or comply with the vision of the project.
7. Provide a definition for "Cloud Computing" and discuss its implications on commercial software development. (Note that there are variances on the definition of this term, so your reference information and discussion should help support your position.)
"Cloud Computing" is basically just internet based computing. The term "cloud" refers to the internet, where shared resources, software, and information are provided to computers and other devices from this cloud. With cloud computing, customers do not own the physical infrastructure but rent the usage from a third-party provider for what they use. Cloud computing is more of an on-demand network access to a shared pool of information and resources.
Cloud computing has many implications on commercial software development. Cloud computing has opened the door for new opportunities for software companies to offer their products out of a cloud. These software companies can deliver their software as a service to the client and the customer can access the application remotely from the web. This eliminates the need to install and run the application on the customer's own computer.
8. Using Weigers' chapter 10, discuss the role of requirements documentation addressing the following issues:
a. For each of the first four major sections (Introduction, Overall Description, System Features, External Interface Requirements) address the following:
- Provide a general description and purpose of the section.
- What are the primary sources of input?
- Who should contribute to their development?
b. What are the pros and cons of extensive use of requirements documentation?
(a) The introduction provides an overview to help the reader understand how the document is prepared. The introduction includes the revision or release number for the product or application whose requirements are identified in the document. The overall description presents a high-level overview of the product and the setting in which it will be used; the product users, known constraints, assumptions, and dependencies. The overall description also describes the products context and origin. The system features describes the features of the product. It includes a short description of the feature and indicates whether it is a high, medium of low priority. External interface requirements identify hardware, software, or database essentials with which a system or component must obstruct. This section provides information to make sure that the system will correspond properly with outside components. The primary sources of input should be the developers, as well as the users who will have to directly use the software.
(b) Documenting project requirements ensures understanding from each party involved of the requirements, and minimizes miscommunication. Requirements documentation can be useful but rigorous, and having so much input can cause conflict.
9. What is a data dictionary? How is it useful and to whom? When should you consider including one in a project?
A data dictionary is a centralized repository of information about data. This information includes meanings, relationships to other data, origin, usage, and format. Information within data dictionaries binds together various requirements depictions. Data dictionaries are useful to any developers or database users working on a particular database. Database developers should include a data dictionary anytime there are multiple developers or users working on the same database.
10. What do the following terms mean to you in the context of software development?
(a) Robust, in terms of software development, is when a system will continue to function properly even when there are invalid inputs or defects in installed software or hardware components. (b) Interoperable, in terms of software development, is how easily the system can share data and/or services with other systems. (c) Reliable, in terms of software development, is the probability of the software working without any problems for specific period of time.
(d) Portable, in terms of software development, is the effort required to move a piece of software from one operating environment to another.
11. What are some techniques a project manager can employ to prioritize and validate user requirements? Identify and describe at least two methods.
A Prioritization model can help prioritize user requirements during the development process. Having a scale of high to low priority requirements can help keep the development process on track, and on time. Being able to rate the relative penalty that a customer or business would suffer if the feature was not in the software is important in judging where on the scale the requirement lies. Validating requirements can be done by peer review; allowing someone other than the author of the project requirements helps identify unverifiable and ambiguous requirements. Validating user requirements can also be done by designing test cases to help reveal problems. Creating test cases helps make the project seem tangible and gives a visual reference to the software development project, as well as the requirements.
12. Using chapter 6 in Wiegers as a reference, provide a general definition of each of the four sources of project requirements below and provide specific examples of each using our hypothetical bookstore project. Be sure and support your examples with a brief discussion of why.
- Project champion
Stakeholders are individuals or organizations that are actively involved in the creation of the software, and are directly affected by the outcome of the final product. In the case of the bookstore project, the stakeholder would be the college, which consists of the CIO, the Vice Provost of Student Services, Vice President of the Student Government Association, Bursar's Office, Associate Vice President, and the college president. Customers are the end users of the software, or the individuals who will interact with the final product. The bookstore customers are those people that actually use the functions of the online bookstore. The people who make purchases from the bookstore, and utilize its features are the customers. Users are also customers, those who interact with the software and use the final online store to search for, and purchase books. The project champion is a person who represents a specific user class. A project champion in the case of the bookstore would be the Vice President of the Student Government Association. This individual speaks from a user's perspective and gives input on the requirements associated with that role.
13. Define the following terms:
- Scope creep
(a) COTS is "commercial off-the-shelf" product. This product is a software package that is bought from a vendor and either used as a self-contained solution to a problem or incorporated, adapted, and extended to please local customer needs.
(b) IEEE is the Institute for Electrical and Electronics Engineers. IEEE is a professional society that maintains a set of standards for managing and executing software and systems engineering projects.
(c) OSI is the open source initiative for software that harnesses the control of dispersed peer review and clearness of procedure.
(d) Scope creep is when the scope of the project continues to increase, typically in an uncontrolled fashion, throughout the development process.
14. Contrast a use case with a functional requirement. Provide two examples of each from the online bookstore project. What is the relationship between a use-case and a functional requirement?
Use cases have clearer expectations of what the new system will let the user do than the functional requirements would. Use cases are built from the customer's perspective and don't contain the information a developer would need to write the software. In the example of the online bookstore, a list of features such as a wish list, shopping cart, or other design elements that are presented to the customer who wants to purchase a book or college memorabilia would be included in a use case. The details of how the bookstore communicates with the college database in order to associate a student's ID with their student loan would be in the functional requirements document. The end user has little need to understand the back end functionality of the software, which is contained in the functional requirement document. The developers do not get enough information from the use case documentation to develop the complex underlying systems behind the software.
15. Why are prototypes considered an effective tool in software project development efforts? Be sure and define a prototype in your answer.
Prototypes are considered an effective tool in software development because prototypes can clarify and complete the requirements of the system. A prototype is a partial, preliminary, or possible implementation of a program. They can also be used as a design tool for the software development. Prototypes are usually used to resolve uncertainties early in the development process. They are useful in revealing incompleteness in the requirements.
16. Research and present at least two commercial (or open-source) project management tools providing at least the following data: company name, product name, URL, key features).
Springloops Sp has a program called "Springloops" (http://www.springloops.com/). This program is a unique source code management tool focused on web development teams. This program allows for rapid collaboration in a protected space.
Another program is called Creative Pro Office (http://www.creativeprooffice.com/) which is a service if UpStart Productions. This program is a free and open-source application. It allows the user to see the status of projects, tasks, invoices, and more in a customizable screen. You can also create an unlimited amount of projects for each client. Application also has a colander feature, invoices, and expense tracking.
17. For the Online Bookstore project we have been considering in this class and using information and outlines contained in the assignment readings complete a sample subset of a Vision & Scope Document. Note that you only need to complete part I (Business Requirements) of the entire V&S structure.
With the advent of online bookstores such as Amazon and eBay, the on-campus bookstore is concerned with the loss of revenue due to students choosing the convenience and ease of use of these alternative sources to purchase their books. Also, companies like Chegg.com offer book renting services which hurt the sale of new textbooks.
1.2 Business Objectives and Success Criteria
With the creation of an online bookstore, student appeal will increase due to the convenience of having the option of going to the online bookstore, as opposed to the physical bookstore and the hassles therein. Keeping student interest means keeping tuition and book sales inside the college, and allows the bookstore to compete with the online bookstore market, further increases potential revenue for the college. Allowing alumni the ability to shop for college branded memorabilia through the online bookstore will also increase sales, especially being able to reach alumni that have moved out of the college area. Catering to the student body, with the possibility of increased enrollment and retention as well as stabilizing the sale of books despite the competitive commercial market will be the measure of success.
1.3 Market Needs
Currently students only have the option of visiting the on-campus bookstore for their textbook needs, and alumni who want to purchase items with the college brand. Students are currently seeking alternatives to the bookstore to find what they need and are increasingly using third party online book retailers to do so. An online bookstore wholly owned by the college that caters to this customer base is critical to the success of the college. Offering customers a convenient method of ordering their books or other college related items directly from the school helps insure that the college retains the critical income from book sales.
1.4 Business Risks
Competition and lack of student acceptance are the two largest risks with developing the online bookstore. If students do not choose to use the online bookstore, be it from poor design, prohibitive/noncompetitive book costs, or lack of marketing, the continued loss of income from book sales would be detrimental. Students who choose to stay loyal to the alternative sources of college textbooks they are currently using will also contribute to the failure of the project.
18. What have you gained from this course so far that you will remember or believe to be useful in your future as an IT professional? You may discuss anything related to the course experience including readings, assignments, discussion topics, or learning methods used.
I have gained vast information on the software development process. I never realized how much of a complex process developing software could be. I have learned different ways to manage and organize projects. The course has taught me that there are several different approaches to taking on a project. It has also provided a different outlook on team work and the different processes involved project management. This class has taught me how to manage an application software development process from idea beginning, through design, and into development and deployment. The process mythologies taught in the course can be applied to a wide-range of careers and professions.