Final2 1 1
Final2 1 1
Software process: Software process refers to a set of activities, methods, and practices used to develop, maintain, and deliver software systems. It involves a structured approach to managing and executing the various
stages of software development, from requirements gathering to testing and deployment. The "who" in software process includes the software development team, which typically consists of software engineers, programmers,
testers, project managers, and other stakeholders involved in the software development lifecycle. The "when" in software process refers to the timing and sequencing of activities within the development lifecycle. It involves
determining the order in which tasks should be performed and setting deadlines for each stage of development. The "why" in software process is to ensure the efficient and effective development of software systems. It helps
in managing complexity, improving quality, reducing risks, and delivering software products on time and within budget.Software process model: representation or framework => sequence of activities, task, milestones,
provide roadmap => organizing, managing development process. Waterfall model, Agile model, Spiral model, and Iterative model.
1. Sequentia: The 1. Iterative: doing things repeatedly, I. Four value propositions of Agile methods: Agile methods prioritize individuals and interactions, working software, customer collaboration, and responding to
stages of the software incrementally 2. Phases: Inception: change.
Establish the business case for the
development lifecycle system, Elaboration: Develop an 1. Individuals and Interactions over Processes and Tools: Agile methods prioritize the importance of effective communication, collaboration, and teamwork
are carried out understanding of the problem among individuals involved in the software development process. This value emphasizes the significance of human interaction and understanding over relying
sequentially, with each domain and the system architecture, solely on processes and tools.
stage completed Construction: System design, 2. Working Software over Comprehensive Documentation: Agile methods prioritize the delivery of working software as the primary measure of progress and
before moving to the programming and testing, and success. While documentation is important, the focus is on producing tangible, functional software that meets the needs of the users.
Transition: Deploy the system in its
next. operating environment 3. Iterations: 3. Customer Collaboration over Contract Negotiation: Agile methods emphasize the active involvement and collaboration of customers and stakeholders
2. Ensuring Each iteration in RUP is similar to throughout the development process. By engaging customers in regular feedback and collaboration, Agile teams can ensure that the software meets their
Completion: Making one cycle in the waterfall model, expectations and requirements.
sure one stage is where a subset of requirements is 4. Responding to Change over Following a Plan: Agile methods embrace change as a natural and necessary part of software development. The ability to
completed before implemented and tested. a. One adapt and respond to changing requirements, priorities, and market conditions is valued over rigidly following a predefined plan. Agile teams prioritize
iteration is like one cycle of waterfall
doing the next 3. 4. Detailed process: RUP provides a flexibility and iterative development to accommodate changes and deliver value to the customer.
Suitable for projects detailed process framework, II. Scrum a. Sprint: Time-boxed iteration in which development activities take place. b. Backlog: Three types of backlogs - product backlog (overall
having stable including guidelines, templates, and requirements), sprint backlog (requirements for a specific sprint), and impediment backlog (issues and obstacles). c. Roles: Scrum defines specific roles,
requirements: it is best practices for each phase and including Scrum Master, Product Owner, and Development Team.
eliminating the waste iteration. 5. Roles: project manager, d. Activities:1. Daily Scrum: Daily stand-up meetings to discuss progress, plans, and any obstacles.2. Sprint Review: Meeting at the end of each sprint to
architect, analyst, designer, and
of projects. 4. Stages: tester.6. Documentation: RUP review and demonstrate the completed work.3. Sprint Planning: Planning session before each sprint to determine the work to be done and set priorities.4.
requirements emphasizes the creation of various Release Planning: Planning for the overall release of the software product.
definition, design & documents, such as requirements III. XP a. Philosophy: XP aims to take good software engineering practices to the extreme to improve software quality and responsiveness. b. Key practices: The Planning Game:
analysis, documents, design documents, and Collaboratively plan and prioritize work with customers to determine what needs to be done in each iteration, Small Releases: Deliver working software frequently in short iterations, typically
test plans. 7. Use-case driven lasting 1-3 weeks., Metaphor: Use a shared language or metaphor to facilitate communication and understanding among team members., Simple Design: Focus on keeping the design of the
implementation, software as simple as possible, avoiding unnecessary complexity., Testing: Write automated tests to ensure the software meets the desired functionality and continues to work as changes
development: RUP focuses on use
testing, deployment, cases as a primary means of are made., Refactoring: Continuously improve the code by making small, incremental changes to enhance its structure, readability, and maintainability, Pair Programming: Two developers
maintenance & capturing and validating work together at one workstation, with one actively writing code and the other providing immediate feedback and guidance, Collective Ownership: All team members take responsibility for
operation. requirements. the codebase, allowing anyone to make changes and improvements as needed, Continuous Integration: Integrate code changes frequently to a shared repository, allowing for early detection
and resolution of conflicts, 40-hour Week: Encourage a sustainable work pace, avoiding overwork and burnout to maintain productivity and team morale, On-site Customer: Have a customer
representative available on-site to provide real-time feedback and clarification to the development team., Coding Standards: Follow agreed-upon coding standards and conventions to ensure
consistency and readability across the codebase.
2.Software project management involves the planning, organizing, and controlling of resources and activities to ensure the successful completion of a software project.
a. Goals: - Delivering the software project within the specified time, budget, and quality constraints.- Meeting the customer's requirements and expectations.- Managing project risks effectively.- Ensuring effective collaboration
and communication among team members.- Maximizing efficiency and productivity throughout the project.
b. Roles:i. Project Manager (PM): Responsible for overall project planning, coordination, and execution. They manage the project team, stakeholders, and ensure project goals are met.ii. Technical Architect (TA): Designs the
software architecture and provides technical guidance to the development team.iii. Business Analyst (BA): Gathers and analyzes requirements from stakeholders, translates them into functional specifications, and ensures
alignment with business objectives.iv. Tester: Responsible for designing and executing test cases, identifying and reporting defects, and ensuring software quality.v. Maintainer: Handles the maintenance and support of the
software after its deployment.
c. Activities:i. Planning:1. Estimation: Estimating the effort, time, and resources required for each project task.2. Scheduling: Creating a timeline and setting deadlines for project milestones and deliverables.3. Task
assignment: Allocating tasks to team members based on their skills and expertise. Play some are back
ii. Team building: Building a cohesive and skilled team, fostering collaboration, and promoting effective communication.iii. Human management: Managing and addressing the needs, performance, and motivation of team
members.iv. Controlling and monitoring:1. Reporting: Tracking and reporting the project's progress, milestones, and any deviations from the plan.2. Problem resolving: Identifying and addressing issues, risks, and
conflicts that arise during the project.v. Customer collaboration: Engaging and involving the customer throughout the project to gather feedback, validate requirements, and ensure customer satisfaction.vi. Risk management:
Identifying, assessing, and managing potential risks to the project's success, including contingency planning and mitigation strategy.
3. Software Requirements and Requirements Engineering: ii. Requirement Analysis and Documentation:
a. Software Requirements: 1. Use Case Model: A graphical representation of interactions between actors and the system to achieve specific
i. User Requirements (Concepts of Operation) & System Requirements: goals.
1. User Requirements: Describes the needs, expectations, and constraints of the end-users or iii. Requirement Validation:1. Inspection: A systematic review process where requirements are examined for
stakeholders.2. System Requirements: Specifies the behavior, functionality, and constraints of the correctness, completeness, consistency, and clarity. 2. TDD (Test-Driven Development): A development
software system being developed. a. Use-case: Describes interactions between actors (users) and the approach where tests are written first, ensuring that requirements are met. 3. Prototyping (Proof of Concept):
system to achieve specific goals.b. User Story: A brief, informal description of a feature or functionality Building a simplified version of the software to validate and refine requirements.
from the user's perspective. iv. Requirement Management: Managing changes to requirements throughout the software development
ii. Functional Requirements & Non-functional Requirements: lifecycle.
- Functional Requirements: Describe specific functionalities and behaviors that the software system v. Question: Why do we need to do requirements validation?(1) Why is requirement inspection/review effective?
should exhibit.- Non-functional Requirements: Specify the quality attributes and constraints of the Requirements validation is crucial to ensure that the gathered requirements are accurate, complete, and
software system, such as performance, reliability, usability, security, etc. feasible. It helps in identifying and resolving any inconsistencies, ambiguities, or gaps in the requirements.
iii. Domain Requirements (Functional & Non-functional): Specific requirements related to the industry or Validating requirements reduces the risk of developing a system that does not meet the stakeholders' needs or
domain in which the software system will be used. expectations. (2)Requirement inspection/review is effective because it involves a systematic and structured
b. Requirements Engineering: i. Requirement Gathering: 1. Techniques: examination of requirements by multiple stakeholders. It allows for early identification of errors, inconsistencies,
a. Interview: Directly interacting with stakeholders to gather their requirements and expectations. b. and omissions, leading to improved requirement quality. This process helps in reducing rework, enhancing
Survey: Collecting information and preferences from a large number of stakeholders through communication, and increasing the overall understanding of the requirements among the project team and
questionnaires or surveys.c. Observation: Observing users or stakeholders in their natural environment stakeholder
to understand their needs and workflows.d. Record: Analyzing existing documents, manuals, or reports
to extract requirements.
Post-conditions User has viewed their class schedule and associated information.
Function/Feature Case Test case name Test step Expected Result (ER) In the introductory course in Software Engineering, you can learn the basic concepts and principles of software
development. Here are some of the key things you can learn in this subject:
ID ID
Function 01: Login as admin Software development process: Understand common software development processes such as Waterfall, Agile,
and DevOps models. Requirements gathering and analysis: Learn how to collect requirements from customers and
analyze them to determine the functionality and requirements of the software.
UC01 UI01 Log in with 1. Enter User Name: "abcd” 1. Authenticated Software Design: Learn about software design principles and methods, including object-oriented design, structural
correct username 2.Enter Password: "abcd" 2. A welcome message will be design, and user interface design. Software programming: Learn to code through a programming language like
Java, Python, or C++. Understand basic concepts like variables, functions, classes, and objects. Software testing:
and password 3. Click "Ok" button displayed Learn about software testing methods, including unit testing, system testing, and acceptance testing. Software
project management: Understand software project management methodologies, planning, progress tracking, and
risk management. Version management and version control systems: Learn to use version management tools like
Git to manage source code and track changes in projects.
4. Software Analysis and Design ii. Question: How does architecture affect the performance of the software?
a. Software Architecture: - The architecture of a software system can have a significant impact on its performance. A well-designed
i. Question: Why do we need to detail/form an architecture for the software? (Log4j) architecture considers factors like efficient data flow, optimized algorithms, modular design, and proper
- Detailed software architecture is essential to provide a blueprint for the overall structure and organization resource utilization. Architecture influences factors such as response time, throughput, scalability, and
of the software system. It helps in understanding the system's components, their interactions, and the resource consumption, which collectively affect the overall performance of the software.
overall design principles. By detailing the architecture, developers can ensure modularity, scalability, iii. Loosely Coupled vs. Tightly Coupled- Loosely coupled architecture promotes independence and
maintainability, and reusability of the software. In the case of Log4j, a popular logging framework, a well- modularity among system components, reducing dependencies and allowing for easier maintenance and
defined architecture ensures efficient logging functionality and extensibility. scalability. Tightly coupled architecture, on the other hand, has strong interdependencies between
ii. Scalability: Horizontal Scale vs. Vertical Scale components, making it harder to modify or replace individual parts without affecting the entire system.
- Scalability refers to the ability of a system to handle increasing loads or growing demands. Horizontal iv. Fine-grained vs. Coarse-grained Components
scaling involves adding more machines or servers to distribute the workload, while vertical scaling involves - Fine-grained components are small and focused, performing specific functions. They offer more flexibility
adding more resources (CPU, memory) to a single machine. The choice between horizontal and vertical and reusability but may introduce higher overhead due to increased communication. Coarse-grained
scaling depends on factors like system requirements, cost, performance goals, and the nature of the components are larger and encompass multiple functionalities, providing better performance but reduced
application. flexibility and reusability.
iii. Architectural Critical Requirements c. Detailed Design (Low-Level Design):
- Architectural critical requirements are the key system requirements that have a significant impact on the i. High-Level Design vs. Detailed Design
software architecture. These requirements are crucial for the system's success and need to be considered - High-level design focuses on defining the overall system architecture, major components, and their
during the design process. interactions. Detailed design, also known as low-level design, delves deeper into the implementation details
Examples of architectural critical requirements include performance, security, reliability, availability, and of individual components, specifying their internal structure, algorithms, and interfaces.
usability. ii. Class Diagram is a visual representation of the classes, their attributes, methods, and relationships within
b. Architectural Design: a system. It helps in understanding the structure of the software and the interactions between different
i. Based on Requirements to Form the Architecture classes.
- The architectural design phase involves translating the requirements into a well-defined software iii. Sequence Diagram illustrates the interaction between objects or components in a system over time. It
architecture. The architecture is designed to meet the functional and non-functional requirements of the shows the sequence of messages exchanged between objects, helping to visualize the flow of control and
system, ensuring that it provides the desired features and qualities. data during specific scenarios or use cases.
6.Software Testing: Testing goals: Validation testing: Demonstrate to the developer and the
system customer that the software meets its requirements. A successful test shows that the ii. Ad-hoc Testing: Informal testing performed without predefined test cases or plans.
system operates as intended. Defect testing: Discover faults or defects in software where its iii. Smoke Testing: A subset of tests executed to verify basic functionality and identify critical issues.
behavior is incorrect or not in conformance with its specification. A successful test is a test that d. Concepts: i. Test Case: A set of conditions or inputs along with the expected results, used to determine if a specific
makes the system perform incorrectly. Tests show the presence not the absence of defects. a. aspect of the software is functioning correctly. ii. Test Steps: The individual actions or instructions executed to perform
Levels of Testing: i. Unit Testing: Testing individual units or components of the software to a test case. iii. Test Data: The specific data values and inputs used during testing to validate the behavior of the
ensure their functionality in isolation. software.
ii. System Testing: 1. Integration Testing: Testing the interaction and integration between iv. Test Results: The outcomes and observations recorded during the execution of test cases.
different components/modules of the software. 2. Release Testing: Testing the entire system to v. Defects: Any deviation or failure of the software from its expected behavior. vi. Test Coverage: The measurement of
ensure its readiness for release. the extent to which the software has been tested.
iii. Acceptance Testing: Testing conducted to determine if the software meets the user's 1. Code Coverage: The percentage of code that has been executed during testing.
requirements and is acceptable for delivery. b. Types of Testing: i. Functional Testing: Testing 2. Function Coverage: The percentage of functions or features that have been tested.
the functional requirements of the software. ii. Non-functional Testing: 1. Performance Testing: 3. UI Coverage: The extent to which the user interface has been tested.
Testing the performance characteristics of the software, such as response time, scalability, and 4. Path Coverage: The coverage of different paths or routes through the software.
resource usage. 2. Load Testing: Testing the software's behavior under expected and peak load e. Techniques:i. Requirement-based Testing: Creating test cases based on the specific requirements or specifications
conditions.3. Usability Testing: Testing the software's user-friendliness and ease of use. 4. of the software. ii. Equivalence Partitioning: Generating test cases by dividing the input domain into equivalent
Security Testing: Testing the software's ability to protect against unauthorized access, threats, partitions and selecting representative values from each partition. iii. Path Testing: Creating test cases to cover all
and vulnerabilities. c. Techniques: i. Regression Testing: Repeating previously executed tests to possible paths or routes through the software. iv. Ad-hoc Testing: Informal testing performed without predefined test
ensure that changes or additions to the software have not introduced new defects. cases or plans. v. Smoke Testing: A subset of tests executed to verify basic functionality and identify critical issues.
Le Huu Trong Scrum master, Backend & Gather teammates with requirements received from the product's owner. -Sketching layout and receiving product owner's feedback. -Work management & sprint management. -Setup &
Frontend Developer Manage workspace. -Design database. -Design API & write documents. -User entity handle (BE, FE logistics). -Services handle (BE, FE logistics). -Design repositories -Backend
testing.
Le Thanh Khoi Business analyst, Tester, Handle repositories -Write and modify documents. -Design login page. -Design user page. -Modify UI. -Home page (UI/UX & Logistics). -Frontend testing (UI/UX & Logistics). -
Nguyen Frontend Developer, Review PAs.
Backend Developer
Phan Van Frontend Developer, Base layout (UI/UX). -Navbar & Footer component (UI/UX & Logistics). -Login page (UI/UX & Logistics). -Search, filter (UI/UX & Logistics). Manager detail screen (UI/UX &
Nguyen Tester Logistics). -Manager dashboard (UI/UX & Logistics). -Frontend testing (UI/UX & Logistics). -Review PAs.
Nguyen Gia Frontend Developer, Student page (UI/UX). -Student detail screen (UI/UX). -Teacher page (UI/UX). Scheduled page (UI). Forgot password page (UI/UX)
Hung Tester
1. Project Manager: Responsible for overall project planning, coordination, and management. They ensure that the project is delivered on time, within budget, and meets the specified requirements.
2. Business Analyst: Works closely with stakeholders to gather and analyze business requirements. They translate these requirements into functional specifications for the development team.
3. Architect: Designs the overall structure and architecture of the software system. They define the technical standards, frameworks, and technologies to be used during development.
4. Developer: Responsible for writing code and implementing the software solution based on the defined requirements and design. They use programming languages and tools to create the software application.
5. Tester: Conducts various types of testing, including unit testing, integration testing, and system testing. They ensure that the software meets the specified requirements and functions as intended.
6. User Experience (UX) Designer: Focuses on designing the user interface and overall user experience of the software. They ensure that the software is user-friendly, intuitive, and visually appealing.
7. Configuration Manager: Manages the configuration and version control of the software. They ensure that all changes are properly tracked, documented, and integrated into the software.
8. Quality Assurance (QA) Manager: Oversees the quality assurance process and ensures that the software development follows the defined standards and best practices. They may also coordinate with testing teams to
ensure thorough testing.9. Deployment Manager: Manages the deployment and release of the software to the production environment. They coordinate with various stakeholders to ensure a smooth transition from
development to production.1. Model (M): Represents data and data processing logic. Model is responsible for getting and providing data to other components in the model.2. View (V): Represents the user interface. It
displays data from the Model and provides an interface for the user to interact with the application.3. Controller (C): Is the bridge between Model and View. It handles events and requests from the user, then updates the
Model and notifies the View to update the interface.
Plan-Driven Process 1. Predictive: The plan-driven process follows a sequential and predictive approach, where the entire project is planned upfront, including requirements, design, and implementation phases.2. Detailed
Documentation: It emphasizes extensive documentation, including detailed requirements specifications, design documents, and project plans. 3. Waterfall Model: The plan-driven process often follows a waterfall model,
where each phase is completed before moving on to the next, with minimal room for changes or iterations.4. Emphasis on Planning: The focus is on thorough planning and upfront decision-making, aiming to minimize risks
and uncertainties during the project. 5. Fixed Scope and Timeline: The scope, timeline, and deliverables are typically defined at the beginning of the project and are less flexible to changes. 6. Sequential Execution: The plan-
driven process follows a linear sequence of activities, with each phase building upon the completion of the previous phase. 7. Formal Change Control: Changes to requirements or scope are typically managed through formal
change control processes, requiring approval and impact analysis before implementation. Agile Process:1. Adaptive: The agile process is iterative and adaptive, allowing for flexibility and responsiveness to changing
requirements and priorities throughout the project.2. Minimal Documentation: It promotes lightweight documentation, focusing on delivering working software rather than extensive documentation. 3. Iterative Development:
The agile process follows an iterative development approach, dividing the project into small increments or iterations, with each iteration delivering a potentially shippable product. 4. Emphasis on Collaboration: Collaboration
and communication among team members and stakeholders are highly valued, promoting frequent feedback and continuous improvement. 5. Embracing Change: The agile process embraces changes in requirements,
allowing for flexibility and adaptation to evolving customer needs. 6. Incremental Delivery: The software is developed and delivered in small increments, allowing for frequent releases and early feedback from users.
7.Continuous Integration: Continuous integration and testing are emphasized, ensuring that the software is continuously integrated and tested throughout the development process. Waterfall Advantage:1. Easy to understand
and implement: Waterfall model is easy to understand and implement, especially suitable for projects with stable and clear requirements.2. Easy project management: Project management in the Waterfall model is done in
clear phases, making it easy to track progress and evaluate performance. Defect:1. Difficult to adapt to change: Waterfall model is not flexible and difficult to adapt to changing requirements or customer feedback during
development.2. High risk: Since this model requires defining requirements from scratch, if there is an error or omission in the initial requirements definition, the risk of project failure can be increased. Scrum: Advantage: 1.
Flexibility and adaptability: The Scrum model allows for rapid change of requirements and response, helping the project adapt to changes in the business environment. 2. Product has value from the start: With each sprint,
the product can be delivered with features that are valuable to the customer. 3. Increase interaction and teamwork: Daily meetings and elective assignments create good conditions for interaction and teamwork in the
development team. Defect: 1. Requires active participation: The Scrum model requires active participation and commitment from all members of the development team. 2. Requires flexibility in management: Project
management in the Scrum model requires flexibility and adaptability to ensure progress and product quality. In the process of developing software with my team, I encountered some common problems. The first is the
problem of conflict of ideas because everyone has a different good idea, the second is the problem of working time and delaying the task deadline, the third is the problem of communication between people in the group is
not much, The problem is about coding skills because in a short time we have to learn a new language and there are many bugs in the coding process, so the progress is quite slow.nBut those were only challenges during
the first few weeks, after having a meeting among team members, I had solutions that could support each other in many problems that occurred during the working process such as: learn and learn more online about the
operation of the language used to install, have many meeting to give opinions and solutions to the problems encountered and listen to each other's ideas to develop better software. Among the roles in software development
projects, I like the developer role the most because I find great satisfaction in problem-solving and creating solutions through coding. It allows me to apply my technical skills and knowledge to develop functional and efficient
software systems. I also appreciate the continuous learning and growth opportunities that come with being a developer, as technology is constantly evolving. Additionally, collaborating with a team of like-minded individuals
and working together to build innovative software is both rewarding and fulfilling. Overall, being a developer allows me to combine my passion for technology with my creativity to bring ideas to life. RUP: Is a flexible software
development model that focuses on risk management and quality control. This model divides the development process into phases such as initiation, planning, analysis, design, construction, testing, and deployment. Each phase has specific activities and products to
be created. More flexibility than Waterfall, but still with strict control and management. Defect: quite complex in terms of operating procedures requiring experience consuming a lot of time and resources in terms of people and money limited flexibility depends heavily on
the right documentation small project