CSC 550 Exam 1

¡Supera tus tareas y exámenes ahora con Quizwiz!

Explain why it is simple and fast to deploy a replica of a container on a new server.

They are individual servers that share a single operating system - making more individual server instances (replicas) are fast and easy All replicas share the same server hardware and host operating system.

Why do software product managers have to be generalists with a range of skills rather than simply technical specialists?

They take overall responsibility for the software and are part of all main steps including planning, development and marketing. Need general info on all components of the software. Interface with development team, organization and customers.

What are the benefits to software product vendors of delivering software as a service. In what situations might you decide not to deliver software in this way.

Benefits- avoid large up front payments and always have access to the latest version and reduced management costs Disadvantages- storage issues which could be bad for multinational companies. Data security - some companies may not be willing to hand over control of their data so easily. Data exchange - having a company that you need to exchange data from a cloud service to local software applications.

Using an example, explain why EU data protection rules can cause difficulties to companies that offer software as a service.

Businesses under the EU data protection rules has strict rules on storage of personal information. These rules are often incompatible with SaaS providers. SaaS providers have to guarantee to the law or businesses will be reluctant to use product. Example: Obtaining Informed consent on any and all data collection on the users limits data availability and many SaaS companies are not incompliance of this

Explain the fundamental difference between virtualization using a VM and virtualization using a container.

VM requires loading and starting up large and complex system. Same system on VM than a hardware system on a physical server. Gigabytes. Start up and shut down in minutes Containers are simpler and light weight, containers are megabytes. Started up and shut down in second

Why is cost not the most important factor to consider when choosing a cloud platform for development and software delivery?

You have to keep in mind what you may be giving up and losing by choosing a less costly route If your team is highly experience on one platform, it may be worth it to potentially spend more for that platform because you may benefit from not having to take time for the team to learn the platform, this way they can get right to work with less platform research.

Give three reasons why Extreme Programming (XP) is envisaged by its developers is not widely used.

