Software Development: Challenges, Models, and Agile Practices
Challenges in Software Development
- Coping with increasing diversity, demands for reduced delivery times, developing trustworthy and “bug free” software
General Common Issues Contribute to Project Failures
- Missing focus: unclear objectives, lack of business focus
- Content issues: changing requirements, technical complexity
- Skill Issues: unorganized team, lack of skills
- Execution Issues: unrealistic schedules, reactive (unpredictable) planning
- Unexplained Causes: (Budgets, schedule overrun, benefit shortfalls)
Common Activities that are Fundamental to Software Engineering
- Software specification
- Software development
- Software validation
- Software evolution
What is SDLC?
Software Development Life Cycle, a framework that defines the activities done at each stage of a software development project (towards a project). Applies to phases 3, 4,5 of Product Life Cycle operation
What the Strengths and Weaknesses to the Various Software Development Models
Code and Fix
- No real strengths. No design, no specifications.
Waterfall
- Easy to follow/understand
- Appears to have great management to organize and control
- Appear to follow logical steps to finish tasks per plan
- Forces developer to establish solid requirements before starting to designs
Disadvantages:
- Needs to have solid requirements up front
- Gives false impression about project control as it proceeds to the next phase
- Software has little chance in fixing problem discovered in next stage
- Customer feedback does not happen until final release
- Documents are thick, long, detailed but difficult to keep it aligned with source does
V-Shaped SDLC Model
- Emphasize on verification and validation of the product in the early stage
- Testable/deliverable
- Relatively easy to follow
Weaknesses:
- No iteration or phases for user feedback
- Hard to change requirements
- Very little risk analysis activities
Spiral SDLC Model
- Early risk indications
- User can see early prototype
- Most likely high risk items developed first
- Strong approval and documentation control
- Early design doesn’t need perfection
- Additional functions may be added later
- May get feedback from user early and frequently
Weaknesses:
- Significant amount of time spent on risk and success is dependent on this step
- Excessive amount of time spent on planning, resetting objectives, risk analysis and prototyping
- Confusing, may spiral out of control
- Developers will have to do something else in non-development quadrants
- Expensive, not for small projects
(IBM) Rational Unified Process Model
- Regular feedback from stakeholders
- Risk management
- Resource management
- Issue discovered early
Weaknesses:
- Prices too complex and large to implement
- Heavyweight process
- Development is heavily bounded by the process
- Developers fall uno iterative plan driven waterfall model
- Heavy process of management to ensure team is following process
Agile Model (SCRUM)
- Customer satisfaction due to continuous delivery of software
- People and interactions are the primary focus rather than processes and tools
- Close and daily cooperations between business people and developers
- Regular adaptation to changing circumstances
Disadvantages:
- Lack of emphasis on necessary designing and documentation
- Not new programmer friendly due to the complex decision making
- Project can go off track if customer is not sure what final outcome they want
What are the Key Activities that are Part of the Software Design and Implementation?
Design
- Architectural design where you identify the overall structure of the system, the principal components, relationships between the components and their distribution
- Interface design, define the interfaces between system components
- Component Design, take each system component and design how it will operate
- Database design: design the system data structures and how these are to be represented in a database
Implementation
Translating the design into an executable program which fits within the specifications
Agile Manifesto with Explanation
- Individuals and interactions (SCRUM/Team interaction) over processes and tools
- Working software (.exe, .dll, .xml) over comprehensive documentation
- Customer collaboration (Apps, user stories) over contract negotiations
- Responds to change over following a rigid plan(customer/market needs) (dynamic)
What are the Triple Constraint Limitations that Apply to Every Software Project Management and How Does the Agile Approach Address These Constraints?
The three constraints are: Scope, Time, and Cost where Scope is the most important piece. Agile makes Scope the bottom priority and sets the Time and Cost as the top priority as Scope is viewed to evolve over time where as Time and Cost are something that cannot be changed. People primarily enjoy to fit within a deadline and the agreed upon cost when asking for software to be developed which leaves your customer happier.
Name 5 of the 12 Principle for Agile Software Development that are Closely Related to Team Collaboration
- Collaboration between marketing and developers regularly
- Promote sustainable development pace
- Regular team reflection
- Face-to-face communication
- Build projects around motivated individuals
Agile / Scrum Framework in Diagram
What is the PBL in Agile Scrum Process? Properties?
PBL is the Product Backlog which stores all of the requirements of the software with short description to match. The properties are prioritized user stories and functions for the software with time estimates
Software Estimations Discussed in Class… How Does the Planning Poker Relate to Agile Estimation?
The entire team discusses a user story or a feature until everything has been explained about it and then picks a card from a deck for their time estimate till completion, then each team member displays their card at the same time and if everyone does not have the same card they explain why they feel the time should be what they chose taking notice to the highest and lowest estimations. The planning poker process is completed until a consensus is reached.
User Story vs Use Case
..?
- User Story: a short description of something that you customer will do when they come to use your software. Ex: As a customer I want X so that Y
- User Case: a description of the behaviour of the system, captures event sequence that a system is showing to a user stimulus (input)
•What is guideline for writing a good user story? (INVEST)
-Independent, Negotiable, Valuable, Estimable, Small, Testable
•What are the two types of software requirement? Explain with examples.
-User requirements(I want X for my software), System requirements (Need x to made x for user)
•What are the 3 roles in Agile Scrum team and their responsibilities?
-Product Owner: define user stories and tasks, talk with customer, prioritize user stories. SCRUM Master: ensure everyone is on task and making sure there are no problems, lead SCRUM meetings during sprint. Developers: code the user stories and functions given by the PBL
•Differences between Aggregation and composition association (UML with examples)
-Aggregation: has-a relationship, Composition: implies ownership
•Main types of UML(unified modelling language) diagram, explain their usage, give 3 diagrams for each of the types
Structural: show different objects in a system
Behavioural: show what should happen in a system, how objects interact with each other
-State Machine Diagram: models the behaviour of a single object and specifies the sequence of events that an object goes through in its lifetime in response to events
-Sequence Diagram: displays the interaction between objects without showing the details of the context of interaction and the object’s state
•What are the general guidelines in software project documentation in Agile software process
( read the document (project documentation preparation) in Connect Lab folder)
