Software Engineering I SENG201
Lecture 2 – Software engineering activities (part 1)
February 22, 2022
Copyright By PowCoder代写 加微信 powcoder
Previous lecture
1. Course administration
2. Why this course
3. Introduction to software engineering
1. Software engineering processes
2. Requirements engineering – overview
1. Software engineering processes
2. Requirements engineering – overview
Before thinking about processes
What types of
activities would we typically perform as software engineers?
Typical (distinct) types of activities* Requirements engineering
Design Coding
Operation + maintenance
*Terminology may vary in text books and other sources
(Typical) distribution of resources
% excluding maintenance
% including maintenance
Requirements engineering
Operation + maintenance
(Typical) distribution of resources
% excluding maintenance
% including maintenance
Requirements engineering
Operation + maintenance
*See also 40-20-40 rule: 40% analysis, 20% coding, 40% testing; van Vliet, H. (2008). Software Engineering: Principles and Practice
(Typical) distribution of resources
% excluding maintenance
% including maintenance
Requirements engineering
Operation + maintenance
• What do we learn from this?
– To reduce costs over entire product cycle: reduce costs of maintenance
– Requires that software is understandable and easy to change
– Disclaimer: Maintenance requires design, coding, testing, etc.
*See also 40-20-40 rule: 40% analysis, 20% coding, 40% testing; van Vliet, H. (2008). Software Engineering: Principles and Practice
https://spectrum.ieee.org/inside-hidden-world-legacy-it-systems
Course will discuss types of activities “twice” Requirements engineering
Design Coding
Operation + maintenance
(1) ~until lecture week 6: basics, principles, Java
(2) ~from lecture week 6: details, application
*Terminology may vary in text books and other sources
Software development processes
• Distinct types of activities, e.g.,
– Requirementsengineering
– Operation + maintenance
Tied together by process (instead of ad-hoc work)
• Process: structured set of activities to develop software
– Different “flavors” of software engineering processes
– “Phases”/activities (may) occur in parallel, iterative, incremental
Example – waterfall
Example – V-model
Example – Rational Unified Process
Example – iterative, incremental
Example – agile processes (e.g., Scrum)
Example – DevOps
E.g., Facebook updates its code base twice per day; Amazon deploys code every 11.7 seconds R. Kazman (2017). Software Engineering. IEEE Computer
1. Software engineering processes
2. Requirements engineering – overview
Remember from before
• Distinct types of activities, e.g.,
– Requirementsengineering
– Coding (“Java part” of course)
– Operation + maintenance
Requirements engineering
• Identify and document software requirement, customer needs – Can happen once, multiple times, continuously
• Typical challenges
– How to find the right requirements?
– How to deal with changing requirements?
– Howtobettercommunicaterequirements?
• Different types of requirements
– Functional requirements (functionality, interactions with environment)
• Often stated as actions (e.g., “The customer must be able to search flights.”) – Quality(“non-functional”)requirements
• Often stated as constraints (e.g., “Response time should not exceed 1ms.”)
Example classification of quality requirements1
Process requirements
Delivery requirements
Implementation requirements
Standards requirements
Quality (“non-functional”) requirements Product requirements2
External requirements
Design time
Portability
Reliability
Performance
Scalability
Legal constraints
Economic constraints3
Interoperability requirements
1Many classifications in literature, companies, standards, e.g., IEEE 9126, ISO/IEC 25001 2 Often referred to as technical quality requirements
3Often referred to as business requirements, e.g., time-to-market, budget
Typical requirements engineering activities (1)
• Stakeholder analysis
– Stakeholders: anyone interested in, affected by, or impacting system
– Notonlyclients/users
– Who are stakeholders, what is their impact and priority?
• Requirements elicitation
– Identifyrequirementsfromdifferentsources
– E.g., interviews, surveys, focus groups, observations, document analysis
• Requirements documentation
– Capturerequirementsforcommunication
– E.g., formal requirements documents, user stories, use cases
Typical requirements engineering activities (2)
• Requirements analysis
– Prioritize requirements (e.g., high, medium, low)
• Usually context-dependent
– Estimate effort (e.g., time)
• Usually context-dependent
– Identify dependencies between requirements
• Requirements verification and validation
– Check“quality”ofrequirements
– Are requirements realistic, unambiguous, without conflicts, etc.?
– Example (conflict) for Uber (ride sharing app)
• “Unregistered users should be able to book rides, but won’t get discount.”
• “Payment requires verified user account.”
Uber – possible stakeholders
Passengers
Taxi drivers
Taxi companies
Local regulators
Payment services
Uber organization
Uber – possible requirements
Functional
Dependencies
Sing up and create account
Driver, passenger
Driver, passenger
Order ride
Check status of ride
Accept ride
Check eligibility of driver
Uber organization
Dependencies
Performance
Scalability
1. Software engineering processes
2. Requirements engineering – overview
Cartoon of the day
Key lesson: Software engineering involves dealing with different “stakeholders” who have different views on problem and solution. Understanding and communicating what to build is not trivial.
程序代写 CS代考 加微信: powcoder QQ: 1823890830 Email: powcoder@163.com