1. Intro & Methodologies Flashcards
(38 cards)
What is the primary goal of software design?
Software design involves problem-solving and planning a software solution.
What are the two main levels of design in software development?
Software design includes low-level component and algorithm design, as well as high-level architectural design.
Name three common aspects considered during software design.
Common aspects include:
1. requirements gathering
2. object-oriented design
3. design patterns
4. architectural patterns
5. testing
In software development, who is defined as the “Customer”?
The Customer is the individual or entity that requires a computer system to achieve specific business goals, either through direct user interaction or interaction with the environment.
What is the primary responsibility of a Software Engineer?
A Software Engineer’s task is to understand how the intended system needs to interact with the user or its environment to meet the customer’s requirements, and then to design the software-to-be.
What is the main role of a Programmer?
The Programmer’s task is to implement the software-to-be that has been designed by the software engineer.
What does the “Divide and Conquer” strategy entail in solving software problems?
It involves identifying logical parts of the system, where each part solves a segment of the problem. This is often done with a domain expert and results in a model of the problem domain.
What are “Actors” when trying to understand the problem domain for software design?
Actors are agents external to the system that interact with it.
For instance, in an ATM system, actors include the bank customer, the ATM machine, and the bank’s remote datacenter.
What are “Concepts/Objects” in the context of understanding a problem domain?
Concepts or Objects are agents working inside the system to make it function. These are conceptual parts of the system and can be more challenging to identify than actors.
Define “User stories” in software design.
User stories are scenarios for using the system, typically describing how a user will interact with the system to achieve a particular goal.
What is a software development methodology?
It is the strategy employed to create the software solution.
What are the three main software development methodologies outlined in the slides?
The three main methods are:
1. Waterfall
2. Iterative & Incremental
3. Agile
Briefly describe the Waterfall methodology.
The Waterfall methodology is a linear and sequential approach where development progresses through distinct phases (e.g., Requirements, Design, Implementation, Verification, Maintenance), with each phase being completed before the next one starts. It is unidirectional.
State one advantage of the Waterfall methodology.
It is simple to come up with or easy to manage.
State one disadvantage of the Waterfall methodology.
A working product is only available at the very end; it is difficult to revise plans once set; it carries high risk and uncertainty; it doesn’t readily incorporate feedback; or it’s not suitable for larger systems.
Describe the Iterative and Incremental methodology.
This methodology involves creating a Minimum Viable Product (MVP) first, and then incrementally adding to it in cycles or iterations. These increments are defined by the amount of work to be done.
What does MVP stand for and what is it in Iterative and Incremental development?
MVP stands for Minimum Viable Product. It is a basic, usable version of the product that is created early in the development process.
List one advantage of the Iterative and Incremental methodology.
An MVP can be delivered to users sooner; work can be prioritized; it can accommodate changes in requirements more easily; or the client can provide feedback after each iteration.
List one disadvantage of the Iterative and Incremental methodology.
It can be harder to manage; initial planning must be robust to ensure increments integrate with future work; or defining the scope of increments can be difficult.
How are increments defined in the Agile methodology?
In Agile, increments are defined by timed intervals (e.g., sprints).
What are two primary focuses of the Agile methodology?
Agile focuses more on immediate requirements rather than extensive upfront planning, and it emphasizes collaboration.
State one advantage of the Agile methodology.
It allows for early and frequent releases of working software; it is highly adaptable to changing requirements; it incorporates constant feedback; or it is generally a simple approach.
State one disadvantage of the Agile methodology.
It can be challenging to constantly meet with the client for feedback; it requires more discipline from the team to meet time goals for each interval; or time estimation for tasks needs to be reasonably good.
Which software development methodology is specified for use in the COMS 3009A course projects?
The Scrum methodology will be used for the projects.