CST301 Final wk5

docx

School

Ashford University *

*We aren’t endorsed by this school

Course

301

Subject

Industrial Engineering

Date

Apr 3, 2024

Type

docx

Pages

12

Report

Uploaded by JudgeWombat1051

Week 5 Final Name CST 301: Software Technology & Design Chintan Thakkar January 2024
Concept maps Week 1
Week 2
Your preview ends here
Eager to read complete document? Join bartleby learn and gain access to the full version
  • Access to all documents
  • Unlimited textbook solutions
  • 24/7 expert homework help
Week 3
Week 4
Week 5 Outline the features of contemporary Software Engineering, within the context of: Software development, software engineering, software process, process models, process activities, software design and implementation, software validations, and evolution. Software Development encompasses all aspects of creating, specifying requirements, designing, programming, documenting, and testing to create and maintain an application. Along with troubleshooting and bug-fixing the components. Contemporary practices include agile methodologies and DevOps practices (Inflectra, 2023). Software Engineering is an efficient, and measurable approach to the development, operation, and maintenance of software. This field integrates computer science and engineering principles to create high-quality software that meets specific needs. Software engineering often involves working in teams, involving tools and
Your preview ends here
Eager to read complete document? Join bartleby learn and gain access to the full version
  • Access to all documents
  • Unlimited textbook solutions
  • 24/7 expert homework help
practices for collaboration and communication. Software Process refers to the methods and practices used in the development and maintenance of software. Contemporary software processes are iterative and incremental, focusing on managing complexities and changing requirements through methodologies like Scrum and extreme programming of software development. Process Models are representations of software processes, each providing a specific approach to organizing, dividing, and scheduling the work of software development. These would be the Waterfall model, incremental development, the Spiral model, and the agile models. Each model has its strengths and weaknesses, and the choice often depends on the project's objectives. Process Activities involve requirements engineering, design, implementation, testing, and maintenance. Contemporary approaches focus on rapid prototyping, user-centric design, and automated testing to ensure the software meets user needs and quality standards. Software Design and Implementation is the planning and outlining of how the software will work and what it will look like as this is the designing of the blueprint. Implementation is the actual building of the software that will follow a design pattern, testing, and ensure it meets the needs. Software Validation ensures that software meets the required specifications and user needs. Validation processes include a range of testing methodologies (like unit testing, integration testing, system testing, and acceptance testing), as well as formal verification techniques and user testing to ensure the software's reliability and usability. Evolution is when software must evolve to meet changing user needs and utilize new technologies as they come out. Ensuring the software is maintainable and adaptable, with drivers of formal and informal system changes to continuously meet the needs of the users. The evolution process continues throughout the entire lifecycle of the software.
Describe software engineering development techniques, including agile and plan-driven methodologies, requirements engineering processes, specifications, use cases, validations, and change management. Software engineering development techniques use different and varying methodologies and practices to effectively create and maintain software systems. Agile methodologies utilize either Scrum, or Extreme Programming, and emphasize rapid development, flexibility, and active stakeholder collaboration. These approaches adapt to changing requirements through short development cycles, known as sprints, and encourage continuous feedback and improvement from the stakeholders. Plan-driven methodologies, like the Waterfall model, offer a more structured approach with more upfront planning and a step-by-step process encompassing each stage of requirements such as analysis, design, implementation, testing, and maintenance. Plan- driven is often preferred for projects with defined requirements and minimal uncertainty. The process of requirements engineering is pivotal in both methodologies. It involves the gathering, analysis, and documentation of stakeholder needs to ensure an understanding of what the software must accomplish. Specifications from this process provide detailed documentation of both functional and non-functional requirements, serving as a roadmap for developers and a reference for stakeholders. Use cases, describe how users interact with the software and are key in designing user-friendly functionalities and interfaces. Validation processes, including testing methods like unit, integration, system, and user acceptance testing, all of which are essential to ensure the software aligns with the specified requirements. Change management is crucial in software development as it encompasses the evaluation, approval, and implementation of changes. This is set in place to ensure that changes to the software or project are accomplished effectively. Overall, these software engineering development techniques ensure that the software
being developed meets the needs of the stakeholders and meets all expectations (Geeksforgeeks, 2023). Explain how various system modeling fundamentals, including context-models, interaction- models, structural-models, and behavioral-models, lead to architectural design, architectural views, architectural patterns, and application architectures. System modeling fundamentals are essential to the design of software systems, offering different perspectives and understanding, designing, and communicating the system's structure and behavior. Context models help in understanding the system's environment, including how it interacts with external entities, guiding the development of architectural designs that effectively manage these interactions. Interaction models focus on the communication between different parts of the system, influencing designs that facilitate internal and external communication. Structural models provide a static view of the system, outlining components and their relationships, which is crucial for creating a modular and organized architecture. The behavioral models depict how the system behaves in response to different events and data flows, guiding the design of the system's dynamic aspects. Describe how system modeling is applied in developing object-oriented software, architectural design, and implementation. In developing object-oriented software, system modeling is a key process that guides from design to implementation. It starts by using models, like UML diagrams, to define classes and objects, which are the fundamental building blocks in object-oriented programming. This
Your preview ends here
Eager to read complete document? Join bartleby learn and gain access to the full version
  • Access to all documents
  • Unlimited textbook solutions
  • 24/7 expert homework help
