Agile software development methodologies are now widely accepted and utilised within the software development industry. There is however a lot of debate on how to perform effective and efficient software architecture within an agile environment.
In an non-Agile environment there is usually a lot of architectural discussions and decisions are made at the beginning of a project, practice which is discouraged in an agile environment.
So the question remains, how do you ensure that your architecture addresses the business requirements whilst keeping up with the agile practices. One of the 12 principles of the agile manifesto says that “the best architectures, requirements and designs emerge from self-organising teams”. I believe that this is the key to incorporating software architecture into the agile development approach, self-organising teams..
An Agile environment involves shared responsibility. The traditional role of the architect, as the one who defines the high-level solution, is diluted. The software architecture is performed by the entire team. This practice does not remove the need for a software architect, it just means that the architect contributes to the discussion with a broader and probably more experienced perspective, nevertheless all members of the team contribute towards the architecture of the software.The whole team participates in discussions and understands the consequences of design decision as they are made and, more importantly, these design decision are constantly evolved and evaluated.
Most of the architectural challenges are tackled by including them in iteration reviews, stand up meetings or any other development meeting. These discussions usually include lots of charts, diagrams, white boarding and other techniques. All of which helps to understand architectural challenges and to cement agreed solutions into everyone’s minds.
The Sashimi approach
There are several approaches to incorporate software architecture into an agile framework whilst keeping with the Agile principles of high customer involvement and feedback, continuous delivery of working software and attention to technical quality, amongst others.
One of these approaches is called Sashimi. In this approach the focus is on velocity. Instead of developing an architecture focused on tiers and layers you build the minimum amount of code that is necessary to connect all of the parts of the software and start building the actual functionality, which provides an early delivery of the software and enables the development team and customers to experience the software very early in the development process.
As the iterations progress the implementation is incrementally completed following the needs of the functional parts of the software, the business requirements. When performance and load tests are performed there is the opportunity to further tune the original design.
To be able to support this incremental approach to software architecture, the key is to implement well defined APIs over a “very” decoupled code, If the implementation details are moved outside the API, coupling with its consumers, then it becomes very difficult to refactor the architecture. Therefore it is key to have a well defined, decoupled API which will enable the Agile’s incremental approach. That is why API development is a key activity early in the lifecycle of the project.
Developers and architects that are not used to Agile development usually say that a detailed architecture design is necessary up-front because it is too hard and costly to change architectural building blocks once they are in place. The Sashimi approach deals with this argument and enables software architecture to be fully implemented into the Agile environment.
Reference: The Architecture Journal #23 pg. 13.
Sunday, 24 October 2010
Software Development Compilation
Welcome to the October 24, 2010 edition of software development compilation.
Software Development Management Articles
Software Architecture in an Agile environment using the Sashimi approach - Agile software development methodologies are now widely accepted and utilised within the software development industry. There is however a lot of debate on how to perform effective and efficient software architecture within an agile environment.
Reader’s Sponsored Articles
Jennifer Saksa presents Software Buying Trends posted at NCH Software Blog.
Bernice Frankel presents Top 20 Mobile Education Apps: iPhone vs. Android posted at Masters Degrees, saying, "Mobile educational apps can give you an edge in and out of the classroom. Here are 20 great mobile education apps, 10 for the iPhone, and 10 for Android phones."
Lindsay Samuels presents The Bookworm?s Guide to the iPad: 100 Tips, Tools, and Tutorials posted at Library Science Degree, saying, "With any new piece of technology, confusion, turmoil, and frustration can quickly set in when spending so much money, along with learning something new. To help, the article has compiled a Bookworm’s Guide to the iPad: 100 tips, tools, and tutorials."
Chris Davis presents Robot Wars: 10 Recent Developments in Unmanned Warfare You Haven?t Heard About posted at Criminal Justice Degrees, saying, "When the war in Afghanistan kicked off, the U.S. military only had a handful of drones or unmanned weapons on the battlefield. Now it’s one of the military’s main concerns as they race to outdo the competition developing innovative robots that do the dirty work."
Carrie Oakley presents 40 iPad Apps That Librarians Love posted at Online Colleges, saying, "Librarians wear many hats at one time. Besides managing their space, they also organize events, reach out to the community and enhance the feel of the library, making it a timeless treasure that is making a major comeback."
Chirel Jack presents Freelance Jobs - Freelancer for hire posted at Hire consultant - Freelance jobs.
That concludes this edition. Submit your blog article to the next edition of software development compilation using our carnival submission form. Past posts and future hosts can be found on our blog carnival index page.
Saturday, 16 October 2010
Software Development Compilation
Welcome to the October 17, 2010 edition of software development compilation.
Software Development Management Articles
Common Challenges of Managing Software Development Articles - There are many challenges in managing software development projects. The following list discusses a few topics that have been highlighted as common challenges of software development. The list is not exhaustive, it does however highlights some of the common challenges I have encountered, and addressed, over past 10 years working in software development.
The use of mashups in the enterprise - A mashup is a technique for building applications that combine data from multiple sources to create an integrated experience. Many mashups available today are hosted as websites on the internet, providing visual representations of publicly available data.
I have been observing a new trend in the software industry where applications are there to serve data and not the other way around. Data is at the centre of the universe and not the application.
Take twitter for example, it is all about the data and not the application. There are so many twitter applications available to serve the data. Business Intelligence proves that when data is utilised effectively it can help organisations to achieve competitive advantage and consequently make more money. Super,markets organise the products on the shelves based on data served to them via business intelligence products such as reports from data warehouses and other. Another example is blogging which is all about what the author is saying, the data. There are many different blogging providers on the internet and many more applications that enable bloggers to create their blog posts and publish them to their website.
Reader’s Articles
Maureen Fitzsimmons presents Top 20 Most Influential Obesity Experts posted at MPH Degree, saying, "If you are looking for ways to improve your ability to write research papers, you are in luck. Technology makes it simple to get help with research papers, as these 20 iPad Apps demonstrate."
Heather Sanders presents 50 Interesting Engineers Worth a Follow on Twitter posted at Blogineering, saying, "If you are interested in learning a little bit more about engineering, you can follow these 50 interesting folks — including some engineering students — on Twitter."
Chris presents Chuck Norris Google Facts posted at Martial Development, saying, "Read these all-original "facts" about Chuck Norris' involvement with the world's most powerful search engine."
J Dumire presents Computer Memory Issues? Excessive Pop Ups? And Slow Operating Speed? posted at LightSpeedPC: No More Computer Lag.
J Dumire presents Don�t Buy a New Computer! You Probably Don�t Need One! posted at LightSpeedPC: No More Computer Lag.
That concludes this edition. Submit your blog article to the next edition of software development compilation using our carnival submission form. Past posts and future hosts can be found on our blog carnival index page.
Technorati tags: software development compilation, blog carnival.
Saturday, 9 October 2010
Software Development Compilation
Welcome to the October 11, 2010 edition of software development compilation.
Software Development Management Articles
Common challenges of managing software development projects - There are many challenges in managing software development projects. The following list discusses a few topics that have been highlighted as common challenges of software development. The list is not exhaustive, it does however highlights some of the common challenges I have encountered, and addressed, over past 10 years working in software development.
The use of mashups in the enterprise - A mashup is a technique for building applications that combine data from multiple sources to create an integrated experience. Many mashups available today are hosted as websites on the internet, providing visual representations of publicly available data.
I have been observing a new trend in the software industry where applications are there to serve data and not the other way around. Data is at the centre of the universe and not the application…
What makes a good software architect - I have recently read an interview with Ray Ozzie, Microsoft’s chief software architect where he spoke about his role as chief software architect and what makes a good software architect…
The effective IT manager – the importance of relationship building - Relationship building is an important skill that any IT manager should possess and develop in order to be an effective manager.
Reader’s Sponsored Articles
Bridget Nicholson presents 100 All-Time Greatest Popular Science Books posted at OEDb: Online Education Database.
Raphael Pereira presents Great resources to learn Haskell | Raphael Pereira posted at Raphael Pereira.
Jennifer Saksa presents Hello World! posted at NCH Software Blog, saying, "One software developer compares programing and trying to make user-friendly software to the "guest experience" in the restaurant industry and really taking the time to think about all of the little details and listen to customer feedback to help improve the entire process."
That concludes this edition. Submit your blog article to the next edition of software development compilation using our carnival submission form. Past posts and future hosts can be found on our blog carnival index page.
Thursday, 7 October 2010
Common challenges of managing software development projects
There are many challenges in managing software development projects. The following list discusses a few topics that have been highlighted as common challenges of software development. The list is not exhaustive, it does however highlights some of the common challenges I have encountered, and addressed, over past 10 years working in software development.
Interpersonal skills – managing the stakeholders
Every IT project is also a business project, interaction with the business is a must. When declaring a project I always insist on having non-IT project owners and stakeholders. Even the most back-office related project needs to be reported to the business. I have recently participated in a project to provide new desktops to members of my organisation. A key part of the project was to involve members of the business to articulate requirements and to evaluate potential options for a desktop replacement.
Interpersonal skill is a very important skill that every IT manager needs to posses in order to be successful. Managing IT projects of any type (software development, security, etc…) will require a lot of interaction with other members of the business. Establishing and nurturing a healthy relationship between IT and other business units should be one of the priorities for any manager within the IT department.
Unfortunately many IT managers fail to address this topic and in doing so they minimise their chances of conducting successful projects.
Business requirements – the uncertainty factor
One of the main challenges in software development is gathering clear business requirements. When a project fails, many IT managers blame the lack of clear business requirements or the lack of communication from the business to notify changing requirements. I personally think that IT managers should take responsibility for their projects, stop blaming and start acting on it.
In my experience, business users may think they are communicating their requirements clearly but once the software is built they realise that they asked for the wrong functionality. This happens way to often. One of the possible strategies to address this issue is to use an agile methodology that builds the system in increments and gets the business users to review every increment built. This way if the requirement is not addressed as the users expect the issue can be dealt with before the system is live. This can save a lot of time and money.
Project management – real project management skills please
I have seen a few development projects being managed by individuals who do not posses the necessary project management skills to manage a project, let alone a software development project. Sometimes good software developers that evolve into management positions fall into the situation where they need to manage the projects, however, more often than not all that they do is create a good looking project plan that once approved is never revisited again.
Regardless of the background of the person managing software development projects, it is necessary that he/she possesses real project management skills and a track record of successful delivery of real life projects.
Resource management – managing IT and non-IT resources
One of the challenges in delivering software development projects is resource management (IT and non-IT resources). Non-IT staff need to be managed from different perspectives depending on their role in the project. Business managers that are not stakeholders in a project only care about high level updates, project stakeholders are interested in detailed updates and they are the ones providing the requirements for the project. .
It is very important that IT personnel develop professional relationships with members of the business in order to support business related communications. This relates to the first point mentioned above where I mention that IT managers need to have well developed interpersonal skills. For more information on relationship building please visit the article entitled The effective IT manager – the importance of relationship building.
In terms of IT resources, the project manager needs to ensure that the right IT resources with the necessary skills and experiences are allocated to the various projects. He needs to make sure that resources allocation is based on the requirements of each project. If your project requires a lot of complex T-SQL, the manager needs to allocate a developer that has enough knowledge and experience in that area in order to maximise the chances of delivering a successful project.
Software architecture – maximising the use of IT assets
When working on software development projects, it is important to maximise the use of previous development investments by reutilising your IT assets. An IT asset may be a web service, a stored procedure or any architectural building block of an application. Development managers need to be
managing their team in way that a valuable library of development assets is built and they need to ensure that those assets are reutilised whenever there is an opportunity to do so.
Te list above is not exhaustive and barely scratches the surface on challenges related to software development. Many of my readers will be able to add many more challenges. I guess that is what makes software development interesting, solving those challenges and enabling organisations to achieve competitive advantage through the effective and efficient use of technology.
Interpersonal skills – managing the stakeholders
Every IT project is also a business project, interaction with the business is a must. When declaring a project I always insist on having non-IT project owners and stakeholders. Even the most back-office related project needs to be reported to the business. I have recently participated in a project to provide new desktops to members of my organisation. A key part of the project was to involve members of the business to articulate requirements and to evaluate potential options for a desktop replacement.
Interpersonal skill is a very important skill that every IT manager needs to posses in order to be successful. Managing IT projects of any type (software development, security, etc…) will require a lot of interaction with other members of the business. Establishing and nurturing a healthy relationship between IT and other business units should be one of the priorities for any manager within the IT department.
Unfortunately many IT managers fail to address this topic and in doing so they minimise their chances of conducting successful projects.
Business requirements – the uncertainty factor
One of the main challenges in software development is gathering clear business requirements. When a project fails, many IT managers blame the lack of clear business requirements or the lack of communication from the business to notify changing requirements. I personally think that IT managers should take responsibility for their projects, stop blaming and start acting on it.
In my experience, business users may think they are communicating their requirements clearly but once the software is built they realise that they asked for the wrong functionality. This happens way to often. One of the possible strategies to address this issue is to use an agile methodology that builds the system in increments and gets the business users to review every increment built. This way if the requirement is not addressed as the users expect the issue can be dealt with before the system is live. This can save a lot of time and money.
Project management – real project management skills please
I have seen a few development projects being managed by individuals who do not posses the necessary project management skills to manage a project, let alone a software development project. Sometimes good software developers that evolve into management positions fall into the situation where they need to manage the projects, however, more often than not all that they do is create a good looking project plan that once approved is never revisited again.
Regardless of the background of the person managing software development projects, it is necessary that he/she possesses real project management skills and a track record of successful delivery of real life projects.
Resource management – managing IT and non-IT resources
One of the challenges in delivering software development projects is resource management (IT and non-IT resources). Non-IT staff need to be managed from different perspectives depending on their role in the project. Business managers that are not stakeholders in a project only care about high level updates, project stakeholders are interested in detailed updates and they are the ones providing the requirements for the project. .
It is very important that IT personnel develop professional relationships with members of the business in order to support business related communications. This relates to the first point mentioned above where I mention that IT managers need to have well developed interpersonal skills. For more information on relationship building please visit the article entitled The effective IT manager – the importance of relationship building.
In terms of IT resources, the project manager needs to ensure that the right IT resources with the necessary skills and experiences are allocated to the various projects. He needs to make sure that resources allocation is based on the requirements of each project. If your project requires a lot of complex T-SQL, the manager needs to allocate a developer that has enough knowledge and experience in that area in order to maximise the chances of delivering a successful project.
Software architecture – maximising the use of IT assets
When working on software development projects, it is important to maximise the use of previous development investments by reutilising your IT assets. An IT asset may be a web service, a stored procedure or any architectural building block of an application. Development managers need to be
managing their team in way that a valuable library of development assets is built and they need to ensure that those assets are reutilised whenever there is an opportunity to do so.
Te list above is not exhaustive and barely scratches the surface on challenges related to software development. Many of my readers will be able to add many more challenges. I guess that is what makes software development interesting, solving those challenges and enabling organisations to achieve competitive advantage through the effective and efficient use of technology.
Agency Compensation - Variables that Impact Pricing
It's tough to make predictions - especially about the future.
- Yogi Berra
How much will it cost to build an x for us? Where x stands for Website, Microsite, Facebook Page, Mobile App (or even a House, a Bridge, an Aircraft Carrier). Tough question, right? The answer is, "It depends". What kind of x do you want?
Unfortunately, this question is asked by clients of their agencies every day. Given the recession hangover, fortunately it is still being asked. I find that a little education helps either avoid this overly, simplistic question or more productively, it helps point to a method for finding an answer. The approach pretty much has to do with helping your client (as well as your team) understand the variables that impact pricing.
While on the topic, in the spirit of precision, I like to define terms. In general, the price of services and/or deliverables is made of two components: fees (pretty much labor) and costs (usually pass-throughs, such as travel, licenses, equipment, etc.).
Below is a list of some of the variables impact the price of a project. As I hope you can see this list will generate some pretty interesting discussions that, if handled, properly will result in a level of professional empathy that should elevate all involved
There's a wide range of things on the agency side that also impact pricing, such as available staff, their skills, their rates, etc. Is it fair to charge a client an Art Director's rate to do a Production Artist's tasks? Same answer, "It depends".
Let us know your thoughts or if you have some other major variables that drive pricing.
- Yogi Berra
How much will it cost to build an x for us? Where x stands for Website, Microsite, Facebook Page, Mobile App (or even a House, a Bridge, an Aircraft Carrier). Tough question, right? The answer is, "It depends". What kind of x do you want?
Unfortunately, this question is asked by clients of their agencies every day. Given the recession hangover, fortunately it is still being asked. I find that a little education helps either avoid this overly, simplistic question or more productively, it helps point to a method for finding an answer. The approach pretty much has to do with helping your client (as well as your team) understand the variables that impact pricing.
While on the topic, in the spirit of precision, I like to define terms. In general, the price of services and/or deliverables is made of two components: fees (pretty much labor) and costs (usually pass-throughs, such as travel, licenses, equipment, etc.).
Below is a list of some of the variables impact the price of a project. As I hope you can see this list will generate some pretty interesting discussions that, if handled, properly will result in a level of professional empathy that should elevate all involved
- objectives’ clarity / validity
- strategy integrity / clarity
- project duration
- time of year - for info on an ugly confluence of factors, see Use It or Lose It
- program complexity
- state / quality of assets, briefing, brand and style guides
- 3rd party involvement (e.g. other agencies, technology vendors, email / sweeps vendors, client-internal parties [legal, IT, etc], client-external partners [other marketers])
- scale & volume (planned scale decreases pricing)
- review / approval process – including: cycle duration, feedback quality / consolidation, and number of stakeholders (e.g. marketing, legal, compliance, branding, etc.)
- specification quality / stability
- production value
- costs (e.g. photos, video, locations, research, technology, travel needs, etc.)
There's a wide range of things on the agency side that also impact pricing, such as available staff, their skills, their rates, etc. Is it fair to charge a client an Art Director's rate to do a Production Artist's tasks? Same answer, "It depends".
Let us know your thoughts or if you have some other major variables that drive pricing.
Monday, 4 October 2010
The use of mashups in the enterprise
A mashup is a technique for building applications that combine data from multiple sources to create an integrated experience. Many mashups available today are hosted as websites on the internet, providing visual representations of publicly available data.
I have been observing a new trend in the software industry where applications are there to serve data and not the other way around. Data is at the centre of the universe and not the application.
Take twitter for example, it is all about the data and not the application. There are so many twitter applications available to serve the data. Business Intelligence proves that when data is utilised effectively it can help organisations to achieve competitive advantage and consequently make more money. Super,markets organise the products on the shelves based on data served to them via business intelligence products such as reports from data warehouses and other. Another example is blogging which is all about what the author is saying, the data. There are many different blogging providers on the internet and many more applications that enable bloggers to create their blog posts and publish them to their website.
History of mashups
Mashups have become popular within the last few years, along with the popularity of web 2.0. Early mashups used data to combine it with maps of photos. However organisations are becoming more interest in mashups for the enterprise.
Organisations are utilising mashups to combine their data from different sources to arrive at new, more creative ways, of utilising their data. Some of the uses may include combining data from multiple sources, apply business intelligence to it and display it to information consumers in a way that can help to utilise the information in a meaningful way.
Architecture of a mashup
There are some common architectural patterns utilised to create mashups. All mashups use REST (Representational State Transfer principles)
Data is the core element of any mashup. The data does not need to be stored in a database that is local to the application, It can be anywhere on the internet, served through web services serialised as XML or JSON. RSS feeds are another source of data for mashups because they are in easy to use XML format.
Web services are also utilised in mashups. They can be used to provide extra services to the data or used to transform the data on the mashup.
Developers should think of the mashup application as a combination of middle-tier and some business logic. The client is usually traditional internet or RIA applications.
The use of mashups in the enterprise
There is really no limit to how mashup can be utilised in the enterprise. Combining internally available data with information from the internet can deliver some interesting services to the enterprise. You may create a website to help customers to find service centres, on the same page you may want tot display local weather and traffic conditions.
Another potential application is the use of mashups to lookup data on the internet that would add value to the information available in the enterprise, You can use information from your CRM application and lookup extra data available from various sources on the internet in order to learn more about your customer or potential new customer.
Mashups offer great potential to enterprises by adding value to information that was previously unrelated and serving that data to internal information consumers to to deliver services to clients.
I have been observing a new trend in the software industry where applications are there to serve data and not the other way around. Data is at the centre of the universe and not the application.
Take twitter for example, it is all about the data and not the application. There are so many twitter applications available to serve the data. Business Intelligence proves that when data is utilised effectively it can help organisations to achieve competitive advantage and consequently make more money. Super,markets organise the products on the shelves based on data served to them via business intelligence products such as reports from data warehouses and other. Another example is blogging which is all about what the author is saying, the data. There are many different blogging providers on the internet and many more applications that enable bloggers to create their blog posts and publish them to their website.
History of mashups
Mashups have become popular within the last few years, along with the popularity of web 2.0. Early mashups used data to combine it with maps of photos. However organisations are becoming more interest in mashups for the enterprise.
Organisations are utilising mashups to combine their data from different sources to arrive at new, more creative ways, of utilising their data. Some of the uses may include combining data from multiple sources, apply business intelligence to it and display it to information consumers in a way that can help to utilise the information in a meaningful way.
Architecture of a mashup
There are some common architectural patterns utilised to create mashups. All mashups use REST (Representational State Transfer principles)
Data is the core element of any mashup. The data does not need to be stored in a database that is local to the application, It can be anywhere on the internet, served through web services serialised as XML or JSON. RSS feeds are another source of data for mashups because they are in easy to use XML format.
Web services are also utilised in mashups. They can be used to provide extra services to the data or used to transform the data on the mashup.
Developers should think of the mashup application as a combination of middle-tier and some business logic. The client is usually traditional internet or RIA applications.
The use of mashups in the enterprise
There is really no limit to how mashup can be utilised in the enterprise. Combining internally available data with information from the internet can deliver some interesting services to the enterprise. You may create a website to help customers to find service centres, on the same page you may want tot display local weather and traffic conditions.
Another potential application is the use of mashups to lookup data on the internet that would add value to the information available in the enterprise, You can use information from your CRM application and lookup extra data available from various sources on the internet in order to learn more about your customer or potential new customer.
Mashups offer great potential to enterprises by adding value to information that was previously unrelated and serving that data to internal information consumers to to deliver services to clients.
del.icio.us Tags: mashup architecture REST enterprise
Technorati Tags: mashup architecture REST enterprise
Friday, 1 October 2010
What makes a good software architect
I have recently read an interview with Ray Ozzie, Microsoft’s chief software architect where he spoke about his role as chief software architect and what makes a good software architect.
Software architecture is a very complex and vast topic. It definition can be vague and the definition of a software architect can also be vague at times. In the past 10 years of experience in the ICT industry I have met many high level CIOs. I was always surprised to hear from some of them that they found that there is no need to have a dedicated software architect, they said that the role can be fulfilled by the CIO himself in combination with senior software engineers.
If the software engineer is competent in software architecture then in practice you have someone performing the role of software architect.
I have seen many definitions of the core competencies of a software architect. Some of them were so extensive that it would be hard to define the role.
Ray Ozzie’s says that a good software architect are the ones that have spent time building and debugging applications. He says that one can learn a lot by reverse-engineering applications. The more systems you develop and debug, the more you develop an understanding of what good and bad practices and design patterns. “It is the library of patterns that defines a good software architect”.
Ray Ozzie’s view makes sense. A good architect should have plenty of experience in order to develop a comprehensive knowledge of the patterns to use build applications.
A good software architect is the one that is always researching and learning about new technologies and how to apply them to solve real-life business problems.
Software architecture is a very complex and vast topic. It definition can be vague and the definition of a software architect can also be vague at times. In the past 10 years of experience in the ICT industry I have met many high level CIOs. I was always surprised to hear from some of them that they found that there is no need to have a dedicated software architect, they said that the role can be fulfilled by the CIO himself in combination with senior software engineers.
If the software engineer is competent in software architecture then in practice you have someone performing the role of software architect.
I have seen many definitions of the core competencies of a software architect. Some of them were so extensive that it would be hard to define the role.
Ray Ozzie’s says that a good software architect are the ones that have spent time building and debugging applications. He says that one can learn a lot by reverse-engineering applications. The more systems you develop and debug, the more you develop an understanding of what good and bad practices and design patterns. “It is the library of patterns that defines a good software architect”.
Ray Ozzie’s view makes sense. A good architect should have plenty of experience in order to develop a comprehensive knowledge of the patterns to use build applications.
A good software architect is the one that is always researching and learning about new technologies and how to apply them to solve real-life business problems.
Technorati Tags: software architecture design patterns software architect
del.icio.us Tags: software architecture design patterns software architect
Subscribe to:
Posts (Atom)