Skip to content

Software Development Process

Process Framework
  • Process -> A process defines who is doing what, when and how to reach a certain goal!
  • Each Framework Activity is populated by set of SE actions (a collection of related tasks)
  • Establishes the foundation for a complete software engineering process by identifying a small number of framework activities that are applicable to all software projects, regardless of their size or complexity.
  • Encompasses a set of umbrella activities that are applicable across the entire software process
  • Generic Process Framework Activities
    • Communication
      • with stakeholders
      • intent is to understand stakeholders' objectives and requirements
      • Why -> To get an idea of what we have in our hands ( to better understand the problem)
    • Planning
      • A way to create a roadmap for the project
      • This map is called Software Project Plan - defines software engineering work by describing the following and more details
        1. technical tasks
        2. likely risks
        3. required resources
        4. resultant products
        5. work schedule
    • Modeling
      • "A sketch to understand the big picture"
      • The components, connections, characteristics
      • Various Models are created to simply the development process ahead and have a clear vision of what we are trying to implement.
    • Construction
      • Code Generation
        • Manual or Automated
      • Testing
        • To uncover bugs and errors in code.
    • Deployment
      • The software (complete or partial) is delivered to customer
      • Feedback taken from customer and worked upon
  • Adaptability - The Framework activities are always applicable on every project, but tasks for each activity will vary based on
    1. project Type
    2. Project specific characteristics
    3. human factors (common sense, judgement, etc.)
Umbrella Activities
  1. Software Project tracking and control -> Progress assessment and actions to maintain schedule
  2. Formal Technical Reviews -> code review to avoid bugs
  3. Software quality assurance
  4. Risk management
  5. Measurement -> defines and collects process, project, and product measures to be used by team to deliver according to needs
  6. Software configuration management
  7. Re-usability management -> mechanisms and criteria to build & use reusable components
  8. Work product preparation and production -> creation of models, documents, logs etc.
CMMI (Capability Maturity Model Integration)
  • developed by Software Engineering Institute
  • defines each process in terms of
    • Specific Goals -> characteristics that must exist if activities implied by a process are to be effective
    • Specific Practices -> refine goal to process related activities
  • CMMI Levels
    • Level 1 (Initial)
      • Poorly managed/controlled processes
      • unpredictable outcomes of processes involved
      • ad hoc and chaotic approach used
      • lowest quality and Highest Risk
    • Level 2 (Managed)
      • requirements managed, processes planned and controlled
      • risk involved is lower and quality is better than previous level
      • projects managed and implemented according to documented plans
    • Level 3 (Defined)
      • Processes are well characterised and described using Standards, procedures, methods and tools, etc.!
      • Focus-> Process standardisation
      • Quality and risk involved is Medium
    • Level 4( Quantitatively Manged)
      • Quantitative Objectives based on stakeholders requirements and needs
      • Performance measures of the process are analysed quantitatively
      • High quality process achieved with lower risk
    • Level 5(Optimized)
      • Continuous improvement in process and its performance
      • Improvement -> both incremental and innovative
      • Highest Quality process
Software Process Model
  • Prescribe a distinct set of activities, actions, tasks, milestones, and work products required to engineer high quality software.
  • Not perfect but provide roadmap for projects
  • Provide stability, control and organisation to process
  • Adapted to meet needs of software engineers and managers for specific project Models
  • Need -> to avoid exceeding scheduled time, cost and poor quality, to meet user expectations
  • Process as Black box -> Interactions with customer occur at start and end
  • Process as White box -> Interactions occur in middle stages | reduces risks| allows project changes as project progresses
  • Build and Fix Model
    • May work for small projects but bad for bigger onesbuildAndFixModel.png
    • Impossible to predict and manage
    • High cost of maintenance
    • build a base product and rework till client is satisfied Prescriptive Models
  • Recommends set of process elements, activities, action task, work product & quality.
  • Water Model
    • aka Classic Life Cycle model waterfallModel.png
    • Limitations
      • Requirements cannot be changed in between
      • No initial or trial version for customers
      • once product is finished everything else is maintenance here
      • stakeholders sit idle for others to complete their jobs first
  • Incremental Model
    • versions of systems delivered as incrementsincrementalModel.png
    • useful when lacking staffing as workforce can work parallel at some stages
    • User requirements prioritized highly and made available in the earlier increments
    • Lower risk of project failure
    • Each increment acts as a prototype for next increments as feedback is gained after every increment
  • Rapid Application Development (RAD) Model:
    • Makes extensive use of reusable software components in an extremely short development cycleRAD.png
    • Parallelisation of Modelling and Construction to make the process faster
    • Modeling
      • Business modeling -> Information flow among business is gathered
      • Data modeling -> Information refined into set of data objects that are needed to support business
      • Process Modeling -> Data objects transform to information flow to implement business
    • Construction highlights on reuse of pre-existing components
    • 90 day period for major functionalities Drawback:
    • for large but scalable project , requires sufficient human resources
    • Problematic if system cannot be modularised
    • Not appropriate when technical risks are high

