
Learn to design and select your software development process, collect requirements, craft specifications, create wireframes and project plans, use cases with UML and flow charts, and manage the software lifecycle.
Explore the software development process overview, outlining phases from planning to maintenance, and learn how managers organize, manage suppliers, customers, and third parties, allocate resources, verify, validate, and deliver software.
Transform customer needs into business requirements and technical specifications, coordinating with account managers, project managers, and content, development, and design teams to release the final software product.
Identify and coordinate the core software project roles, from account and quality managers to delivery and project teams, transforming business requirements into technical specifications and quality-compliant software.
Turn a customer's problem into business requirements, then a feasibility study and technical specifications to deliver a protected video site with login and a video database.
Explore the design of a web-based e-learning platform with login, profile, courses, videos, quizzes, progress tracking, certificates, and an admin panel through a practical case study.
Choosing right model for developing of the software product or application is very important. Based on the model the development and testing processes are carried out
Different companies based on the software application or product, they select the type of development model whichever suits to their application
But these days in market the ‘Agile Methodology‘ is the most used model.
•In simpler words, Software Development Life Cycle (SDLC) is the set of processes used to develop and deliver high quality software
•It’s recommended to follow Software Development Life Cycle when an IT project is under development
•Its beneficial to follow SDLC when you need to combine technical and non-technical activities to deliver high quality software
•The Software Development Life Cycle is structured in different stages in the life cycle and can be accomplished using different models
•Software life cycle models describe phases of the software cycle and the order in which those phases are executed
•Each phase produces deliverables required by the next phase in the life cycle
•Requirements are translated into design
•Code is produced according to the design which is called development phase
•The ‘Waterfall Model‘ is the very old model
•It is also referred to as a linear-sequential life cycle model
•In ‘Waterfall Model’ testing starts only after the development is completed
•V- model means Verification and Validation model
•Just like the waterfall model, the V-Shaped life cycle is a sequential path of execution of processes
•Each phase must be completed before the next phase begins
•V-Model is one of the many software development models
•Testing of the product is planned in parallel with a corresponding phase of development in V-model
•In incremental model the whole requirement is divided into various builds. Multiple development cycles take place here, making the life cycle a “multi-waterfall” cycle
•Cycles are divided up into smaller, more easily managed modules. Incremental model is a type of software development model like V-model, Agile model etc.
•In this model, each module passes through the requirements, design, implementation and testing phases
•RAD model is Rapid Application Development model
•It is a type of incremental model
•In RAD model the components or functions are developed in parallel as if they were mini projects
•The developments are time boxed, delivered and then assembled into a working prototype
•This can quickly give the customer something to see and use and to provide feedback regarding the delivery and their requirements
•Agile development model is also a type of Incremental model
•Software is developed in incremental, rapid cycles
•This results in small incremental releases with each release building on previous functionality
•Each release is thoroughly tested to ensure software quality is maintained
•It is used for time critical applications
•An iterative life cycle model does not attempt to start with a full specification of requirements. Instead, development begins by specifying and implementing just part of the software, which can then be reviewed in order to identify further requirements
•This process is then repeated, producing a new version of the software for each cycle of the model
•The spiral model is similar to the incremental model, with more emphasis placed on risk analysis
•The spiral model has four phases: Planning, Risk Analysis, Engineering and Evaluation
•A software project repeatedly passes through these phases in iterations (called Spirals in this model)
•The baseline spiral, starting in the planning phase, requirements are gathered and risk is assessed
•Each subsequent spirals builds on the baseline spiral
•The spiral model is similar to the incremental model, with more emphasis placed on risk analysis
•The spiral model has four phases: Planning, Risk Analysis, Engineering and Evaluation
•A software project repeatedly passes through these phases in iterations (called Spirals in this model)
•The baseline spiral, starting in the planning phase, requirements are gathered and risk is assessed
•Each subsequent spirals builds on the baseline spiral
•The prototype are usually not complete systems and many of the details are not built in the prototype
•The goal is to provide a system with overall functionality
As the Software Development Life Cycle has many models, it is very important and the broader issue to select the right model for the project
This is very challenging and crucial for most of the organizations, as the model selected and the criteria used to select it adds the value to the organization
Development environments have changed drastically in recent years
The development periods are shorter than ever and the number of team has increased
These changes have led to difficulties in controlling the development activities and predicting the end of developments
Cost-effective software project management has the serious need to focus resources on those areas with highest criticality
Critical areas are identified in
Lack of resources or skills for complex parts
Uncertainty
High development/implementation costs
Tasks on the critical path of a project plan
Critical points should be managed in Risk Assessment at project management level
The term complexity stands for state of events or things, which have multiple interconnected links and highly complicated structures
In software programming, as the design of software is realized, the number of elements and their interconnections gradually emerge to be huge, which becomes too difficult to understand at once
Software complexity is also a natural byproduct of the functional complexity that the code is attempting to enable
Software design complexity is difficult to assess without using complexity metrics and measures
We will see also:
how to control complexity
how to measure complexity
Team Size Can Be the Key to a Successful Software Project
What is an optimum staffing level for a software development project?
How to determine the right size for a specific software development team?
Capacity planning
Identify the key members of a software team
How do you figure out the ideal size of your software development team?
Costs of software development and deployment are decreasing due to numerous open source projects, but competition increases due to lowering entry barriers
The need to bring developers closer to their customer becomes vital for success, especially involving users into the very early stages of software development
This allows detecting flaws of conceptual and design nature, minimize unnecessary development costs, and warrant relevance for customers
In this lesson also:
Customer Involvement Methods
Customer engagement options in software projects
We need to be able to learn from past experiences so we can improve our software processes and products but also our project management methods and activities
Cost estimation is an especially difficult area of software development project management
The impacts of uncertainty in key areas such as product size, productivity, and defect injection rates can dramatically affect a project's cost and schedule
The job of estimating becomes even more difficult when requirements are allowed to evolve throughout a project as is the case for a spiral lifecycle process
The same unknowns of size, productivity, and defect injection rates exist, but there is also the additional unknown of the number of spirals that will need to be completed before an incremental product is delivered
The evolutionary nature of the process allows requirements to change and this makes the job of estimating size even more difficult and uncertain.
Since most software development projects do undergo changes, it is beneficial to consider the impacts on cost and schedule which can be used to develop a more realistic estimate.
Organizational culture forms the context in which systems development takes place
Although there is not much prior research into the relationship between organizational culture and the deployment of Software Development Models (SDMs), there are good a priori reasons to believe in a relationship between the two
Organizational culture includes several levels with a varying degree of awareness on the part of the culture-bearers
Organizational culture should be compatible with the IT effort in question in order to succeed
In order to verify if an organization is ready for a specific software development model we need to clarify the types of culture and verify to which one our organization belong to
In this lesson also:
Types of colture
The Competing values model (CVM)
Organizational Culture and the Deployment of Agile Methods
Organizational culture impact on the selection of the Software Development Model
Other factors that influence the selection of the Software Development Model
Identify initial requirements as milestones toward a final user-centered system, distinguishing functional and non-functional needs, stakeholders, and feasibility, while documenting inconsistencies and risks before implementation.
Identify sources of uncertainty in technology, including API defects and resource gaps, and assess how alternatives, production versus beta APIs, and algorithm feasibility affect requirements and project timelines.
Explore a case study on customer requirements for an e-learning membership platform, designed for desktop, tablet, and mobile, with interactive slides, hotspots, and product demos.
Explore capturing customer requirements for an e-learning membership site, including user profiles, a course catalog with thumbnails and language-specific tracks, and integrated quizzes with controlled navigation.
Design an e-learning membership website that supports user registration, course access, slide-based content, videos, images, hotspots, and animations to verify knowledge and show user results.
Explore building an elearning membership website with authenticated access, course management, and slides per course, including informational slides and certificate printing, plus admin dashboards and super user reports.
Define customer and business requirements for an e-learning membership site, use simple sketches to illustrate specifications, and show a manager tracking employee course progress.
Identify the solution by defining the final product, required technologies, and building blocks (front end, back end, admin, interfaces) to deliverables and organize requirements for a responsive, data-protected system.
Organize the project as a software architect, outlining wireframes, visual designs, prototypes, and interfaces, and define database architecture, workflows, testing specifications, and acceptance criteria for developers.
Identify stakeholders and determine user expectations through requirements gathering, analysis, and modelling; document in SRS or user stories, using prototyping and change control to ensure traceable, actionable requirements.
Define the customer process and identify which steps to automate versus which remain manual. Use flowcharts to document how data moves between modules and where human action is required.
Sign off requirements before testing to ensure traceability, prevent defects, and align with customer expectations through a structured BRT and stakeholder approvals.
Explore the relationships between classes, including association, inheritance, realization, dependency, aggregation, composition, generalization, and interface implementations, with class diagrams, operations, methods, and polymorphism.
Explore UML relationships including dependency, generalization, binary and n-ary associations, aggregation, and understand multiplicity, inheritance, and naming adornments in class diagrams.
Explore how UML packages organize related mail elements into containers, define unique names, and control visibility with public, private, and protected contents, while modeling dependencies and fully qualified names.
Explore UML composite structures to model internal class composition and interactions with parts, connectors, and aggregated objects within a package, detailing internal structure and relationships.
Use cases define a sequence of events that describe interactions between actors and a system to achieve a goal, illustrated in diagrams with a system boundary.
Identify actors and user roles to draw a use case diagram, prioritize use cases, and organize them into logical packages for an online store with customers, orders, offers, and newsletters.
Explore interaction diagrams that capture dynamic behavior, message flow, and object organization, with sequence diagrams for time-ordered messages and collaboration diagrams for structural relationships in an order management system.
Statechart diagrams model the dynamic behavior of objects and systems by representing states, transitions, initial and final states, events, actions, activities, and decision nodes, forks, and joins.
Explore software architecture and design definitions, outlining higher-level structures, components, and their relationships that form the system's blueprint, and examine decisions that affect reliability, scalability, and maintainability.
Software design is the initial phase of the software development lifecycle, outlining functional and non-functional requirements, high level design, subsystems, modules, interfaces, and interactions with humans, hardware, and other systems.
Explore the basics of software architecture, including static and dynamic views and deployment models. Identify subsystems, interfaces, data flow, and how resources map to web servers, databases, and client devices.
Understand the relationship between software architecture and software design, where architecture defines structure and design covers data structures and algorithms, guiding scope and aligning with real-world requirements.
Explore component-based software design, emphasizing interfaces, replaceable and reusable components, service-oriented architectures, and plug-in extensibility to reduce complexity and boost reliability.
Learn how packages organize software by layer, by feature, or by component. Apply separation of concerns, rely on public interfaces, and enforce data access rules for modular architectures.
Explore how interactions act as a design pattern to document reusable solutions and coordinate component communication via connectors, including pipes, procedure calls, and client-server flows.
Understand that software security is a non-functional requirement addressed in development, defined as processes and technologies to control actors, resources, and actions across internet services through access and risk management.
Security architecture provides a unified design that embeds risk-based controls across business, information, information system, and technical infrastructure, guided by policy, standards, and user access management.
Explore fault tolerance and high availability, using backup components, automatic failover, and data replication to sustain business continuity and near five nines uptime.
Design for robustness by ensuring software responds reliably to errors and bad input while staying stable across architectures, with error handling, logs, redundancy, stress testing, and modular design.
Create forward-compatible, extensible software with well-designed layers, api extensions, and hooks that let programmers build new functionality, modify existing functionality, or add new data types and formatting markup.
Learn to map a web application flow using Lucy chart to model steps, decisions, authentication, and session handling with flowchart elements.
Examine use cases for an e-learning membership site, focusing on a generic user and teacher, including profile setup, dashboard access, course search, taking courses, quizzes, certificates, and performance views.
Explore the login and course selection workflow in an e-learning membership site, including completion status, paid access, slide-based progress, and the course execution sequence.
Explore how a case study on an elearning membership website models weighted points, progress tracking, and quiz-driven verification, storing updates in a database and resuming from the last slide.
Explore wireframes for an elearning membership site, focusing on the front page course list, avatar customization, show more controls, infinite scrolling, consistent buttons, and simple input fields.
Explore wireframe components for an e-learning membership site case study, including placeholders for copy, arrows, quizzes, course slides, and content containers to guide layout.
Explore how back ends of content management systems like WordPress and Joomla manage content, with dashboards, navigation labels, and metadata to edit pages, posts, and media.
Shows an admin panel for system information, illustrating user management, login, and customer data with detail views. Outlines backend requirements and wireframes to create a work environment for content managers.
Demonstrates an admin panel for complex systems, detailing role-based access across client, metadata, user data, payment data, and reporting environments, with login, dashboards, and configurable reports.
Specify the back end builds the admin panel for content managers, detailing product catalog fields, image uploads, categories, and hidden or archived status, with create, edit, and delete workflows.
Specify the back end for an elearning platform by outlining page animations, how video and text content appear or hide via a default form, and the backend structure.
Design a relational database architecture using Lucy chart, define tables with key fields and data types (var char, text, integer), and establish IDs for relationships.
Design a relational database using unique primary keys and foreign keys to link addresses to cities, with joins and views to manage multiple addresses per city.
Discover how database privileges and roles control access, granting users or groups rights to select, insert, update, delete, or execute procedures and to alter objects, via system and object privileges.
Define the database structure for an e-learning platform by modeling a users table with a primary key, first name, last name, email, and password within an entity-relationship design.
Model a professional database with a primary key, a char(50) title, and date keys for creation; implement active and archived flags, 0/1 booleans, and mark deleted records to retain them.
Define a course database structure with courses, slides, and components linked by primary and foreign keys, including core summary, titles, descriptions, and thumbnail.
Explore a case study of database structure in software development, detailing component-based spots, images, videos, and paragraphs, and layout with left and top coordinates, plus mouse-over interactions.
Explore a case study of a database structure by building a slide-based component map, detailing how keys map to components like text, images, and videos, and handling empty text.
Learn to design agile technical requirements for a user registration feature, using creation form to collect first name, last name, email, and password, with data storage and a confirmation mail.
Learn how to define and manage technical requirements using statuses like amnesty, validation, and implementation, track releases and document versions, and capture helpful comments for developer discussions.
Define the technical specifications for an e-learning platform by mapping business requirements to a high-level design, and structure sections such as profile page, courses, and dashboard with analytics.
Design and implement the technical requirements for an e-learning membership site, including wireframes, course thumbnails sized up to 300x200, and dynamic course listing pages.
Explore a case study of technical requirements for an elearning membership site, detailing quizzes, sessions, and a workflow-driven algorithm to track answers, progress, and data in a database.
Examine the technical requirements for an e-learning membership platform, focusing on hotspots, hover interactions, and zoomed image rendering, with up to ten hotspots per item.
Explore Scrum requirements by defining user stories from the customer perspective and a definition of done with acceptance criteria to verify implementation.
Explore how to document a user story with dedicated templates, detailing requirement descriptions, acceptance criteria, definition of done, readiness criteria, change log, and customer and technician sign-off.
Master the definition of done using a reusable template with common criteria, test cases, and acceptance criteria. Apply it to front-end and back-end tasks, content pages, and admin data workflows.
This case study guides building user stories for an e-learning membership site, detailing student and teacher perspectives, profile, quiz flows, and back-end requirements to display and update quizzes.
Explore the definition of done and acceptance criteria through an e-learning membership case study, validating implemented user stories against the profile page data, photo path, and database consistency.
explore the implementation phase of the software development process, covering installations, configurations, integration of components, development and testing, and planning for release candidates and production releases.
Installations cover how to set up operating systems, servers, databases, programming languages, and testing tools for web development, including JavaScript libraries and frameworks, to streamline development and maintenance.
Explore software integration in an agile process, assembling internal and external components with a connector and web services, and compare horizontal, vertical, stepped, and common data format methods.
Plan and deliver user training in parallel with software development, preparing materials in advance and updating them as changes occur, with the aim to minimize productivity losses before go-live.
Adopt structured programming to manage growing code by using top-down analysis, modular subroutines, and controlled flow to improve readability, maintainability, and collaboration.
Explore code reuse strategies by leveraging internal and third-party components, open-source modules, and off-the-shelf packages to lower software costs. Assess compatibility and reuse across components, libraries, and services.
Enable effective remote communication and explicit knowledge management across sites through tools, establishing a common language, guidelines, and documented processes to share knowledge and manage issues.
Learn how version control and version management track changes across central and distributed repositories, using local and remote workflows, commits, pushes, and pulls to support collaboration.
Explore Git, the popular version control system, and learn how it tracks changes, history, and collaboration across files. Master branches, merging, and pushing and pulling code to coordinate team work.
Mastering Git branching to prototype new features in separate branches, preserving a clean master and enabling collaboration, review, and safe merges.
Create a new git branch, which acts as a pointer to the current commit, without changing the repository history. Then push the branch to a configured remote repository.
Install and set up git on Windows, Mac, or Linux, initialize a repository, and start tracking changes. Learn to add, commit, view status, checkout versions, and clone remote repositories.
Master risk management in software development by identifying, assessing, and mitigating risks across technology, requirements, architecture, performance, and organization. Track triggers and communicate risk status to ensure project success.
Identify risks by analyzing past project problems, defining key processes, and using flowcharts and brainstorming to uncover known unknowns across technical, operational, political, legal, and internal and external factors.
Identify and categorize software risks, assess likelihood and impact using qualitative and quantitative analysis, and outline potential effects on customers, business, reputation, finances, legal actions, and licenses.
Learn how to plan and manage project risks with a risk management plan that defines owners, assesses impact and probability, and outlines mitigation, avoidance, transfer, or contingency strategies.
Integrate risk monitoring into project activities, conduct regular checks on top risks, and track risk plans for major changes, while preparing status reports for management reviews.
The software development process is what software developers have to know when developing a software system
But it is also something that software project managers have to know to have software projects under control
If you launch a software business this is the process you need to get familiar with in order to manage your suppliers, your customers, third parties and have elements to understand your business and its performances
It is not only related to develop a software product but also to specify it, verify and validate it and set it available for use and maintain it
The software development models are the various processes or methodologies that are being selected for the development of the project depending on the project’s aims and goals
There are many development life cycle models that have been developed in order to achieve different required objectives
The models specify the various stages of the process and the order in which they are carried out
The selection of model has very high impact on the testing that is carried out
The aim of this course is to help students to identify their software development model and provide them with all the tools and knowledge on the processes and phases related to it
In details the course covers the following topics:
Software development models
Requirement Gathering
DESIGN - The Unified Modeling Language (UML)
DESIGN - Software Architecture and design definition
DESIGN - Database Architecture
DESIGN - Technical Requirements
Implementation - Development
Implementation - Version Management
Implementation - Risk assessment
Implementation - Change management
Implementation - The deployment process (…,regression tests)
Quality Assurance - Verification
Quality Assurance - Validation
Quality Assurance - Incident Management, debugging and bug fixing
Go Live
Software Maintenance
Software Platform Development
Agile Frameworks: SCRUM & Kanban
Object-Oriented Programming Concepts
Project Management
Documentation management