Com Sci mod 2 Flashcards
Explain the reasons for a structured approach to the software development process
- increased dependence of many organizations on their computer systems
- Crisis in previous developments: for example: increasing costs of software development, dissatisfaction of users and management with the quality and suitability of software, increasing length and complexity of the software.
- Requirements for standard interfaces, both to users and to other software
- Need for tighter control and management of process, visibility of process, risk management
- Importance of the need for the involvement of end users and management
What is the SDLC life cycle?
(Software Development Life Cycle)
The Software Development Life Cycle (SDLC) is a structured process that enables the production of high-quality, low-cost software, in the shortest possible production time.
- The goal of the SDLC is to produce superior software that meets and exceeds all customer expectations and demands.
What are the SDLC stages?
- Project Planning
- Gathering Requirements & Analysis
- Design and Prototype
- Software Development
- Testing
- Deployment
- Maintenance
Explain the attributes of a well-engineered software product
- Maintainability
- Dependability
- Efficiency
- Usability
- Portability
- Availability of appropriate documentation
What is the Waterfall method?
The term “waterfall” refers to the flow of the project, where each phase cascades down to the next. It involves a detailed planning phase, execution, testing, and maintenance. And each phase must be completed before moving on to the next, with little to no flexibility for changes during the project.
Waterfall method
Advantages:
- Provides a way for large or changing teams to work together toward a common goal defined in the requirements phase
- Ensures a disciplined and structured organization
- Provides a simple method to understand, follow, and arrange tasks
- Facilitates management control and departmentalization based on deadlines
- Establishes good coding habits by defining first, then implementing design
- Provides easy access to early system design and specification changes
- Defines milestones and deadlines clearly
Waterfall method
Disadvantages:
- Design flaws, when discovered, often mean starting over from scratch
- It doesn’t incorporate mid-process feedback from users or clients and makes changes based on results
- Delaying the testing until the end of development is common
- There’s no consideration for error correction
- The model doesn’t accommodate changes, scope adjustments, and updates well
- Work on different phases doesn’t overlap, which reduces the efficiency
- Projects don’t produce a working product until later stages
- Not an ideal model to use for complex and high-risk projects
What is rapid prototyping?
Rapid prototyping is a design workflow that includes prototyping and testing a design solution with users and stakeholders to help designers and product teams refine and validate ideas quickly.
Rapid Prototyping
Advantages:
- Explore new concepts and ideas
- Minimize development costs on iterations in the live product (When a feature or product has been validated with users at the design stage, the risk of building something that doesn’t work or isn’t valuable is minimal)
- Market validation
- Testing new features with users
- Getting stakeholder feedback
Rapid Prototyping
Disadvantages:
- Cost of equipment and technology - 3D printers etc
- Material limitations: The materials used in rapid prototyping may not always match the properties of the final production materials. Which might increase the cost in the design phase.
- Skill requirements: Operating and maintaining the equipment for rapid prototyping requires specialised skills. Companies may need to invest in training or hire skilled professionals to utilise these technologies, effectively increasing overall costs.
- Environmental impact: The materials and processes involved in rapid prototyping, especially in 3D printing, can have environmental implications. Some materials used in 3D printing may need to be more easily recyclable, and the energy consumption of certain rapid prototyping methods can be a concern.
What is the Fountain Model/Approach?
This model allows for the advancement from (and return to) various stages of software development regardless of whether or not enough tasks have been completed to reach it.
Fountain Model/Approach
Advantages
- The highly iterative nature of this model ensures intense and frequent customer involvement in the development of the information system.
- The fountain model has the advantage that a progressive piece of software is allowed to be added on each iterative development
- Able to begin coding earlier
- Has many more interaction between design and requirements
Fountain Model/Approach
Disadvantages
- It may be degraded into a code a bit test a bit which requires frequent iteration and refinement
- Without strong project management, the information system theoretically may never be completed if the project team gets caught in a loop of ever-increasing scope and continuously changing requirements.
- may take more time and cost more to complete the information system.
What is the Formal Transformation Approach?
This model views software development as a sequence of steps that starts from a formal (mathematical) specification of the requirements and gradually transforms it into an implementation.
Formal Transformation Approach
Advantages
- It is precise and free of errors (Formal transformation is said to be error-free due to the tedious mathematical specifications which allows no room for errors.)
- It is said to be suitable for safety critical systems. (This is based on its error free nature. Formal transformation ensures that the program or software runs as it is supposed to without any glitches that will affect the running of any vulnerable systems.)
Formal Transformation Approach
Disadvantages
- It is very costly
- It introduces extra complexity.
- It requires specialized expertise.
(This is so because of its tedious nature.)
What is the Reuse-Oriented Approach?
an approach to software development that emphasizes the systematic reuse of existing software components to create new applications.
Reuse-Oriented Approach
Advantages
- lower costs
- faster software development
- save time in testing
- lower risks
-System dependability is increased
- Specialists can be used more effectively by concentrating their expertise on the design of reusable components.
Reuse-Oriented Approach
Disadvantages
- The more general (and thus reusable) a software component is, the less likely it is to be useful without modification for a given application.
- software reuse can also limit creativity and innovation
- When code is reused from different sources, it can be difficult to ensure that all the components work together effectively, and this can lead to compatibility issues and bugs
Analysis Phase
Requirements and Specification Process
What is a Feasibility Study?
a project done to determine software’s technical and commercial viability before its development
Analysis Phase
Requirements and Specification Process
What is a Requirement Analysis?
a process used to determine the needs and expectations of a new product. It involves frequent communication with the stakeholders and end-users of the product to define expectations, resolve conflicts, and document all the key requirements.
Analysis Phase
Tools and Techniques
- Interviews
- Questionnaire
- Observation
- Review Internal Documents
- Data Flow Diagrams (DFD)
- Entity Relationship Diagram (ERD)
- CASE tools