Document Details

MajesticPetra

Uploaded by MajesticPetra

Youssef Ghatas

Tags

software products software engineering product management software development

Summary

This document discusses software products, including project-based and product-based software engineering, software execution models, and comparable software development. It covers topics such as product management and prototyping.

Full Transcript

Software products Youssef Ghatas Acknowledgement Presentation is adapted from Ian Sommerville “Engineering Software Products” Software Engineering Agenda Software Products Project-based Pro...

Software products Youssef Ghatas Acknowledgement Presentation is adapted from Ian Sommerville “Engineering Software Products” Software Engineering Agenda Software Products Project-based Product-based software engineering: Software execution models Other comparable software products Product Management Prototype Software Engineering 3 Software products Software products are generic software systems that provide functionality that is useful to a range of customers. Many different types of products are available from large-scale business systems (e.g. MS Excel) through personal products (e.g. Evernote) to simple mobile phone apps and games (e.g. Suduko). Software product engineering methods and techniques have evolved from software engineering techniques that support the development of one-off, custom software systems. Custom software systems are still important for large businesses, government and public bodies. They are developed in dedicated software projects. Software Engineering 4 Figure 1.1 Project-based software engineering Software Engineering 5 Project-based software engineering The starting point for the software development is a set of ‘software requirements’ that are owned by an external client and which set out what they want a software system to do to support their business processes. The software is developed by a software company (the contractor) who design and implement a system that delivers functionality to meet the requirements. The customer may change the requirements at any time in response to business changes (they usually do). The contractor must change the software to reflect these requirements changes. Custom software usually has a long-lifetime (10 years or more) and it must be supported over that lifetime. Software Engineering 6 Figure 1.2 Product software engineering Software Engineering 7 Product software engineering The starting point for product development is a business opportunity that is identified by individuals or a company. They develop a software product to take advantage of this opportunity and sell this to customers. The company who identified the opportunity design and implement a set of software features that realize the opportunity and that will be useful to customers. The software development company are responsible for deciding on the development timescale, what features to include and when the product should change. Rapid delivery of software products is essential to capture the market for that type of product. Software Engineering 8 Table 1.1 Software product lines and platforms Software product line A set of software products that share a common core. Each member of the product line includes customer-specific adaptations and additions. Software product lines may be used to implement a custom system for a customer with specific needs that can’t be met by a generic product. Platform A software (or software+hardware) product that includes functionality so that new applications can be built on it. An example of a platform that you probably use is Facebook. It provides an extensive set of product functionality but also provides support for creating ‘Facebook apps’. These add new features that may be used by a business or a Facebook interest group. Software Engineering 9 Figure 1.3 Software execution models Software Engineering 11 Comparable software development The key feature of product development is that there is no external customer that generates requirements and pays for the software. This is also true for other types of software development: Student projects Individuals or student groups develop software as part of their course. Given an assignment, they decide what features to include in the software. Research software Researchers develop software to help them answer questions that are relevant to their research. Internal tool development Software developers may develop tools to support their work - in essence, these are internal products that are not intended for customer release. Software Engineering 12 Software product management Software product management is a business activity that focuses on the software products developed and sold by the business. Product managers (PMs) take overall responsibility for the product and are involved in planning, development and product marketing. Product managers are the interface between the organization, its customers and the software development team. They are involved at all stages of a product’s lifetime from initial conception through to withdrawal of the product from the market. Product managers must look outward to customers and potential customers rather than focus on the software being developed. Software Engineering 18 Figure 1.4 Product management concerns Software Engineering 19 Product management concerns Business needs PMs have to ensure that the software being developed meets the business goals of the software development company. Technology constraints PMs must make developers aware of technology issues that are important to customers. Customer experience PMs should be in regular contact with customers and potential customers to understand what they are looking for in a product, the types of users and their backgrounds and the ways that the product may be used. Software Engineering 20 Figure 1.5 Technical interactions of product managers Software Engineering 21 Technical interactions of product managers Product vision management The product manager may be responsible for helping with the development of the product vision. They should always be responsible for managing the vision, which involves assessing and evaluating proposed changes against the product vision. They should ensure that there is no ‘vision drift’ Product roadmap development A product roadmap is a plan for the development, release and marketing of the software. The PM should lead roadmap development and should be the ultimate authority in deciding if changes to the roadmap should be made. User story and scenario development User stories and scenarios are used to refine a product vision and identify product features. Based on his or her knowledge of customers, the PM should lead the development of stories and scenarios. Software Engineering 22 Technical interactions of product managers Product backlog creation and management The product backlog is a prioritized ‘to-do’ list of what has to be developed. PMs should be involved in creating and refining the backlog and deciding on the priority of product features to be developed. Acceptance testing Acceptance testing is the process of verifying that a software release meets the goals set out in the product roadmap and that the product is efficient and reliable. The PM should be involved in developing tests of the product features that reflect how customers use the product. Customer testing Customer testing involves taking a release of a product to customers and getting feedback on the product’s features, usability and business. PMs are involved in selecting customers to be involved in the customer testing process and working with them during that process. Software Engineering 23 Product prototyping Product prototyping is the process of developing an early version of a product to test your ideas and to convince yourself and company funders that your product has real market potential. You may be able to write an inspiring product vision, but your potential users can only really relate to your product when they see a working version of your software. They can point out what they like and don’t like about it and make suggestions for new features. A prototype may be also used to help identify fundamental software components or services and to test technology. Building a prototype should be the first thing that you do when developing a software product. Your aim should be to have a working version of your software that can be used to demonstrate its key features. You should always plan to throw-away the prototype after development and to re-implement the software, taking account of issues such as security and reliability. Software Engineering 24 Two-stage prototyping Feasibility demonstration You create an executable system that demonstrates the new ideas in your product. The aims at this stage are to see if your ideas actually work and to show funders and/or company management the original product features that are better than those in competing products. Customer demonstration You take an existing prototype created to demonstrate feasibility and extend this with your ideas for specific customer features and how these can be realized. Before you develop this type of prototype, you need to do some user studies and have a clearer idea of your potential users and scenarios of use. Software Engineering 25 Key points 1 Software products are software systems that include general functionality that is likely to be useful to a wide range of customers. In product software engineering, the same company is responsible for deciding on the features that should be part of the product and the implementation of these features. Software products may be delivered as stand-alone systems running on the customer’s computers, hybrid systems or service-based systems.. Software Engineering 26 Key points 2 Key responsibilities of product managers are product vision ownership, product roadmap development, creating user stories and the product backlog, customer and acceptance testing. Product managers work at the interface between the business, the software development team and the product customers. They facilitate communications between these groups. You should always develop a product prototype to refine your own ideas and to demonstrate the planned product features to potential customers Software Engineering 27

Use Quizgecko on...
Browser
Browser