Skip to content

mrprincehillary/Assignment-1

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

SE_Day1_Assignment

#Part 1: Introduction to Software Engineering

##Explain what software engineering is and discuss its importance in the technology industry. software engineering is a field of technology which deals with designing, creating and developing softwares,applications and websites, software engineers are responsible for producing quality and effective software solutions on timely. importance of software engineering:

  1. Software development
  2. System architecture
  3. Quality Assurance
  4. Innovation on technology and app development
  5. security and continou⁸sly learning on Technology

##Identify and describe at least three key milestones in the evolution of software engineering.
The birth of computers or evolution of computers The evolution of Internet The rise of Artificial intelligence Cloud computing and its architecture Machine learning and robotics

##List and briefly explain the phases of the Software Development Life Cycle. This are the phases of software development life cycle 1. planning 2. statement of requirements 3. designing 4. coding /development 5. Testing and Debbuging 6. Deployment 7. Documentation and maintenance
##Compare and contrast the Waterfall and Agile methodologies. Provide examples of scenarios where each would be appropriate. Waterfall Methodology: Structure**: Linear and sequential. Each phase must be completed before the next one begins. Phases**: Requirements, Design, Implementation, Testing, Deployment, Maintenance. Documentation**: Heavy emphasis on documentation at each stage. Flexibility**: Low flexibility; changes are difficult to implement once a phase is completed. Best for**: Projects with well-defined requirements and low likelihood of changes.

  • Example Scenario: Developing a government or regulatory system where requirements are fixed and must adhere to strict compliance.

Agile Methodology:

  • Structure: Iterative and incremental. Development occurs in small, manageable units (sprints).
  • Phases: Planning, Development, Testing, Review, and Retrospective occur repeatedly in cycles.
  • Documentation: Less emphasis on documentation; focuses on working software and collaboration.
  • Flexibility: High flexibility; changes can be accommodated even late in the development process.
  • Best for: Projects with dynamic requirements and a need for rapid delivery.
    • Example Scenario: Developing a mobile app where user feedback is essential for ongoing feature development. ##Describe the roles and responsibilities of a Software Developer, a Quality Assurance Engineer, and a Project Manager in a software engineering team.
  1. Software Developer:

    • Responsibilities:
      • Write clean, maintainable, and efficient code.
      • Participate in code reviews and contribute to team discussions.
      • Collaborate with designers and stakeholders to understand requirements.
      • Troubleshoot and debug applications to resolve issues.
      • Stay updated with new technologies and best practices.
    • Example Tasks: Developing a new feature for an application, fixing bugs, or optimizing existing code for performance.
  2. Quality Assurance Engineer (QA):

    • Responsibilities:
      • Develop and execute test plans, test cases, and automated tests.
      • Identify and document defects and work with developers to resolve issues.
      • Ensure that the software meets quality standards and requirements.
      • Conduct regression testing to ensure new changes do not affect existing functionality.
      • Participate in the review of requirements and design to ensure testability.
    • Example Tasks: Running tests on a new software release, performing load testing, or conducting usability assessments.
  3. Project Manager:

    • Responsibilities:
      • Plan, execute, and close projects, ensuring they are delivered on time and within budget.
      • Coordinate between different teams (development, QA, design) to ensure alignment.
      • Manage project scope, timelines, and resources, and communicate progress to stakeholders.
      • Identify and mitigate risks throughout the project lifecycle.
      • Facilitate meetings, including daily stand-ups and sprint reviews in Agile environments.
    • Example Tasks: Creating a project timeline, updating stakeholders on project status, or resolving resource conflicts. ##Discuss the importance of Integrated Development Environments (IDEs) and Version Control Systems (VCS) in the software development process. Give examples of each. The IDE provide a environment where you work your project in an Ideal IDE should contain, Code editor, debuggers, interpreters, other extension
      a good example is Codeblocks, Netbean IDE, Pycharm community. Version Control System help developers to manage changes on source code over time. VCS are used for branching, collaborative working, change control, reverting to original changes. a good example of VCS system is git eg Github,gitlab ##What are some common challenges faced by software engineers? Provide strategies to overcome these challenges. Changing requirements . this can be solved by employing a methodology which allows adjustments and changes in development, agile is a good choice. Time constraint sometimes time becomes a challenge where you are required to deploy or deliver a project within a very short fixed time. to solve this, employ time management and embrace team work. ##Explain the different types of testing (unit, integration, system, and acceptance) and their importance in software quality assurance. Unit testing is testing individual units to ensure they work as needed integration testing this involve testing integration between different units during development, this will ensure component are compatible System testing this testing involves the whole integrated systems to ensure it works as expected acceptance testing this kind of testing involving beta and alpha testing to ensure the deployed system is accepted by users of the Software. #Part 2: Introduction to AI and Prompt Engineering ##Define prompt engineering and discuss its importance in interacting with AI models. AI is a field which trys to implement human intelligence to machines and computers, it deals with, robotics, machine learning, natural language processing and neural science
      Prompt engineering is designing and crafting input prompt to effectively communicate with AI language eg Gpt-3,Gpt-4 to ensure the model t generate the desired output. prompt engineering ensure quality, tailored solutions, accuracy and customization ##Provide an example of a vague prompt and then improve it by making it clear, specific, and concise. Explain why the improved prompt is more effective. an example of vague prompt is " Tell me about farming in Africa " I can improve this by "What is the main cash crop farming in west Africa in past " the statement is clear which part of Africa, and specific on what kind of farming.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors