Monday, March 12, 2018

23. Lets Discuss some past paper questions online–1

Look at Sep 2017 Q4 – part 2

Give a brief explanation of what improvements can be made to the construction and infrastructure management processes of a traditional development process cycle.
(8 marks)

what are the exactly looking for in this answer ?

all you need to elaborate here are ,

*** what are the issues that exist in a traditional SDLC processes . How can they be improved by incorporating good practices of other SDLC models such a Agile , INcremental , RAD etc …

here is a suggested structure for your answer
  • What are the main steps of traditional SDLC ?
  • Provide a diagram ( waterfall)
  • what are the key unique features / limitations  of traditional SDLC ?
    • sequential, linear models are not too practical  ,
    • less involvement of end users in requirement gathering ,
    • too many processes , procedures ,
    • belief in delivering documentations
    • testing takes too long in planning and design
    • change management process is slow and formal
    • less team work seen
    • modular programming may not be practical
  • how could the SDLC stages be improved by incorporating good practices of any other SDLC you know
    • Requirements Engineering stage ( by involving end users , prototyping )
    • Design Stage ( reduce design and development time by using CBSD , reusing components
    • Development (use of CASE tools , development frameworks etc , component based delivery like incremental )
    • Testing ( involvement of end users , using 3rd parties / outsourcing for testing smoke testing )
    • Implementation ( pilot delivery , component based implementation )
    • Maintenance (version management , change management )
you need to elaborate the above points I have given .

BCS Examiner report says ,

The “traditional” software development process is often represented by a sequence of phases from development into maintenance. Within each phase, there exist many activities that can be implemented to varying degrees. These improvements relate not just to the sequencing of the steps or to the inclusion (or exclusion) of certain steps but also to the specific implementation of the individual steps.
Improvements to the general area of requirements management, including capture, sign-off and change management by adopting prototyping methods or tools to a lesser or greater degree. In addition improvements in the testing process can also yield positive benefits.

Sunday, March 11, 2018

22. People CMM

The P-CMM can be used as a framework for improving the way in which an organisation manages its human assets,  a five-level model from initial to optimizing. Its strategic objectives include: increasing the capability of an organisation involved in software development by increasing the capability of its workforce; aligning the organization and its employee’s motivation; and retention of critical human assets.
image
Please read this link : https://ifs.host.cs.st-andrews.ac.uk/Books/SE9/Web/Management/P-CMM.html
whats the similarity of P-CMM and Agile ?
Similar concept in Agile philosophy in the areas of:
Individuals and interactions over Processes and tools
Working software over Comprehensive documentation
Customer collaboration over Contract negotiation
The agile philosophy re “Individuals and interactions over Processes and tools” gives emphasis to such things as: building projects around motivated individuals; their working environment and support needs; trust, autonomy, and self-organizing teams to get the job done.
Now try to answer September 2017 Question 5 -  part b

Saturday, March 10, 2018

21. Component Based Software Development

What is a Component ?
A component was seen as an element of a software system that could be accessed, using a remote procedure call mechanism, by other components running on separate computers. Components are higher-level abstractions than objects and are defined by their interfaces. They are usually larger than individual objects and all implementation details are hidden from other components

What is CBSE ?
CBSE is the process of defining, implementing, and integrating or composing loosely coupled, independent components into systems.

Benefit of CBSE
It has become as an important software development approach because software systems are becoming larger and more complex. Customers are demanding more dependable software that is delivered and deployed more quickly. The only way that we can cope with complexity and deliver better software more quickly is to reuse rather than reimplement software components

Design Principles of Components
1. Components are independent so they do not interfere with each other’s operation. Implementation details are hidden. The component’s implementation can be changed without affecting the rest of the system.
2. Components communicate through well-defined interfaces. If these interfaces are maintained, one component can be replaced by another, which provides additional or enhanced functionality.
3. Component infrastructures offer a range of standard services that can be used in application systems. This reduces the amount of new code that has to be developed

Essential Requirements for CBSE
1. Independent components that are completely specified by their interfaces. There should be a clear separation between the component interface and its implementation. This means that one implementation of a component can be replaced by another, without changing other parts of the system.
2. Component standards that facilitate the integration of components. These standards are embodied in a component model. They define, at the very minimum, how component interfaces should be specified and how components communicate. Some models go much further and define interfaces that should be implemented by all conformant components. If components conform to standards, then their operation is independent of their programming language. Components written in different languages can be integrated into the same system.
3. Middleware that provides software support for component integration. To make independent, distributed components work together, you need middleware support that handles component communications. Middleware for component support handles low-level issues efficiently and allows you to focus on application-related problems. In addition, middleware for component support may provide support for resource allocation, transaction management, security, and concurrency.
4. A development process that is geared to component-based software engineering.

Problems with CBSE
CBSE is now a mainstream approach to software engineering—it is a good way to build systems. However, when used as an approach to reuse, problems include component trustworthiness, component certification, requirements compromises, and predicting the properties of components, especially when they are integrated with other components.

Stages of CBSE
1. Component qualification – it is the process of finding suitable components  and evaluating/ conducting an assessment of potential benefits and costs of chosen components  . the most suitable qualified components are then selected for further adaptation
2. Component adaptation – the selected components are modified , improved , to prepare for the next step (ie integration)
3. Component composition (integrating) – it is the process of systematically integrating the selected components
4. Component engineering (design for reuse and implementation of ‘new’ components)
How does it differ from Traditional Software Engineering ?
The process of component-based system development differs from ‘traditional’ development processes.
The main difference is in the separation of the development process of components from the development process of systems.
For the system-level process, the emphasis is on finding the proper components and verifying/evaluating and integrating them. For the component-level process, design for reuse is the main concern.
Component assessment is a new (possibly separate) process for finding and evaluating components.

Try this 
March 2017 A3 
c) Component based systems development (CBSD) methods place a lot of emphasis on component reuse, hence they differ from ‘traditional’ systems development methods.
You are asked:
(i) to briefly explain the main differences between ‘traditional’ and CBSD process/life cycle models;
(4 marks)
(ii) to discuss the main stages of CBSD methods.(7 marks)

