unit 7

Cards (33)

  • Software engineering
    • Comprises many phases and activities that require distinct expertise in very different fields
    • Cannot be known by a single person, typically shared among many individuals
    • Large number of people involved in creation and operation of complex IT systems
  • Role
    Defined function to be performed by a project team member, such as testing, filing, inspecting, and coding
  • A role is characterized by its name, specific tasks, and specific objectives
  • A person involved in the project has at least one specific role
  • Roles are assigned multiple times depending on the size of the project
  • One person can have several roles at the same time
  • Explicit division into roles and determination of objectives for each role induces conflicts of objectives between roles and people involved in the project
  • Conflicts of interest between people involved in the project must be continuously negotiated and resolved in every phase of software engineering
  • Giving one individual person important competing roles like project manager and quality manager does not solve such conflicts, instead it harms state-of-the-art paradigms like separation of duty
  • Quality of results of individual activities heavily dependent on close interaction and communication between people involved, personal relationships and interactions between tasks assigned to roles are decisive factors for success or failure of a software project
  • Projects work and can be completed successfully if the right people work properly with each other using the appropriate methods, (modeling and programming) languages, and tools
  • There is no complete and generally accepted list of roles in software engineering
  • Specific name, tasks, goals, and responsibilities of roles vary from organization to organization, and often from project to project
  • There can be specializations within a role, e.g. sub-project manager, Java developer, or security architect
  • Common roles found in practice
    • Project Manager
    • Risk Manager
    • Quality Manager
    • Requirements Engineer
    • Software Architect
    • Developer
    • Tester
    • Integrator (Transition Manager)
    • System Technician or Manager
  • Project Manager
    Person assigned by the performing organization to lead the team responsible for achieving the project objectives
  • Tasks of Project Manager
    1. Planning, organizing, and estimating the cost of the project
    2. Controlling project activities and people
    3. Controlling the results achieved
    4. Monitoring the project plan and productivity
  • Risk Manager
    Aims to minimize the overall risk of the project
  • Tasks of Risk Manager
    1. Identifying risks of all kinds in the project
    2. Analyzing and assessing risks
    3. Developing strategies for risk resolution or risk mitigation
    4. Monitoring risks
  • Quality Manager
    Responsible for all activities and deliverables for quality assurance, coordinates measures to ensure process and system quality
  • Tasks of Quality Manager
    1. Defining of system quality
    2. Creating of a verifiable plan for quality assurance
    3. Coordinating of quality assurance measures
    4. Observing and ensuring customer satisfaction
    5. Adopting of quality guidelines and checking whether they are compliant
  • Requirements Engineer
    Responsible for delivering the business needs of the project, i.e. a set of requirements for the software system that have been coordinated with all relevant people
  • Tasks of Requirements Engineer
    1. Determining relevant sources for system requirements
    2. Requirements elicitation
    3. Documenting of the identified requirements
    4. Achieving compliance with the documented requirements
    5. Validating and coordinating the documented requirements
    6. Tracking the requirement's life cycle
  • Software Architect
    Aims for the successful technical implementation of the business requirements in a software system
  • Tasks of Software Architect
    1. Gathering and understanding the domain-specific, technical, and organizational requirements for the system in development
    2. Designing and describing of the (software) architecture of the system
    3. Ensuring compliance with quality requirements
    4. Ensuring compliance with technical boundary conditions
    5. Monitoring the architecture during implementation
    6. Preparing the system integration through documentation of the system architecture and definition of test cases for the integration test
  • Developer
    Aims to create program code that can be compiled into an executable system and comply with the specification
  • Tasks of Developer
    1. Programming individual modules (units) of the system
    2. Documenting the generated program code
    3. Defining of the module-specific algorithms
    4. Performing tests at unit level
    5. Integrating individual modules into an overall system
  • Tester
    Aims to find defects in the parts of the system that are completed in the course of the software project, and defects in the system as a whole
  • Tasks of Tester
    1. Selecting of the test procedures to be used
    2. Detailing of test plan, test cases, test data, and test run specification
    3. Performing tests at various test levels
    4. Documenting of the test conditions and results
  • Integrator (Transition Manager)
    Aims to adapt the newly created or changed system to the existing landscape of software and hardware
  • Tasks of Integrator
    1. Examining the integrability of the system in individual components of the operating infrastructure
    2. Trying out selected aspects of integration
    3. Forecasting the runtime behavior and hardware requirements of the new system in the operating infrastructure
    4. Integrating of the finished system into the operating infrastructure
    5. Establishing the connection of technical interfaces between systems
  • System Technician or Manager
    Aims to provide and guarantee technical resources for the operation of a software system
  • Tasks of System Technician
    1. Evaluating, installing, and maintaining the operating infrastructure (hardware and software)
    2. Providing the resources required by individual software systems
    3. Monitoring the available and used resources, such as hard disk space, main memory, central processing unit (CPU) time, and network utilization
    4. Establishing, operating, and maintaining systems to ensure the availability of the operating infrastructure