helps in planning how data and behavior are fixed and ensures a modular and maintainable code structure. During the architectural design phase, system modeling takes a broader view, similar to the Mentcare system laying out the high-level structure of the software. It identifies major components, like modules or services, and how they interact, using diagrams to visualize the architecture. This stage also involves choosing and applying architectural patterns, such as the MVC (Model-View-Controller) or Layered Architecture, which dictate the overall structure and flow of the software. The final aspect is the implementation phase, these are translated into the building of the actual code. They serve as a blueprint, ensuring that the coding remains true to the planned design and architecture. Overall, each step is crucial to ensure that the software is well-organized, follows design principles, and the final product aligns with the initial design goals. Describe the various software testing plans to include development, release, user testing phases, the mechanisms to control software changes or evolution processes, and software maintenance. Software testing is essential for software development, as this encompasses a range of phases and plans to ensure the software's quality and functionality. During the development phase, testing includes unit testing of individual code components, integration testing to ensure modules work together, and system testing of the complete system as a whole. Once the development testing is complete, the software undergoes release testing, which involves alpha testing by users of the company and beta testing by select external users. This phase helps identify any issues that might not have been caught during development. User testing is another crucial phase, where end users perform acceptance testing to confirm the software meets their
needs and usability testing to ensure it's user-friendly. Controlling software change through the evolution of software is essential. This is accomplished through a change implementation process that tracks and implements changes while performing a requirement analysis of the system that helps with the modifications of the software. After release, software maintenance becomes the next function, involving corrective maintenance to fix bugs, adjust to new environments, perfective maintenance for performance improvements, and preventive maintenance to avoid future issues. The testing and maintenance ensure that the software remains functional, efficient, and relevant to user needs over time. Describe how you might use these concepts about software engineering in future courses and/or future jobs. As I have experience with these concepts and functions in other applications and have learned a great deal more of these concepts, they can be highly beneficial in both academic and professional settings. In future courses, these principles can guide me through software projects, ensuring that my work is well-planned, efficiently executed, and easily maintainable. They're also invaluable in group projects, where agile methodologies can enhance teamwork and communication. In the professional realm, these principles are fundamental in various roles. As a project manager, they are essential for not only software developers and engineers but just about any project that needs to be developed. They help in planning and overseeing projects, also in quality assurance roles, they guide the testing and validation of software to ensure it meets the standards. The skills gained from software engineering concepts are essential for just about any job or profession.
References: Sommerville, I. (2016). Software engineering (10th ed.). Pearson. Inflectra (2023, July) Best Practices in Modern Software Development. Retrieved from. https://www.inflectra.com/Ideas/Entry/software-development-best-practices-1571.aspx Geeksforgeeks (2023, Nov) Requirements Engineering Process in Software Engineering. Retrieved from. https://www.geeksforgeeks.org/software-engineering-requirements- engineering-process/
Your preview ends here
Eager to read complete document? Join bartleby learn and gain access to the full version
  • Access to all documents
  • Unlimited textbook solutions
  • 24/7 expert homework help