1.collective team with no project manager. Each person is responsible to keep the team in check. This does not work often. 2. Extreme programming runs on the basis that the customers understand the system. For example, they have the motto "YAGNI" (You Ain't Gonna Need It), which assumes the customer will give everything they need, and developers can ignore the rest. Sometimes developers have to put in their two cents about reliability and security, which defeats the purpose of YAGNI. 3. Pair programming - sees it as a waste of time and money.

Explain why the fundamental objectives of agile software engineering are consistent with the accelerated development and delivery of software products.

Agile directly involves the customer, which allows them to review each increment to make sure they are getting what they want. If they realize they want something different, agile teaches us to embrace change and switch paths. Agile is faster at change because of incremental development. · doesn't waste time planning out the entire project because it expects changes to be made partway through · pushes developers to stay on track and not make anything over complicated · focus on the people, rather than the development process. o Different people have different strengths and agile uses this to its advantage. o This way, for each increment, we can put the strongest person on as lead developer.

What are the key issues that have to be considered when deciding on whether to implement a multitenant or multi-instance database when software is delivered as a service?

Complexity- multi-tenant systems are usually more complex (increased likelihood of bugs) Security - if there is a security breach in multi-tenant, it affects all users Multi-instance, this is not an issue Multi-instance is more costly Multi-instance is far more flexible than multi-tenant - system will be customized for you

Explain why daily scrums are likely to reduce the time that is normally required for new team members to become productive.

Daily scrums keep people in check. If you are brand new to a company, you may not know how projects run. Everyone is aware of what everyone else is doing so if problems arise, the team can re-plan to work with them

Do some background reading and describe three fundamental differences between relational and NoSQL databases. Suggest three types of software product that might benefit from using NoSQL databases, explaining why the NOSQL approach is appropriate.

Differences: NoSQL has no fixed schema, SQL scheme is fixed SQL databases are vertically scalable, while NoSQL databases are horizontally scalable. SQL databases are better for multi-row transactions, while NoSQL is better for unstructured data like documents Software types that use NoSQL · Big data web apps (Uber, Netflix) - require huge data capabilities · Pure document applications -forbes- connects web and mobile applications, aggregate data and integrate with partner feeds · Gaming- scalable and flexible

An architecture designed to support security may be based around a centralized model where all sensitive information is stored in one secure place or a distributed model where information is spread around and stored in many different places. Suggest one advantage and one disadvantage of each of these approaches.

Distributed Model Advantage: Changes can be made in parts of the system without affecting the whole structure. Partial service is possible in the event of a database failure (flexible) Disadvantage: May be slower and cost more Centralized Model Advantage: easy to design and build protection Disadvantage: if said protection and security is breached, you lose everything

Explain why estimating the work required to complete a product backlog item using effort in 'person-hours' or 'person-days' can lead to significant variations between the estimated effort and the actual effort to implement that item.

Estimates are based on subjective judgement. Usually the estimates are made when the team has little experience or minimal knowledge of the work. Learning new technologies required for the product are also hard to predict in estimated effort.

Explain what is meant by IaaS and PaaS. Explain why the distinction between these categories of services is becoming increasingly blurred and why they may be merged in the near future.

IaaS - Infrastructure as a service- Infrastructure is outsourced (servers, storage)basic service label- don't incur capital costs by buying hardware. You can easily migrate software from one server to another. PaaS - Platform as a service- intermediate level-platform is outsourced (infrastructure + runntime and middleware) use libraries and frameworks to implement software - able to develop, run and manage web applications AWS labeled itself IaaS and Google labeled itself PaaS but have no real difference- Today, all cloud providers offer some form of PaaS.

Under what circumstances would you try and push as much local processing as possible onto the client in a client-server architecture?

If you expect connectivity to be intermittent so that it cannot be guaranteed that a server is available. Where there is only a relatively slow or an expensive network connection between client and server. Where it is important that the response time is very short, and you want to avoid network delays.

Why should companies that are developing software products use cloud servers to support their development process?

It can be scalable, resistant and elastic Scalability - maintain performance as load increases Elastic - adapt the server configuration to changing demands Resilient - maintain service in event of server failure

Why is it important that each sprint should normally produce a 'potentially shippable' product increment? When might the team relax this rule and produce something that is not 'ready to ship'?

It is important to always have deliverable because usually stakeholders review each sprint. They want to see their money being put to good use. Also, a shippable product is usually what a customer looks for when seeking improvement on the project. A team may relax this rule if they have an extremely important goal to complete. This goal may be key for all other parts to work properly. Though, they would want this to be ready to ship out in the next sprint.

Explain why domain knowledge is important when identifying and designing product features.

It is important to have knowledge of the area in which you are creating the product for. This allows the development team to think of new and innovative ways to help users do what they want to do.

You are a software product manager for a company developing educational software products based around scientific simulations. Explain why it is important to develop a product roadmap so that final product releases are available in the first three months of the year.

Knowing specific dates and success criteria for deadlines. Make sure the team stays on track to ensure the product is successful (ex. For end of year goals). Stay in line with competitors

You are developing a software product to help manage student admissions in a university. Your agile development team suggests that they should develop this as a number of small releases that potential customers can try and then provide feedback. Comment on this idea and suggest why it may not be acceptable to the system's users.

Managing student admission to a university is a rather large and continuous process in Universities. If you create a small number of releases to potential customers, and problems are found, it can greatly impact the profit and total admission at the university. Issues can cause these values to take a toll if students are unable to apply. From the Universitys' standpoint, they also may not be able to properly process applications. Agile is also used for more stand alone products, not database or independent subsystems. There are many subsystems used when students from all over the world apply for admission and then the university has to process the application. Agile development teams love to make changes and this is problematic for a university admission team. Every student who applies cannot have a different application experience. It is inequitable.

Briefly explain how structuring a software architecture as a stack of functional layers helps to manage complexity in a software product.

Multiple layers require hackers to go through multiple layers before the system is compromised. Layers protect from cybercrime by using authentication and/or encrpytion layer. This protects the system from cybercrime but can often be annoying to users.

What is the fundamental difference between a multitenant SaaS system and a multi-instance SaaS system?

Multitenant Software as a system single database schema- is shared by all users. Logical isolation is used so it seems users are working on their own database. Multi-instance software as a system each customer has its own system that is adapted to its needs including its own database and security controls.

Explain why it is helpful to develop a number of personas representing types of system user before you move on to write scenarios of how the system will be used.

Personas of different types help to imagine what different things users may want to do with your software and how they may want to use it. It also helps to envision difficulties users may have in using product features.

Scrum has been designed for use by a team of 5-8 people working together to develop a software product. What problems might arise if you try to use Scrum for student team projects where a group work together to develop a program. What parts of Scrum could be used in this situation?

Problems: with scheduled deliverable dates and deadlines, product backlog could get the group into trouble and cause things to be late. Range of expertise required- hard in a school project Benefits: Daily scrum meeting (like the stand up meetings we have after class sessions). Quick updates throughout the week to share what everyone is working on Product owner in groups could be good because in class- it is the person with original idea of the project - helps to test and review other work

Explain why it is important that software products are developed and delivered quickly. Why is it sometimes sensible to deliver an unfinished product and then issue new versions of that product after delivery?

Products that are released late often are beat out by competitors. Once users decide on a competitor's product, it is difficult to convince them to switch. You want to be the first product out there even if it is not perfect, you can deploy updates later.

Briefly describe the fundamental difference between project-based and product-based software engineering.

Project based engineering: · product development for an existent customer or client o client has a problem and decides the requirements to solve the problem. · software developer uses the existing requirements to solve the problem for the existing client. Product based engineering · No existing client yet · Engineer sees an opportunity to solve a potential problem that no one has requested yet but the software engineer predicts that they will · Developer then creates their own requirements because the client does not exist yet.

Why should you develop a prototype before you start developing a new software product?

Prototyping can help identify test technology and identify fundamental software components that are needed during development. You may not actually need what you thought and prototyping can reduce the 'surprises' you have during development. In product-based engineering, prototyping also lets potential clients see a physical version of what you are selling to ensure client and developer are on the same page

One of the problems with self-organizing teams is that more experienced team members tend to dominate discussions and therefore to influence the teams way of working. Suggest ways to reduce this problem.

The first thing that can counteract this problem is the co-location that allows the whole team to communicate often and informally. Additionally, all team members must attend a morning meeting to communicate what is being done and what needs to be done. Another way to counteract this problem is to place an enormous emphasis on team communication and when making team communications, value all opinions and ideas (maybe even a democratic approach to decision making?).

Why is it important to try to minimize complexity in a software system?

The more complex a system, the more difficult and expensive it is to understand, change and maintain. Programmers are more likely to make mistakes and introduce bugs

Suggest how a development team might avoid 'feature creep' when they are faced with many different suggestions for new features to be added to a product.

To avoid, the PM and development team should review all feature proposals and compare new proposals to feature they have already accepted. Can the feature add anything new or it is an extension of an existing feature?

Explain why the product owner is an essential role in a Scrum development team. How might a development team that is working in an environment where there are no external customers (e.g. a student project team) reproduce this product owner role?

To ensure the team stays on track with development and within the scope. The product owner makes it so the team doesn't divert work into less relevant but more interesting work In a project, the product owner is still important because they need to keep the development team on track for deadlines (I.e final product, deliverable dates) and be sure the development always stays within the scope that was established and doesn't divert 'to the pretty aspects' of development.

What do you think are the weaknesses of user stories when used to identify system features and how they work?

User stories may later have to be further refined so it can be related to the functionality. User stories are meant to be broad and vague in regards to the system features. This is not very beneficial when learning how the feature may work. Additionally, actual users are said to relate better to a natural narrative that scenarios provide rather than user stories.

What are three important differences between software products and software product lines.

· Software product lines are a set of products with a common core · Products in product lines contain customer specific adaptations and additions. These are needs that are often not able to be met by a singular product · Product lines use a platform that singular products often don't


Conjuntos de estudio relacionados

Chapter 40 Management of patients with gastric and duodenal disorders

View Set

PN Pediatric Nursing Online Practice 2023 B

View Set

Grondslagen van de Chemie: definities

View Set

Spanish 2 - Lección 6 - Estructura: 6.2 Autoevaluación

View Set