Lec3 Summary
Lec3 Summary
Part (1)
- Specifications: Defining what the system should do
- Design & Implementation: Implementing the system for a certain organization
- Validation: Checking if the system works as intended
- Evolution: Modifying the system in response to the customers
Software Processes Description:
- Talking about the activities in these processes such as specifying a data model, designing a GUI, etc…
- It also includes -> Products, Roles, Pre- & Post-Conditions
Plan-Driven & Agile Processes:
- Plan-Driven: Everything is planned from the beginning. The team follows the plan step by step,
and it's hard to make changes later.
- Agile: Planning is done in small steps. It’s easy to change things based on the customer’s needs. The work is done part by part,
and the customer gives feedback along the way.
Waterfall Model:
- Plan-driven, Separate & Unique phases of specifications & development
Software Specifications: process of enabling services that are required and the constrains on the system’s operation
Requirement Engineering Processes:
- Requirements Elicitation & analysis
- Requirement Specification
- Requirement Validation
Design Activities:
- Architectural Design -> Identify the overall structure of the system & it’s components
- Database Design -> designing the system data structure & their representation
- Interface Design -> define the interfaces of the system
- Component Selection -> Where you search for reusable components
System Implementation:
- System is implemented through developing programs and configuring it
- Design & Implementation are two different processes
- Programming is an individual activity
- Debugging is finding the program’s failures & fixing them
System Validation:
- Shows that the system meets the requirements of the customer, it involves reviewing the system and testing it, Mostly
through V & V activity
Testing Stages:
- Component Testing -> Individual components are tested independently
- System Testing -> Testing the system as whole
- Customer Testing -> Testing customer’s data to the check if the system matches their need
Software Evolution:
- Software is flexible and can change as the requirements change the software should evolve with it
• Change is in all large software projects, and it leads to reworks so the costs of change could be high
Reducing the Costs of Reworks:
- Software Products should anticipate possible changes before it happens, changing of tolerance
Software Prototyping:
- Prototype is an initial version of the system mostly used to visualize new additions to the system, and can be used in:
- Requirements Gathering, Design Processes, testing
Software Prototyping (Benefits):
- Improved System Usability
- Closer match to the user needs
- Improved Design quality
- Reduced costs
Throw-away Prototypes:
- Prototypes that are discarded after development as they are not needed anymore
Incremental Delivery:
- Instead of delivering the system in one shot, the delivery & deployment is broken into pieces first, to ensure the user
requirements is done first
Incremental Development:
- Develop the system in increments and evaluating each increment before going to another one
**Throw-away Prototypes:**
- Built quickly using special tools or languages
- May not include all features
- Focus on parts that are unclear or need testing
- May skip error handling and security
- Main goal is to test **functions**, not things like
**reliability** or **security**