20. Software Reuse vs Reusability

REUSE 

use of some previously constructed software
Such as a source code , library , component , a requirement , a design

Benefits of Reuse
  • it saves development effort in a new project
  • reused modules could be well  tested and already executed
  • it saves time allocations , resources , budget allocation , therefore it makes project management convenient
  • standardization
** In order to reuse a component , the component should be reusable
there are many levels of software reuse
  • a line of code
  • a function
  • a module
  • a component
  • a package
  • a sub system
  • an entire program
problems of reuse
  • mismatch of requirements of originally build product and new product
  • issues in components such as hidden errors , incompatibilities may be revealed at later adoptations
  • cost of reuse could be high
Software Reusability

it is the ability that a software or a component is constructed in such a way , that it could be easily adopted , modified  or reused in other projects in future. not only codes , but also , documents , test plans , design diagrams , requirements could be developed in a reusable manner. reusability is a tactic management when building , packaging , distributing , installations , deployment , design or maintenance practiced by a project team.

the following are some the reusability principles
1. Develop components as simple as possible , in the smallest size of code
2. make the software adaptable that enables a component to adjust to different environments with minimal effort
3. modularity – it is the ability that a system has to decompose a system in to a module hierarchy (separabe modules ) each module can execute oin its own. the external data required are defined in it s interface
4. Correctness – it means the accuracy and well tested nature of a system
5. extensibility – it is the ability to grow in future . or its ability to extend its internal structure ,depth of processing , number of functionalities , volume of data etc.
6. Generic – a system component should be written in a more generic way that it could be specified in future when the compnent is reused
7. orthogonal – it refers to separation oif specific features from the rest of the system therefore such features can be combined in to many combinations of modules to generate different results .
in addition to the above features : Consistency , fast, less complex , stable, flexible , volatile ( changeable)

Try this past paper question 
March 2017 - Question 3
a) Explain the difference between software reusability and software reuse. (4 marks)
b) Discuss briefly benefits of and problems associated with software reuse. (10 marks)

Sunday, March 4, 2018

19. How I did BCS exams :)

Hello Everyone ,
I know you all must be getting ready for the battle in few weeks.
Twelve years ago , in 2006 April , I too was just like you and making time tables, revision notes , past paper questions , no pay leaves (talk about it ! )
if you are able to read in sinhala, just spend a few minutes to read how I did my BCS exam in 2006 Smile
I am sure it will bring you energy to work hard and pass the exam.. (feel free to comment )
Smile
Here is the link to my blog post :
image[4]
http://sansaare.blogspot.com/2018/03/bcs.html

Friday, February 23, 2018