CMSC 447 - Software Engineering Midterm
Agile Software Methodology Examples
- Scrum - Kanban - Lean Software Development - Extreme Programming (XP) - Feature Driven Development (FDD)
Differences between Customer and End User? Can they be the same?
The customer is that person/persons who provides requirements for the product. That person/persons also provide the funding for the product and may be an End User. The End-user is not always a customer, but is just a user of the final product. They do not have to give requirements and will almost never provide funding.
Documents generated for each phase of testing
Unit Test - The Unit Test Plan Integration Testing - The Integration Plan System Testing - The System Test Plan Acceptance Testing - Aceeptance Test Plan
When is System's Engineering not necessary?
When developing a small product, with a small team.
Integration Testing
Different software modules are combined and tested as a group to make sure that integrated system is ready for system testing.
Planning
Focuses on the scope of the project Development of the: - Project Plan - Schedule - Estimation of cost - Procurement requirements
Customer
That person or persons who is responsible for the acquisition of the software services. This person provides requirements for the product in which he/she is acquiring software services to produce.
Scrum Master
That person responsible for ensuring the Development team practices agile values and principles and follows the processes and practices that the team agreed they would use.
Team/Technical Lead
That person who leads the Development team. This person performs software development and assist other developers when needed. This is usually the team's go to person for questions and concerns about the team and the team's progress.
Developer
That person who produces the software product according to the requirements given by the customer.
System Engineer
The System Engineer Specifies, builds, maintains and supports technical infrastructure. Performs high-level root cause analysis for service interruptions, troubleshooter. Duties typically include making recommendations for scalability, troubleshooting any problems that arise during the use of the system, reviewing a company's security requirements, and recommending security measures to allow the company to avoid compromising any sensitive data. The System Engineer can perform the same functions as the Software Engineer
Four Levels of Product Testing
1. Unit Testing 2. Integration Testing 3. System Testing 4. Acceptance Testing
Design and Prototyping
A determination of how the system should be developed is performed and documented Takes into consideration: - Requirements - System Architecture - Expected Inputs - Requested Outputs - Design the Product using the given requirements Output of this phase are all design documents listing all components for the project.
System Engineering
A field of engineering and engineering management that focuses on how to design and manage complex systems over their life cycles. Intended to support professional software development rather than individual programming. Includes techniques that support program specification, design and evolution, which are normally relevant for professional software development. The programs, all associated documentation, libraries, support web-sites and configuration data that are needed to make these programs useful.
Software Development Lifecycle (SDLC)
A framework defining tasks performed at each step in the software development process. A structure followed by a development team within the software organization. Consists of a detailed plan describing how to develop, maintain and replace specific software.
Velocity (as related to Scrum)
A measure of the amount of work a Team can tackle during a single Sprint and is the key metric in Scrum. Velocity is calculated at the end of the Sprint by totaling the Points for all fully completed User Stories.
Incremental Software Development Methodology
A method of software development where the model is designed, implemented and tested incrementally (a little more is added each time) until the product is finished. It involves both development and maintenance. The product is defined as finished when it satisfies all of its requirements.
Software Engineer
A software engineer is a person who applies the principles of software engineering to the design, development, maintenance, testing, and evaluation of computer software. Focused designing software for an end-user based on requirements given by the customer. The applications they develop could be for iOS, Android, Windows, Linux, or other operating systems. They typically work with QA and hardware engineers to develop testing plans. Software engineers might also determine what development methodology to use after documenting software requirements.
Product BurnDown Chart
A visual measurement tool that shows the completed work per day against the projected rate of completion for the current project release. Its purpose is to enable that the project is on the track to deliver the expected solution within the desired schedule.
Acceptance Testing
Acceptance testing is a test conducted to find if the requirements of a specification or contract are met as per its delivery. Acceptance testing is basically done by the user or customer. However, other stockholders can be involved in this process.
Software Development
Builds the software
Requirements
Customer and End Users, in some cases, relay details of what the Software should do to Development team. Output in a Waterfall model is a Requirements Document Output in an Agile model is a Backlog of tasks to be performed.
Product Owner
In Agile the Product Owner performs the jobs of product designer, customer liaison, and project manager.
When should System's Engineering be used?
Intended to support professional software development rather than individual programming . System's Engineer is not needed when developing a small product with one Developer or a personal development product.
Operations and Maintenance
Monitor software for issues Respond to Change Request Make enhancements Fix bugs Retest Redeploy Repeat until End of life of system.
Project Manager
Project managers are responsibility for the planning, procurement and execution of a project, from a defined start and a defined finish of the project. This person is required to handle the project's budget and schedule.
Agile Software Development
Refers to a group of software development methodologies based on iterative development, where requirements and solutions evolve through collaboration between self-organizing cross-functional teams. ... It is a lightweight process framework for agile development, and the most widely-used software development method.
Scrum Software Development Methodology
Scrum itself is a simple framework for effective team collaboration on complex products. Product Backlog - the Product Backlog is an ordered list of everything that is known to be needed in the product. It is the single source of requirements for any changes to be made to the product. The Product Owner is responsible for the Product Backlog, including its content, availability, and ordering. It evolves over item. Sprint Backlog - As described in the Scrum Guide, the Sprint Backlog is the set of Product Backlog items selected for the Sprint, plus a plan for delivering the product Increment and realizing the Sprint Goal. The Sprint Backlog is a forecast by the Development Team about what functionality will be in the next Increment and the work needed to deliver that functionality into a "Done" Increment. The Sprint Backlog makes visible all the work that the Development Team identifies as necessary to meet the Sprint Goal. The Increment is the sum of all the Product Backlog items completed during a Sprint and the value of the increments of all previous Sprints. At the end of a Sprint, the new Increment must be "Done," which means it must be in useable condition and meet the Scrum Team's definition of "Done." An increment is a body of inspectable, done work that supports empiricism at the end of the Sprint. The increment is a step toward a vision or goal. The increment must be in useable condition regardless of whether the Product Owner decides to release it.
System Testing
System testing is performed on a complete, integrated system. It allows checking system's compliance as per the requirements. It tests the overall interaction of components. It involves load, performance, reliability and security testing. System testing most often the final test to verify that the system meets the specification. It evaluates both functional and non-functional need for the testing.
Unit Testing
Testing Individual Components.
Testing
Testing of the software developed in step 4 The most important phase of the SDLC Output is functioning software according to the given requirements, ready for deployment
End User
The person, persons or system that will be using/accessing the system.
Root Cause of Software Failures
The root causes of most software failures are size and scope of software and no process for building the software.
Deployment
Turn the Product over to the customer
Roles in Agile/Scrum Methodology
a. Product Owner b. Scrum Master c. Customer d. System Architect e. Team Lead f. Developer g. Validation Tester h. End User
Roles in Incremental Methodology
a. Project Manager b. Customer c. System Architect d. Team Lead e. Developer f. Validation Tester g. End User
Phases of the SDLC
planning, requirements, design and prototyping, software development, testing, deployment, operations and maintenance
why is it important for an organization to practice Software Engineering methods?
t's important for an organization to practice Software Engineering to ensure software products are developed to meet the requirements of the project. Software Engineering methods are also helpful monitoring the project's timeline, budget and progress for completeness.