System development
Principles of XP
- Communication: good to talk with customer and between developers - Simplicity: keep it simple and grow the system when required - Feedback: let users provide feedback early and often - Courage: speak the truth - Respect
Types of Prototypes
*Evolutionary*: Continue to build on *Throwaway*: Destroy when done using
Scrum
The most common framework for Agile Development - small teams to produce small pieces of deliverable in sprint cycles
Product Owner (Scrum)
The person responsible for the business value of the project and decide what work to do and in what order
Inspect & Adapt (I&A)
The Inspect and Adapt (I&A) is a significant event, held at the end of each Program Increment (PI), where the current state of the Solution is demonstrated and evaluated by the train. Teams then reflect and identify improvement backlog items.
DevOps
The practice of blending the tasks performed by the development and IT operations groups to enable faster and more reliable software releases.
MDA - Model driven architecture
an approach to use platform-independent models in software design, development, and implementation
requirement specification document
used as a blueprint for further SDLC phases
visual model
representation of an object using graphical languages
Advantages of the waterfall model
- The model is simple to understand and use. And thus, works well for small projects - Easy to manage as it has well-defined stages
Spiral Model
- a combination of waterfall and phased models with the application of prototypes - 4 defined quadrants: planning, risk analysis, constructing, and evaluating -each loop in the spiral represents a phase in the SDLC process: the innermost is for requirement gathering and analysis, and so on.
PI Planning
- an event to align all the teams on the ART to a shared mission and Vision. - 2 days every 8-12 wks.
problems of agile
- difficult to keep up with customers' various interests -prioritizing changes can be difficult when multiple stakeholders -maintain simplicity may request extra work -Scalability
Disadvantages of XP
- high costs -high time investing -no proper documentation is delivered constantly -requires team members to be self-disciplined
Disadvantages of iterative model
- requirements may be changed over and over again, and thus, can cause over time and budget -not suitable for small projects
Features of Agile Development
- very little planning at the beginning, only rough sketches, very short development cycles with few artifacts -The requirements, design, and product will be gradually emerged as the project proceeds
Heartbeat of ART
-Agile teams -Dedicated people -Face-to-Face PI planning -Inspect and Adapt Event
principles of agile development
-Customer involvement -Incremental delivery -People not process -Embrace change -Maintain simplicity
Advantages of RUP
-Early mitigation of risk -Early executable architecture -Able to control allocation of resources by phase -Increase the precision of cost estimation
Advantages of the spiral model
-Easy to manage - software produced at an early stage so problems and issues identified early - The user gives feedback on each prototype. so required changes can be made early - New Functionality can be added during the process - End result is more likely to be what the user wants
Disadvantages of the spiral model
-Time consuming -More costly to develop -Not suitable for smaller projects
Advantages of XP
-communication b/w developers - high level of productivity - high-quality code
Advantages of Scrum
-daily standups -quickly identify setbacks and recover -frequent releases -increase customer involvement
Disadvantages of the waterfall model
-difficult to accommodate changes, and thus, high amount of risks and uncertainty -no working software is created until late in the cycle -long delivery cycle for larger projects
advantages of incremental model
-faster to get feedback -more rapid delivery and deployment of useful software -risk of changed requirements is reduced
basics of software development process
-lifecycle (phases & milestones) -workflows (disciplines) -roles (skills, responsibilities) -activities/tasks -work products / artifacts (deliverables or WIP products)
Advantages of iterative model
-parallel development can be planned -detects the risks, faults, and defects at early stage
disadvantages of incremental model
-process is not visible. Thus, it is cost effective to work on many deliverables for the manager to measure the progress -a proper planning is required at the early stage -regular changes may corrupt the current structure / degrade the current system
Disadvantages of Scrum
-uncertainty in final deadline and product scope -Scalability -requires for experienced teams
3 Phases of Scrum
1) The initial phase - outline planning phase: establish the general objectives for the project and design the software architecture. 2)Followed by a series of sprint cycles, where each cycle develops an increment of the system. 3)The project closure phase - completes required documentation and wraps up the project
Five Core Competencies of the Lean Enterprise to sustain a competitive advantage
1. Lean-Agile Leadership 2. Team and Technical Agility 3. DevOps and Release on Demand 4. Business Solutions and Lean Systems 5. Lean Portfolio Management
Essential attributes of good software
1. Maintainability 2. Dependability and Security 3. Efficiency 4. Acceptability
Need for a digital business operating system
1. More rapid and flexible software development 2. Ecosystems need to be considered along 3. Generate and realize data for AI solutions, empowerment and autonomy
key challenges of software engineering
1. increasing diversity 2. increasing demands in shorter delivery cycles 3. trustworthy issues
software development process
= engineering + software project management
Scaled Agile Framework (SAFe)
A Lean-Agile scaling framework that combines concepts from Kanban, Scrum, Extreme Programming (XP), DevOps, etc. to apply to enterprise level
lean enterprise
A business that produces products or services with high quality, low cost, fast response, and immediate availability using lean principles.
Lean-Agile Leadership
A competency which describes how Lean-Agile Leaders drive and sustain organizational change and operational excellence by empowering individuals and teams to reach their highest potential.
Business Solutions and Lean Systems Engineering
A competency which describes how to apply Lean-Agile principles and practices to the specification, development, deployment, and evolution of large, complex software applications and cyber-physical systems.
software engineering (SE)
A discipline related to the design, development, testing, maintenance, and evolution of a computer-based software
Extreme Programming (XP)
A form of agile software development that promotes incremental development of a system using short development cycles to improve productivity and to accommodate new customer requirements.
Agile Release Train (ART)
A long-lived and cross-functional Agile-teams, which along with other stakeholders, develops and delivers solutions incrementally, using a series of fixed-length Iterations within a Program Increment (PI) timebox, in order to align teams to a common business and technology mission.
Scrum Master
A person who ensures that the team is productive, facilitates the daily Scrum, enables close cooperation across all roles and functions, and removes barriers that prevent the team from being effective
SAFe for Lean Enterprises
A scalable and configurable framework that helps organizations deliver new products, services, and solutions in the shortest sustainable lead time, with the best possible quality and value
process
A series of actions or steps taken to achieve a goal
Ecosystem
A system formed by the interaction of a community of organisms with their physical environment
Rational Unified Process (RUP)
An iterative software development process that is organized by phases and milestones, intended to be tailored by the development for their needs
Iterative Model
A type of program development cycle in which a basic version of required functions, and then enhance them after receiving feedback
differences between computer science and software engineering
CS focuses on the theory and the fundamental of computational process SE focuses on the development and delivery of a software
Non-functional requirements
Constraints on the services or functions offered by the system such as timing constraints, constraints on the development process, standards, etc.
requirements definition document
Contains the final set of business requirements, prioritized in order of business importance
Scalability
How well a system can scale up, or adapt to the increased demands of growth
Agile Teams
In SAFe, an Agile team is a cross-functional group of 5-11 individuals who define, build, test, and deliver an increment of value in a short time box.
Phases of RUP
Inception, Elaboration, Construction, Transition
Phased Model
Incremental model and Iterative model
Continous Integration
Merging developer updates continuously (daily) to avoid integration challenges
Conceptual Design
Overview of the system on its functions, independent from hardware or software choices
Abstraction
Reducing information and detail to focus on essential characteristics.
Continuous Delivery Pipeline
Represents the workflows and activities needed to shepherd a new piece of functionality from ideation to an on- demand release of value to the end user: Continuous Exploration, Continuous Integration, Continuous Deployment, Release on Demand
User Stories (structured natural language)
Short descriptions written by customers of what they need a system to do for them
system requirements
Specifications for the processor speed, RAM, hard drive space, and any additional hardware or software needed to run the software.
Release on Demand
The process that deploys new functionality into production and releases it immediately or incrementally to customers based on demand.
Modularity
The separation of a program into independent modules that are each responsible for one aspect of the program's functionality.
Conceptual Modeling (non-natural language)
UML diagrams which are helpful to establish a common ground for communication between users and developers.
Practices of XP
`The planning game • Simple design • Small releases • Pair programming • Test-driven development • Collective code ownership • Continuous integration
Lean Portfolio Management (LPM)
a competency of aligning strategy and execution by applying Lean and systems thinking approaches to strategy and investment funding, etc
Iterative Design Process
a cycle of sampling, testing, analyzing and refining a design until the final design is created
UML diagram
a language for visualizing, specifying, constructing, and documenting the artifacts of a system
requirement
a system property that is what is needed or wanted by a stakeholder
Kanban
a visual information system that controls the flow of work
Software Development Life Cycle
an iterative approach to developing software, including major steps are: 1. gathering requirements 2. requirement analysis 3. design 4. code and implementation 5. test 6. deployment 7. maintenance and evolution
Elaboration phase - Lifecycle architecture (LCA)
analyze the problem domain, establish a architectural foundation, develop the project plan, and eliminate the highest risk elements
risk analysis
build the prototypes to analyze the requirements and risks
Prototyping Requirements
by creating a prototype, it is easier to learn more about a problem or proposed solution, gather more accurate requirements and obtain feedback
continous deployment
releasing products when ready rather than on longer, pre-set distribution cycles
DevOps and Release on Demand
competency describes how implementing DevOps and a continuous delivery pipeline provides the enterprise with the capability to release value, in whole or in part, at any time necessary to meet market and customer demand.
System Engineering
concerned with all aspects of computer-based systems development including hardware, software and process engineering. So, software engineering is a part of system engineering
Inception Phase - lifecycle objectives (LCO) is the milestone
define system goals, determine project scope, assess feasibility of project
System Design
describes how the new system will provide a solution to the business problem
Team and Technical Agility
describes the critical skills and Lean-Agile principles and practices that agile teams use to create high-quality solutions for their customers.
planning phase
develop and document the software requirement specification
constructing
develop the system
Platform-independent models
document the functionality and behavior of an application separate from technology-specific platform that supports it
evaluation
evaluate the developed system and plan for the next iteration
Construction Phase - Initial operational capability
focuses on program and application development tasks
Agile Methodology
follows iterative approach to demonstrate a commitment to tight feedback cycles and continuous improvement
Decomposition
from high-level depiction of key elements and create lower levels of detailed features and functions
User Requirements
identifying business requirements the system must satisfy which is provided by users.
Requirement Traceability
links requirements from definition and trace them throughout the project life cycle
incremental model
slices the software product into smaller pieces, and each new increment builds on top of the existing released functionality
4 system engineering activities
system specification system development system validation system evolution
Functional Requirements
the activities the system must perform to support the users' work
Coupling
the degree of interdependence (connections) between modules/components — Inter-module binding; for a good system design, we would like to have as low as coupling as possible
Cohesion
the degree to which the elements inside a module functionally related — Intra-module binding; for a good system design, we would like as high cohesion as possible
Continuous Exploration
the process of continually exploring the market and user needs, and defining a Vision, Roadmap, and set of Features that address those needs.
waterfall model (SDLC)
the traditional system development method that depicts the processes in a linear sequential flow. Any phase can only begin when the previous phase is completed. No iteration is possible
Digitalizaiton
the use of digital technology to provide software support to products and services which were not supported in the past; it is and will continue disrupting the industry and society
Process Management
to make sure a direct correspondence between requirements definition and specification
Requirement verification
whether the software meets specifications --> do we build the right system?
Requirement Validation
whether the software meets the definition -> do we build the system right?