Skip to content

Latest commit

 

History

History
128 lines (102 loc) · 12.6 KB

File metadata and controls

128 lines (102 loc) · 12.6 KB

Review Assignment Due Date Open in Visual Studio Code

SE-Assignment-2

Assignment: Introduction to Software Engineering Instructions: Answer the following questions based on your understanding of software engineering concepts. Provide detailed explanations and examples where appropriate.

Questions: Define Software Engineering: software engineering is a branch of engineering that deals with the development, testing and development of software. These software serve a particular purpose and finds a cost-effective solution to problems.

What is software engineering, and how does it differ from traditional programming? Software Development Life Cycle (SDLC): Software development life cycle is a model that is used to design, develop and test good quality software. SDLC is a process followed for software engineering and consists of a precise plan that describes how to develop, maintain, replace, and enhance specific software. The life cycle defines a method for improving the quality of software and the all-around development process. Traditional programming involved a programmer writing instructions for a computer to follow without following any specific model to develop his/her software.

Explain the various phases of the Software Development Life Cycle. Provide a brief description of each phase. Agile vs. Waterfall Models: Agile development life cycle is a framework that refers to a collection of practices and principles that guide the development, execution, and management of software development projects. Its advantage over other development practices is that it values and promotes user feedback. The phases of Agile software development life cycle includes: Concept . In this phase, stakeholders work together to determine the scope and the goals of the project. To determine project’s feasibility, they look at project requirements, expected expenses and estimated completion dates Inception . the founder assigns positions, chooses the right team members, and provides development with the resources it needs throughout this stage. Iteration . UI/UX designers and developers must work together in this phase to make sure that all business requirements are met and customer feedback is implemented.this phase is essential as it allows the team to produce a product with the fewest features possible with more functionality added later. Testing . The developers are pleased with their product and proceed to the testing phase. This phase includes verifying the cleanness of the code, fixing bugs and conducting test runs. Production . The team releases the program to an on-premise server or cloud for the public to access. Review . Following the product’s successful debut, customers often offer suggestions for future features, interact with current upgrades, or provide feedback. waterfall development life cycle is a traditional software development process that follows a linear approach. One phase is completed before heading to the next one . The phases of waterfall development life cycle include: Requirement Analysis.- The project requirements are gathered, documented and analyzed Preliminary Design.- The project design is created based on the requirements gathered in the previous phase Detailed Design.- The design is created and the project architecture is defined. The design is further refined and project's technical specifications are finalised. Coding and Unit testing.- The code is written and testing is done to ensure that each component of the software is working as expected. Integration.- The individual componenets are integrated into a working system and testing is done to ensyre that the system functions as expected. Testeing.-The system is tested to ensure that it meats the project's requiremnets and free of defects and bugs. Deployment.- The system is deployed to the production environment, and maintenance is performed to ensure that the system remains stable and functional.

Compare and contrast the Agile and Waterfall models of software development. What are the key differences, and in what scenarios might each be preferred? Waterfall breaks down sofware development into isolated phases that flow into each other whereas agile utilizes iterative development cycles in which multiple lifecycle phases can run in parallel. Wheather an organisation uses agile or waterfall model, all software development projects incorporate common aspects of lifecycle phases including: requirements gathering, analysisi and design , development and implementation, testing and verification and deployment and ongoing maintenance. Waterfall model is best suited when the requirements are clearly defined upfront with minimal probability for any changes between the time software is requisitioned and when it is delivered. Agile model is best suited for software projects that involve ongoing engagement between the development team and the project stakeholders.

What is requirements engineering? Describe the process and its importance in the software development lifecycle. Software Design Principles: Engineering requirements is the process of identifying, aalyzing, specifying and managing the needs and expectations of stakeholders for a software system. These requirements form the foundation for the software development process and are used to guide the design, development and testing of the software. Importance of engineering requirements include: It enusres consistency by making sure the software meets the needs and expectations of stakeholders. It reduces errors in the software by ensuring thath the requirements are clear and met. It improves communication among stskeholders by providing a common understanding of the software's functionality and behaviour. It increases efficiency by reducing the need for rework and changes during the software development process.

Explain the concept of modularity in software design. How does it improve maintainability and scalability of software systems? Modularity refers the logical partitioning of a software system into smaller, independent and interchangable modules. With modularity, maintainance and updates become easier as changes can be made to individual modules without affecting the entire system. Modulability enhances reusability of modules by reducing the need to duplicate code and improve development efficiency. Modularity makes it easier to scale the system up or down as needed. Testing in Software Engineering: Modularity allows for parallel development and testing of modules, reducing the overall development time.