Evolutionary Models 1. Prototyping - When specifications are not clear i.e. requirements are fuzzyprototyping.png - Keep building a prototype idea of the problem statement - Repeat until there is a clear cut idea of what to build 2. Spiral - Iterative nature of prototyping + controlled systematic aspects of Linear sequential ModelspiralModel.png - Software developed in series of evolutionary releases - Divided into the general process frameworks - The process begins at the centre and grows outwards 3. Concurrent Development Model - All activities exist concurrently but reside in different states. concurrentDevelopment.png - appropriate for engineering projects where different engineering teams are involved. 4. Fourth Generation Techniques (4GT) - Set of tools to be directly applied to problems. - User doesn't have to generated codes are related stufffourthGenTechiniques.png - customer describes requirements in a way the 4GT tool can understand and develop the application accordingly. - To transform a 4GT implementation into a product, the developer must conduct thorough testing, develop meaningful documentation. - Merits - Drastic reduction in software development time (for small-intermediate applications) - Demerits - Not much easier to use compared to programming languages - Common Usecases - Report generation - Database query language - Data manipulation - Code generation - Web engineering tools 5. Component Based Development - includes characteristics from spiral modecomponentBasedDevelopmentModel.png - evolutionary by nature and iterative approach to create software - creates application from prepackaged software components (Classes) - Classes created in past software engineering projects are stored and reused. - Candidate classes are identified, if previously available then reused If not available -> engineered using OOP methods - Advantages - leads to software reusablity - approx 70% reduction in development cycle and 84% reduction in project cost - High productivity

AGILE Model
  • software development approach based on iterative development
  • breaks tasks into smaller subtasks/iterations
  • Each iteration considered as short time "frame" in this Model
    • A frame lasts from 1 to 4 weeks
  • this task breakdown lowers risk, and reduces overall delivery time
  • Stages : Planning -> Requirements analysis -> design -> coding -> testing -> deployment Agile Model.png
  • Agile Testing Methods
    • SCRUM -> Focus on ways to manage tasks in team-based development conditions. 3 roles as follows
      • Scrum Master -> set up master team, arrange meetings and remove obstacles for process
      • Product Owner -> makes product product backlog (current update) | priorities delay and is responsible for distribution of functionality on each repetition.
      • Scrum team -> organises the work to complete the sprint/cycle
    • CRYSTAL -> 3 concepts
      • Chartering -> multiple activities involved here making a development team, perform feasibility analysis, development of plans, etc.
      • Cyclic Delivery -> team updates and release plan | integrated product delivered to users
      • Wrap up -> post deployment activity
    • eXtreme Programming(XP) ->When constant change of requirements from customers or unsure about system's performance
    • Feature Driven Development
      • Design and build features.
      • FDD describes small steps to obtain separately per function
    • Lean Software Development
      • follows Just In Time production
      • indicates increasing speed of software development and reducing costs
  • When to use?
    • frequent changes required | customer available at all times for meetings | smaller project size
    • highly qualified and experienced team is available
  • Pros
    • frequent delivery
    • changes acceptable at any point of time
    • reduced total development time
  • Cons
    • shortage of formal documentation may lead to confusion and misinterpretations by different team members
    • Maintenance can be a burden without formal documentation