Introducing
Your new presentation assistant.
Refine, enhance, and tailor your content, source relevant images, and edit visuals quicker than ever before.
Trending searches
Software Engineering
by Engr. Darakhshan Syed
Lecture No. 2 (Continue...)
is a coherent set of activities for specifying, designing, implementing and testing software systems.
A software process model is an abstract representation of a process that presents a description of a process from some particular perspective. There are many different software processes but all involve:
Specification – defining what the system should do;
Design and implementation – defining the organization of the system and implementing the system;
Validation – checking that it does what the customer wants;
Evolution – changing the system in response to changing customer needs.
To be effective there must be a review step at each phase to check for completion.
In theory we should not proceed down the waterfall until the phase is "complete".
Problem: real projects don’t work this way – “change is the only constant”
Essence: process contains several cycles, starting from the centre; at each iteration the tasks involve more detailed knowledge and design tasks.
Where does these leave both the customer and the developer?
They both think they know what is required but either do not know how to do it or cannot be sure of what is really required.
This might be described as the software engineer's dilemma!
Developing some high level strategies, and some simple frameworks for testing out the concepts that the customer wants and the developer can implement.
From here both are able to respond with suggestions for improvements and changes. The cycle may then be able to be repeated, each time progressing closer to the required solution.
This iterative process is called prototyping.
“Grow, don’t build software.” - Fred Brooks
Step 1: Prototype
Step 2: Expansion
Step 3: Consolidation
Extreme Programming (XP) stresses customer satisfaction and emphasizes team work.
XP principles: communication, simplicity, feedback, and courage.
Feedback = testing SW from day one; deliver to customers as early as possible; implement changes as suggested.
With this foundation XP programmers are able to respond courageously to changing requirements and technology.
Agile software development refers to software development methodologies centered round the idea of iterative development, where requirements and solutions evolve through collaboration between self-organizing cross-functional teams.
“Different projects need different processes or methodologies”
“Focusing on skills, communication and community allows the project to be more effective and more agile than focusing on process”