Describe the different levels of software testing (unit testing, integration testing, system testing, acceptance testing). Why is testing crucial in software development? Testing is imprtant in sofware development as it ensures the quality and reliability of the final product. It helps in identifying and fixing errors, bugs before the software is released to the end users. Testing helps understand the actual and expected outcomes of the software, enabling developers to improve the quality of their products.Testing also increases confidence in the software ensuring that it is reliable and meets the needs of the required standards.

  1. Unit Testing: Testing individual units or components of the software, such as functions, methods, or procedures, to ensure they work as expected.

  2. Integration Testing: Testing how different modules or components of the software work together to ensure they integrate correctly and function as a whole.

  3. System Testing: Testing the entire software system to ensure it meets the requirements and works as expected.

  4. Acceptance Testing: Testing the software to ensure it meets the acceptance criteria and is ready for release.

Version Control Systems: What are version control systems, and why are they important in software development? Give examples of popular version control systems and their features. Version control systems are software tools that help developers track and manage changes to your code, files or documents over time. They also allow multiple developers to collaborate on a project by keeping a record of all changes, allowing developers to revert to previous versions if needed and providing a way to merge changes made by different developers. A popular example of a Version control System is Git. It is easy to use and flexible .Git uses a command line(GIt CLI) or an interactive interface (Git bash). Some of its features include creating a new directory, committing changes to it, other developers forking the repository and merging changes.

Software Project Management: Discuss the role of a software project manager. What are some key responsibilities and challenges faced in managing software projects? A software project manager is a crucial member of the development team who plays an important role in ensuring the success of the project. The roles include writing the project proposal, project cost estimation, scheduling, project staffing, software process tailoring and project monitoring. The key responsibilities are categirized into project planning and project monitoring and contrrol. Project planning is undertaken immediately after the feasibility study phase and before the starting of the reuirement analysis and specification phase. Some of the challenges faced by a software project manager include.-

  1. Team management: Building a strong team with the right skills, expertise and managing conflicts, ensuring effective communication among team members and cordinating tasks and resources to meet project deadlines.
  2. Having unrealistic project deadlines
  3. Managing project expenses and ensuring that the project stays within the budget through identifying and mitigating risks tat could impact project costs.
  4. Managing stakeholder's expectations by communicating with them efficiently
  5. Managing technical complexity and ensuring that the project is technically feasible.

Software Maintenance:

Define software maintenance and explain the different types of maintenance activities. Why is maintenance an essential part of the software lifecycle? Software maintenance is the process of modifying and updating software to ensure it continues to meet the changing needs of its users. This involves making changes, updates and repairs to the software to keep it running smoothly. There are four main types of software maintenance: Corrective Maintenance: This type of maintenance addresses errors or bugs in the software that cause it to malfunction or behave incorrectly. Adaptive Maintenance: This type of maintenance involves modifying the software to adapt to changing user needs, new technologies, or evolving business requirements. Perfective Maintenance: This type of maintenance focuses on improving the software’s performance, functionality, or usability without changing its original functionality. Preventive Maintenance: This type of maintenance involves making changes to the software to prevent future problems or errors from occurring. The benefits of software maintenance are:

  • Improved software performance and reliability
  • It increases user satisfaction and productivity
  • It helps reduce downtime and data loss
  • It leads to improved security and compliance with regulatory requirements.

Ethical Considerations in Software Engineering:

What are some ethical issues that software engineers might face? How can software engineers ensure they adhere to ethical standards in their work? Data privacy and security. A developer should ensure that the data collected is stored securely and is in compliance with the required regulations The developer should ensure that the software design enriches a user's life and does not fuel insecurities or monopolizes their time The software engineer should avoid designing software that perpetuates biases or discrimination The developer should respect intellectual property rights and copy rights The developer should consider the environmental impact of the software development and deployment.

Refference list:

Online source: w3schools website. Available at w3schools.com Tutorialspoint website. Available at tutorialspoint.com Geeksforgeeks website. Available at geeksforgeeks.com

Submission Guidelines: Your answers should be well-structured, concise, and to the point. Provide real-world examples or case studies wherever possible. Cite any references or sources you use in your answers. Submit your completed assignment by [due date].