Lecture 4: Software Lifecycle Flashcards
Definition SW Lifecycle
- Software life cycle (also called 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.
Where do we need Models?
Models support three different types of activities:
- Communication: The model provides a common vocabulary. An informal model is often used to communicate an idea
- Analysis/Design: Models enable developers to reason about the future system
- Archival: Compact representation for storing the design and rationale of an existing system.
How much Modeling? Advantage Problem
- Advantages of modeling:
- Modeling enables developers to deal with complexity
- Modeling makes implicit knowledge about the system explicit
- Modeling formalizes knowledge so that a number of participants can share it
- Problem with modeling:
- If one is not careful, models can become as complex as the system being modeled.
Models that support Communication
- Also called communication models (conceptual models)
- Most often used in the early phases of a project and during informal communications
- The model does not have to be consistent or complete
- The notation does not even have to be used correctly
- The model is used only to communicate an idea to a person
- If the idea is understood, the model has served its purpose
- Informal models are our preferred way to support communication
- Communication Media:
- • A Whiteboard, a mockup, or even a napkin design.
Models that support Analysis and Design
- Also called specification models
- The model provides a representation that enables developers to reason about the system
- The model is used to communicate the idea to a tool
- The model needs to be made consistent and complete
- The notation must be correct so the model can be entered into a CASE tool
- UML is our preferred notation for models to models that support analysis and design.
Managerial Challenges of Modeling
- Formalizing knowledge is expensive
- Takes time and effort from developers
- Antipattern: Analysis Paralysis
- Requires validation and consensus
- Takes time and effort from developers
- Models introduce redundancy
- If the system is changed, the models must be changed
- If several models depict the same aspects of the system, all of them must be updated
- If one model becomes out of sync, it loses its value
- Models become complex
- As the model complexity becomes similar to the complexity of the system, the benefit of having a model is reduced significantly.
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?
Tailoring
- • There is no “one size fits all” software lifecycle model that works for all possible software engineering projects
- Tailoring: 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
We can use the same modeling techniques we use for software development:
- Functional model of a Software Lifecycle
- Scenarios, user stories
- Use case model
- Structural model of a Software Lifecycle
- Object identification
- Class diagrams
- Dynamic model of a Software Lifecycle
- Sequence diagrams, statechart and activity diagrams
Functional Model of a simple Life Cycle
Activity Diagram for the Life Cycle
Software development goes through a linear progression of states called problem definition activity, software development activity and system operation activity.
Two Major Views of the Software Life Cycle
- Activity-centered view of a software life cycle
- Software development consists of a set of development activities
- Entity-centered view of a software life cycle
- Software development consists of the creation of a set of deliverables.
Process Groups, Processes, Activities and Tasks
- Process Group: Consists of a set of processes
- Process: Consists of activities
- Activity: Consists of sub activities (phases, steps,…) and tasks
Process Groups exapmle
Waterfall Model (Royce 1970)
- An activity-centered life cycle model that prescribes a sequential execution of activities
- 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
- The key feature of the model is the verification activity (called “verification step” by Royse) at the end of each activity that ensures that the activity does not introduce unwanted or deletes mandatory requirements
- The model provides a simplistic view of software development that measures progress by the number of tasks that have been completed.