Flashcards in POM L4 Deck (24):
Inherent Problems with Software Development
• Requirements are constantly changing (Customers don't know all the requirements in advance)
• Frequent changes are difficult to manage
•There is more than one software system to consider
Software Life Cycle (SLC, Software Process)
• Set of activities and their relationships to each other to
support the development of a software system
Software life cycle model
• An abstraction that represents a software life cycle for the purpose of understanding, monitoring, or controlling the development of a software system.
Methodologies provide general principles and strategies for selecting methods and tools in a given project environment when errors can occur
Key questions for which software methodologies usually provide guidance
How much involvement of the customer/ planning/ reuse/ modelling/ process/ control and monitoring.
Where do we need Models?
- Communication (provides a common vocabulary)
- Analysis/Design : (enables reasoning about the future system)
- Archival (for sorting the design and rationale of an existing system)
Pros and Cons of Modelling
+ complexity reduction
+ makes implicit knowledge about the system explicit
+ formalizes knowledge so that participants can share it
- Models can become complex
Models that support Communication (also called conceptual models)
- Most often used in the early phases of a project and during informal communications (The model does not have to be complete or consistent)
- Used only to communicate idea to a person
- Communication media such as a whiteboard, a mockup or even a napkin design
Models that support Analysis and Design
(also called specification models)
- provides a representation that enables developers to reason about the system
- The model is used to communicate the idea to a tool (it needs to be consistent and complete)
- UML is preferred
Managerial Challenges of Modeling
• Formalizing knowledge is expensive (Antipattern: Analysis paralysis)
• Models introduce redundancy (If the system is changed, the models must be changed. If one model becomes out of sync, it loses its value)
• Models become complex
Typical Software Life Cycle Questions
Which activities should we select for the software project?
• What are the dependencies between activities?
• How should we schedule the activities?
Adjusting a lifecycle model to fit a project
Naming: Adjusting the naming of activities
Cutting: Removing activities not need in the project
Ordering: Defining the order the activities take place in
Modeling a Software Lifecycle
- Functional (Scenarios, user stories, use case model)
- Structural (object identification, class diagrams)
- Dynamic (sequence diagrams, statechart and activity diagrams)
Activity Diagram for the Life Cycle
Software development goes through a linear progression of states:
1) problem definition activity
2) software development activity
3) system operation activity.
Two Major Views of the Software Life Cycle
- Activity-centered (SLC is set of development activities)
- Entity-centered (SLC is creation of deliverables)
An activity-centered life cycle model that prescribes a sequential execution of activities:v
- The model assumes that software development can be scheduled as a step-by-step process that transforms user needs into code.
- The goal is to never turn back once an activity is completed (restriction)
The key feature of the model is the verification activity (called “verification step” by Royce) at the end of each activity that ensures that the activity does not introduce unwanted or deletes mandatory requirements
The waterfall model measures progress by the number of tasks that have been completed.
The horizontal object flow denotes the information flow between activities of same abstraction level.
Higher levels of abstractions of the V-model deal with the requirements in terms of elicitation and operation. (The Client Acceptance Activity validates the understanding of the user against the requirements)
The middle-part of the V-model focuses on mapping the understanding of the problem into a software architecture.
The Component Integration and Test activity validates functional components against the preliminary design.
The lower level of the V-model focuses on details such as the assembly and coding of software components.
Unit Test activity validate units against their description in the detailed design.
Why managers love waterfall models
• Nice milestones
• No need to look back (linear system)
• Always one activity at a time
• Easy to check progress during development: 90% coded, 20% tested
However, software development is non-linear
Iterative vs. Incremental
Iterative means “re-do” or “re-work”
• Iterative development helps you to improve your product
Incremental means “to add onto something”
• Incremental development helps you improve your process
A strategy where the various parts of the system are developed at different times or rates and integrated as they are completed
A strategy in which time is set aside to revise and improve
parts of the system.
- Product iteration can result from incremental addition of functionality that had not been anticipated in a previous iteration
- Product iteration can also result from restructurings (e.g. Cleanups of code smells)
The functional model of software lifecycle contains ?
scenarios, user stories, use case models